diff --git a/pake.py b/pake.py index 8d1431e..25821c8 100644 --- a/pake.py +++ b/pake.py @@ -1,3 +1,15 @@ -with open('./unit/test_run.py') as ut: +# Run, unit/xunit.py + +print('----------------------------------------------------------------------') + +with open('./unit/xunit.py') as xut: + xcmd = xut.read() + exec(xcmd) + +print('----------------------------------------------------------------------') + +# Run, unit/unit.py + +with open('./unit/unit.py') as ut: cmd = ut.read() exec(cmd) diff --git a/unit/test_run.py b/unit/unit.py similarity index 100% rename from unit/test_run.py rename to unit/unit.py diff --git a/unit/xunit.py b/unit/xunit.py new file mode 100644 index 0000000..fb1efae --- /dev/null +++ b/unit/xunit.py @@ -0,0 +1,103 @@ +class TestResult: + def __init__(self): + self.runCount = 0 + self.errorCount = 0 + + def testStarted(self): + self.runCount = self.runCount + 1 + + def testFailed(self): + self.errorCount = self.errorCount + 1 + + def summary(self): + return "%d run, %d failed" % (self.runCount, self.errorCount) + + +class TestCase: + def __init__(self, name): + self.name = name + + def setUp(self): + pass + + def tearDown(self): + pass + + def run(self, result): + result.testStarted() + self.setUp() + try: + method = getattr(self, self.name) + method() + except Exception: + result.testFailed() + self.tearDown() + + +class TestSuite: + def __init__(self): + self.tests = [] + + def add(self, test): + self.tests.append(test) + + def run(self, result): + for test in self.tests: + test.run(result) + + +class WasRun(TestCase): + def setUp(self): + self.log = "setUp " + + def testMethod(self): + self.log = self.log + "testMethod " + + def testBrokenMethod(self): + raise Exception + + def tearDown(self): + self.log = self.log + "tearDown " + + +class TestCaseTest(TestCase): + def setUp(self): + self.result = TestResult() + + def testTempleteMethod(self): + test = WasRun("testMethod") + test.run(self.result) + assert ("setUp testMethod tearDown " == test.log) + + def testResult(self): + test = WasRun("testMethod") + test.run(self.result) + assert ("1 run, 0 failed" == self.result.summary()) + + def testFailedResult(self): + test = WasRun("testBrokenMethod") + test.run(self.result) + assert ("1 run, 1 failed" == self.result.summary()) + + def testFailedResultFormatting(self): + self.result.testStarted() + self.result.testFailed() + assert ("1 run, 1 failed" == self.result.summary()) + + def testSuite(self): + suite = TestSuite() + suite.add(WasRun("testMethod")) + suite.add(WasRun("testBrokenMethod")) + suite.run(self.result) + assert ("2 run, 1 failed" == self.result.summary()) + + +suite = TestSuite() +suite.add(TestCaseTest("testTempleteMethod")) +suite.add(TestCaseTest("testResult")) +suite.add(TestCaseTest("testFailedResult")) +suite.add(TestCaseTest("testFailedResultFormatting")) +suite.add(TestCaseTest("testSuite")) +result = TestResult() +suite.run(result) +print(result.summary())