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_init_file()
if os.path.exists(file):
sys.exit('File ' + file + ' already exists.')
else:
try:
with open(file, 'w') as handle:
handle.write('')
except OSError:
sys.exit('Sorry, could not write ' + file + '.')
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 = '''
# https://github.com/elmar-hinz/Python.Challenges
from challenges import Challenge
class {}Challenge(Challenge):
sample = 'XXX'
expect = 'XXX'
def build(self):
pass
def calc(self):
self.result = 'XXX'
'''
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)
self.assertIn('XXX', self.challenge.sample)
self.assertIn('XXX', self.challenge.expect)
def test_build(self):
self.skipTest('Not implemented.')
def test_calc(self):
self.skipTest('Not implemented.')
def test_format(self):
self.skipTest('Not implemented.')
def test_full_integration(self):
self.challenge.main()
self.assertEqual(self.challenge.expectation(), self.challenge.output)
'''
n = self.conf.get_challenge_name()
return text.strip().format(n, n, n, n, n)