def test__run_core_called(self):
     case = self.make_case()
     log = []
     run = RunTest(case, lambda x: x)
     run._run_core = lambda: log.append('foo')
     run.run()
     self.assertEqual(['foo'], log)
Esempio n. 2
0
 def test__run_user_does_not_catch_keyboard(self):
     case = self.make_case()
     def raises():
         raise KeyboardInterrupt("yo")
     run = RunTest(case, None)
     run.result = ExtendedTestResult()
     self.assertRaises(KeyboardInterrupt, run._run_user, raises)
     self.assertEqual([], run.result._events)
 def test__run_user_returns_result(self):
     case = self.make_case()
     def returns():
         return 1
     run = RunTest(case)
     run.result = ExtendedTestResult()
     self.assertEqual(1, run._run_user(returns))
     self.assertEqual([], run.result._events)
 def test__run_user_does_not_catch_keyboard(self):
     case = self.make_case()
     def raises():
         raise KeyboardInterrupt("yo")
     run = RunTest(case, None)
     run.result = ExtendedTestResult()
     self.assertThat(lambda: run._run_user(raises),
         Raises(MatchesException(KeyboardInterrupt)))
     self.assertEqual([], run.result._events)
 def test__run_prepared_result_calls_start_and_stop_test(self):
     result = ExtendedTestResult()
     case = self.make_case()
     run = RunTest(case, lambda x: x)
     run.run(result)
     self.assertEqual([
         ('startTest', case),
         ('addSuccess', case),
         ('stopTest', case),
         ], result._events)
Esempio n. 6
0
 def test__run_prepared_result_calls_stop_test_always(self):
     result = ExtendedTestResult()
     case = self.make_case()
     def inner():
         raise Exception("foo")
     run = RunTest(case, lambda x: x)
     run._run_core = inner
     self.assertRaises(Exception, run.run, result)
     self.assertEqual([
         ('startTest', case),
         ('stopTest', case),
         ], result._events)
 def test__run_user_can_catch_Exception(self):
     case = self.make_case()
     e = Exception('Yo')
     def raises():
         raise e
     log = []
     run = RunTest(case, [(Exception, None)])
     run.result = ExtendedTestResult()
     status = run._run_user(raises)
     self.assertEqual(run.exception_caught, status)
     self.assertEqual([], run.result._events)
     self.assertEqual([], log)
 def test_run_with_result(self):
     # test.run passes result down to _run_test_method.
     log = []
     class Case(TestCase):
         def _run_test_method(self, result):
             log.append(result)
     case = Case('_run_test_method')
     run = RunTest(case, lambda x: log.append(x))
     result = TestResult()
     run.run(result)
     self.assertEqual(1, len(log))
     self.assertEqual(result, log[0].decorated)
Esempio n. 9
0
 def test__run_prepared_result_does_not_mask_keyboard(self):
     class Case(TestCase):
         def test(self):
             raise KeyboardInterrupt("go")
     case = Case('test')
     run = RunTest(case)
     run.result = ExtendedTestResult()
     self.assertThat(lambda: run._run_prepared_result(run.result),
         Raises(MatchesException(KeyboardInterrupt)))
     self.assertEqual(
         [('startTest', case), ('stopTest', case)], run.result._events)
     # tearDown is still run though!
     self.assertEqual(True, getattr(case, '_TestCase__teardown_called'))
Esempio n. 10
0
 def test__run_user_uncaught_Exception_raised(self):
     case = self.make_case()
     e = KeyError('Yo')
     def raises():
         raise e
     log = []
     def log_exc(self, result, err):
         log.append((result, err))
     run = RunTest(case, [(ValueError, log_exc)])
     run.result = ExtendedTestResult()
     self.assertRaises(KeyError, run._run_user, raises)
     self.assertEqual([], run.result._events)
     self.assertEqual([], log)
Esempio n. 11
0
 def test__run_prepared_result_uncaught_Exception_raised(self):
     e = KeyError('Yo')
     class Case(TestCase):
         def test(self):
             raise e
     case = Case('test')
     log = []
     def log_exc(self, result, err):
         log.append((result, err))
     run = RunTest(case, [(ValueError, log_exc)])
     run.result = ExtendedTestResult()
     self.assertThat(lambda: run._run_prepared_result(run.result),
         Raises(MatchesException(KeyError)))
     self.assertEqual(
         [('startTest', case), ('stopTest', case)], run.result._events)
     self.assertEqual([], log)
Esempio n. 12
0
 def test__run_prepared_result_does_not_mask_keyboard(self):
     tearDownRuns = []
     class Case(TestCase):
         def test(self):
             raise KeyboardInterrupt("go")
         def _run_teardown(self, result):
             tearDownRuns.append(self)
             return super(Case, self)._run_teardown(result)
     case = Case('test')
     run = RunTest(case)
     run.result = ExtendedTestResult()
     self.assertThat(lambda: run._run_prepared_result(run.result),
         Raises(MatchesException(KeyboardInterrupt)))
     self.assertEqual(
         [('startTest', case), ('stopTest', case)], run.result._events)
     # tearDown is still run though!
     self.assertThat(tearDownRuns, HasLength(1))
Esempio n. 13
0
 def test__run_user_uncaught_Exception_from_exception_handler_raised(self):
     case = self.make_case()
     def broken_handler(exc_info):
         # ValueError because thats what we know how to catch - and must
         # not.
         raise ValueError('boo')
     case.addOnException(broken_handler)
     e = KeyError('Yo')
     def raises():
         raise e
     log = []
     def log_exc(self, result, err):
         log.append((result, err))
     run = RunTest(case, [(ValueError, log_exc)])
     run.result = ExtendedTestResult()
     self.assertRaises(ValueError, run._run_user, raises)
     self.assertEqual([], run.result._events)
     self.assertEqual([], log)
 def test__run_user_calls_onException(self):
     case = self.make_case()
     log = []
     def handler(exc_info):
         log.append("got it")
         self.assertEqual(3, len(exc_info))
         self.assertIsInstance(exc_info[1], KeyError)
         self.assertIs(KeyError, exc_info[0])
     case.addOnException(handler)
     e = KeyError('Yo')
     def raises():
         raise e
     run = RunTest(case, [(KeyError, None)])
     run.result = ExtendedTestResult()
     status = run._run_user(raises)
     self.assertEqual(run.exception_caught, status)
     self.assertEqual([], run.result._events)
     self.assertEqual(["got it"], log)
Esempio n. 15
0
 def test__run_prepared_result_uncaught_Exception_triggers_error(self):
     # https://bugs.launchpad.net/testtools/+bug/1364188
     # When something isn't handled, the test that was
     # executing has errored, one way or another.
     e = SystemExit(0)
     class Case(TestCase):
         def test(self):
             raise e
     case = Case('test')
     log = []
     def log_exc(self, result, err):
         log.append((result, err))
     run = RunTest(case, [], log_exc)
     run.result = ExtendedTestResult()
     self.assertThat(lambda: run._run_prepared_result(run.result),
         Raises(MatchesException(SystemExit)))
     self.assertEqual(
         [('startTest', case), ('stopTest', case)], run.result._events)
     self.assertEqual([(run.result, e)], log)
Esempio n. 16
0
 def test_run_no_result_manages_new_result(self):
     log = []
     run = RunTest(self.make_case(), lambda x: log.append(x) or x)
     result = run.run()
     self.assertIsInstance(result.decorated, TestResult)
Esempio n. 17
0
 def test__init____handlers(self):
     handlers = [("quux", "baz")]
     run = RunTest("bar", handlers)
     self.assertEqual(handlers, run.handlers)
Esempio n. 18
0
 def test___init___short(self):
     run = RunTest("bar")
     self.assertEqual("bar", run.case)
     self.assertEqual([], run.handlers)
Esempio n. 19
0
 def test__init____handlers_last_resort(self):
     handlers = [("quux", "baz")]
     last_resort = "foo"
     run = RunTest("bar", handlers, last_resort)
     self.assertEqual(last_resort, run.last_resort)
 def test_run_no_result_manages_new_result(self):
     log = []
     run = RunTest(self.make_case(), lambda x: log.append(x) or x)
     result = run.run()
     self.assertIsInstance(result.decorated, TestResult)