Source code for challenges.scaffold
import os
import sys
[docs]class Scaffold:
def __init__(self, conf):
self.conf = conf
[docs] def scaffold(self):
directory = self.conf.get_challenge_dir()
if os.path.exists(directory):
sys.exit('Directory ' + directory + ' already exists.')
else:
try:
os.makedirs(directory)
except OSError:
sys.exit('Sorry, could not create ' + directory + '.')
file = self.conf.get_challenge_file()
if os.path.exists(file):
sys.exit('File ' + file + ' already exists.')
else:
try:
with open(file, 'w') as handle:
handle.write(self.get_class_content())
except OSError:
sys.exit('Sorry, could not write ' + file + '.')
file = self.conf.get_unittest_file()
if os.path.exists(file):
sys.exit('File ' + file + ' already exists.')
else:
try:
with open(file, 'w') as handle:
handle.write(self.get_unittest_content())
except OSError:
sys.exit('Sorry, could not write ' + file + '.')
[docs] def get_class_content(self):
text = '''
from challenges import Challenge
class {}Challenge(Challenge):
sample = '33'
def build(self):
self.model.number = self.line_to_integers(0)[0]
def calc(self):
self.result = self.model.number
'''
return text.strip().format(self.conf.get_challenge_name())
[docs] def get_unittest_content(self):
text = '''
import unittest
from {}.challenge import {}Challenge
class {}Test(unittest.TestCase):
def setUp(self):
self.challenge = {}Challenge()
def test__init__(self):
self.assertIsInstance(self.challenge, {}Challenge)
def test_build(self):
self.challenge.lines = ['11']
self.challenge.build()
self.assertEqual(11, self.challenge.model.number)
def test_calc(self):
self.challenge.model.number = 22
self.challenge.calc()
self.assertEqual(22, self.challenge.result)
def test_format(self):
self.challenge.result = 33
self.challenge.format()
self.assertEqual('33', self.challenge.output)
'''
n = self.conf.get_challenge_name()
return text.strip().format(n, n, n, n, n)