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_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_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.assertThat(lambda: run._run_user(raises),
         Raises(MatchesException(KeyError)))
     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)
 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.assertThat(lambda: run._run_user(raises),
         Raises(MatchesException(ValueError)))
     self.assertEqual([], run.result._events)
     self.assertEqual([], log)