diff options
Diffstat (limited to 'Lib/unittest/test/test_discovery.py')
-rw-r--r-- | Lib/unittest/test/test_discovery.py | 69 |
1 files changed, 51 insertions, 18 deletions
diff --git a/Lib/unittest/test/test_discovery.py b/Lib/unittest/test/test_discovery.py index 1155de116f9..e688f8e35ac 100644 --- a/Lib/unittest/test/test_discovery.py +++ b/Lib/unittest/test/test_discovery.py @@ -5,12 +5,23 @@ import sys import unittest +class TestableTestProgram(unittest.TestProgram): + module = '__main__' + exit = True + defaultTest = failfast = catchbreak = buffer = None + verbosity = 1 + progName = '' + testRunner = testLoader = None + + def __init__(self): + pass + + class TestDiscovery(unittest.TestCase): # Heavily mocked tests so I can avoid hitting the filesystem def test_get_name_from_path(self): loader = unittest.TestLoader() - loader._top_level_dir = '/foo' name = loader._get_name_from_path('/foo/bar/baz.py') self.assertEqual(name, 'bar.baz') @@ -105,9 +116,6 @@ class TestDiscovery(unittest.TestCase): def __eq__(self, other): return self.path == other.path - # Silence py3k warning - __hash__ = None - loader._get_module_from_name = lambda name: Module(name) def loadTestsFromModule(module, use_load_tests): if use_load_tests: @@ -199,8 +207,7 @@ class TestDiscovery(unittest.TestCase): test.test_this_does_not_exist() def test_command_line_handling_parseArgs(self): - # Haha - take that uninstantiable class - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() args = [] def do_discovery(argv): @@ -212,13 +219,39 @@ class TestDiscovery(unittest.TestCase): program.parseArgs(['something', 'discover', 'foo', 'bar']) self.assertEqual(args, ['foo', 'bar']) + def test_command_line_handling_discover_by_default(self): + program = TestableTestProgram() + program.module = None + + self.called = False + def do_discovery(argv): + self.called = True + self.assertEqual(argv, []) + program._do_discovery = do_discovery + program.parseArgs(['something']) + self.assertTrue(self.called) + + def test_command_line_handling_discover_by_default_with_options(self): + program = TestableTestProgram() + program.module = None + + args = ['something', '-v', '-b', '-v', '-c', '-f'] + self.called = False + def do_discovery(argv): + self.called = True + self.assertEqual(argv, args[1:]) + program._do_discovery = do_discovery + program.parseArgs(args) + self.assertTrue(self.called) + + def test_command_line_handling_do_discovery_too_many_arguments(self): class Stop(Exception): pass def usageExit(): raise Stop - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program.usageExit = usageExit with self.assertRaises(Stop): @@ -227,7 +260,7 @@ class TestDiscovery(unittest.TestCase): def test_command_line_handling_do_discovery_calls_loader(self): - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() class Loader(object): args = [] @@ -241,49 +274,49 @@ class TestDiscovery(unittest.TestCase): self.assertEqual(Loader.args, [('.', 'test*.py', None)]) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery(['--verbose'], Loader=Loader) self.assertEqual(program.test, 'tests') self.assertEqual(Loader.args, [('.', 'test*.py', None)]) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery([], Loader=Loader) self.assertEqual(program.test, 'tests') self.assertEqual(Loader.args, [('.', 'test*.py', None)]) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery(['fish'], Loader=Loader) self.assertEqual(program.test, 'tests') self.assertEqual(Loader.args, [('fish', 'test*.py', None)]) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery(['fish', 'eggs'], Loader=Loader) self.assertEqual(program.test, 'tests') self.assertEqual(Loader.args, [('fish', 'eggs', None)]) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery(['fish', 'eggs', 'ham'], Loader=Loader) self.assertEqual(program.test, 'tests') self.assertEqual(Loader.args, [('fish', 'eggs', 'ham')]) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery(['-s', 'fish'], Loader=Loader) self.assertEqual(program.test, 'tests') self.assertEqual(Loader.args, [('fish', 'test*.py', None)]) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery(['-t', 'fish'], Loader=Loader) self.assertEqual(program.test, 'tests') self.assertEqual(Loader.args, [('.', 'test*.py', 'fish')]) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery(['-p', 'fish'], Loader=Loader) self.assertEqual(program.test, 'tests') self.assertEqual(Loader.args, [('.', 'fish', None)]) @@ -291,7 +324,7 @@ class TestDiscovery(unittest.TestCase): self.assertFalse(program.catchbreak) Loader.args = [] - program = object.__new__(unittest.TestProgram) + program = TestableTestProgram() program._do_discovery(['-p', 'eggs', '-s', 'fish', '-v', '-f', '-c'], Loader=Loader) self.assertEqual(program.test, 'tests') @@ -334,7 +367,7 @@ class TestDiscovery(unittest.TestCase): expected_dir = os.path.abspath('foo') msg = re.escape(r"'foo' module incorrectly imported from %r. Expected %r. " "Is this module globally installed?" % (mod_dir, expected_dir)) - self.assertRaisesRegexp( + self.assertRaisesRegex( ImportError, '^%s$' % msg, loader.discover, start_dir='foo', pattern='foo.py' ) |