Source code for challenges.runner

import sys
import time
import unittest

from challenges.scaffold import Scaffold


[docs]class Runner: def __init__(self, conf): self.start = time.time() self.conf = conf conf.parse_arguments()
[docs] def main(self): if self.conf.args.list: self.list_challenges() elif self.conf.args.unittest: if self.conf.args.challenge: self.run_unittest() else: self.conf.print_help() elif self.conf.args.scaffold: if self.conf.args.challenge: Scaffold(self.conf).scaffold() else: self.conf.print_help() elif self.conf.args.challenge: self.run_challenge() if self.conf.args.verbose: print("--- Time: %s ---" % str(time.time() - self.start)) else: self.conf.print_help()
[docs] def run_challenge(self): challenge = self.conf.get_challenge() self.set_sample(challenge) challenge.main() self.write(challenge)
[docs] def set_sample(self, challenge): if self.conf.args.file: challenge.sample = self.read_file() elif self.conf.args.klass: challenge.sample = challenge.sample else: stdin = sys.stdin.read().strip() if stdin: challenge.sample = stdin else: self.conf.print_help()
[docs] def read_file(self): with open(self.conf.get_input_file(), 'r') as pointer: sample = pointer.read() return sample
[docs] def write(self, challenge): result = challenge.output print(result) with open(self.conf.get_latest_file(), 'w') as pointer: pointer.write(result) with open(self.conf.get_latest_at_root(), 'w') as pointer: pointer.write(result) if self.conf.args.write: with open(self.conf.get_sample_file(), 'w') as pointer: pointer.write(challenge.sample) with open(self.conf.get_result_file(), 'w') as pointer: pointer.write(result)
[docs] def list_challenges(self): print(' * ' + '\n * '.join(self.conf.get_challenges()))
[docs] def run_unittest(self): c = self.conf.get_unittest() case = unittest.defaultTestLoader.loadTestsFromTestCase(c) unittest.TextTestRunner().run(case)