def testUnexpectedSuccess(self):
pass
- class FooBarLoader(unittest.TestLoader):
- """Test loader that returns a suite containing FooBar."""
+ class Empty(unittest.TestCase):
+ pass
+
+ class TestLoader(unittest.TestLoader):
+ """Test loader that returns a suite containing the supplied testcase."""
+
+ def __init__(self, testcase):
+ self.testcase = testcase
+
def loadTestsFromModule(self, module):
return self.suiteClass(
- [self.loadTestsFromTestCase(Test_TestProgram.FooBar)])
+ [self.loadTestsFromTestCase(self.testcase)])
def loadTestsFromNames(self, names, module):
return self.suiteClass(
- [self.loadTestsFromTestCase(Test_TestProgram.FooBar)])
+ [self.loadTestsFromTestCase(self.testcase)])
def test_defaultTest_with_string(self):
class FakeRunner(object):
runner = FakeRunner()
program = unittest.TestProgram(testRunner=runner, exit=False,
defaultTest='test.test_unittest',
- testLoader=self.FooBarLoader())
+ testLoader=self.TestLoader(self.FooBar))
sys.argv = old_argv
self.assertEqual(('test.test_unittest',), program.testNames)
program = unittest.TestProgram(
testRunner=runner, exit=False,
defaultTest=['test.test_unittest', 'test.test_unittest2'],
- testLoader=self.FooBarLoader())
+ testLoader=self.TestLoader(self.FooBar))
sys.argv = old_argv
self.assertEqual(['test.test_unittest', 'test.test_unittest2'],
program.testNames)
program = unittest.main(exit=False,
argv=["foobar"],
testRunner=unittest.TextTestRunner(stream=stream),
- testLoader=self.FooBarLoader())
+ testLoader=self.TestLoader(self.FooBar))
self.assertTrue(hasattr(program, 'result'))
out = stream.getvalue()
self.assertIn('\nFAIL: testFail ', out)
def test_Exit(self):
stream = BufferedWriter()
- self.assertRaises(
- SystemExit,
- unittest.main,
- argv=["foobar"],
- testRunner=unittest.TextTestRunner(stream=stream),
- exit=True,
- testLoader=self.FooBarLoader())
+ with self.assertRaises(SystemExit) as cm:
+ unittest.main(
+ argv=["foobar"],
+ testRunner=unittest.TextTestRunner(stream=stream),
+ exit=True,
+ testLoader=self.TestLoader(self.FooBar))
+ self.assertEqual(cm.exception.code, 1)
out = stream.getvalue()
self.assertIn('\nFAIL: testFail ', out)
self.assertIn('\nERROR: testError ', out)
def test_ExitAsDefault(self):
stream = BufferedWriter()
- self.assertRaises(
- SystemExit,
- unittest.main,
- argv=["foobar"],
- testRunner=unittest.TextTestRunner(stream=stream),
- testLoader=self.FooBarLoader())
+ with self.assertRaises(SystemExit):
+ unittest.main(
+ argv=["foobar"],
+ testRunner=unittest.TextTestRunner(stream=stream),
+ testLoader=self.TestLoader(self.FooBar))
out = stream.getvalue()
self.assertIn('\nFAIL: testFail ', out)
self.assertIn('\nERROR: testError ', out)
'expected failures=1, unexpected successes=1)\n')
self.assertTrue(out.endswith(expected))
+ def test_ExitEmptySuite(self):
+ stream = BufferedWriter()
+ with self.assertRaises(SystemExit) as cm:
+ unittest.main(
+ argv=["empty"],
+ testRunner=unittest.TextTestRunner(stream=stream),
+ testLoader=self.TestLoader(self.Empty))
+ self.assertEqual(cm.exception.code, 5)
+ out = stream.getvalue()
+ self.assertIn('\nNO TESTS RAN\n', out)
+
class InitialisableProgram(unittest.TestProgram):
exit = False