def test_scripts_below_regular(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py file: t/foo.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) dir: t/scripts file: t/scripts/__init__.py from sst import loader discover = loader.discoverTestScripts file: t/scripts/script.py raise AssertionError('Loading only, executing fails') ''') test_loader = loader.TestLoader() suite = test_loader.discoverTests('t') self.assertEqual(2, suite.countTestCases()) # Check which kind of tests have been discovered or we may miss regular # test cases seen as scripts. self.assertEqual(['t.foo.Test.test_me', 't.scripts.script'], [t.id() for t in testtools.iterate_tests(suite)])
def test_pass(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py from sst import loaders discover = loaders.discoverRegularTests file: t/test_conc1.py import unittest class Test1(unittest.TestCase): def test_pass_1(self): self.assertTrue(True) file: t/test_conc2.py import unittest class Test2(unittest.TestCase): def test_pass_2(self): self.assertTrue(True) ''') out = StringIO() runtests.runtests( ['^t'], 'no results directory used', out, concurrency_num=2, browser_factory=browsers.FirefoxFactory(), ) output = out.getvalue() self.assertIn('Ran 2 tests', output) self.assertIn('OK', output) self.assertNotIn('FAIL', output)
def test_regular_below_scripts(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py dir: t/regular file: t/regular/__init__.py from sst import loader import unittest discover = loader.discoverRegularTests class Test(unittest.TestCase): def test_in_init(self): self.assertTrue(True) file: t/regular/foo.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) file: t/script.py raise AssertionError('Loading only, executing fails') ''') test_loader = loader.TestLoader() suite = test_loader.discoverTests( 't', file_loader_class=loader.ScriptLoader, dir_loader_class=loader.ScriptDirLoader) # Check which kind of tests have been discovered or we may miss regular # test cases seen as scripts. self.assertEqual([ 't.regular.Test.test_in_init', 't.regular.foo.Test.test_me', 't.script' ], [t.id() for t in testtools.iterate_tests(suite)])
def test_simple_symlink_creation(self): tests.write_tree_from_desc('''file: foo tagada link: foo bar ''') self.assertEqual('tagada\n', file('foo').read()) self.assertEqual('tagada\n', file('bar').read())
def test_simple_script(self): # A simple do nothing script with no imports tests.write_tree_from_desc('''file: foo.py pass ''') suite = self.discover('.') self.assertEqual(1, suite.countTestCases())
def test_ignore_privates(self): tests.write_tree_from_desc('''dir: t file: t/_private.py ''') script_loader = loader.ScriptLoader(self.get_test_loader()) suite = script_loader.discover('t', '_private.py') self.assertIs(None, suite)
def setUp(self): super(SSTRunExitCodeTestCase, self).setUp() tests.write_tree_from_desc('''dir: t file: t/__init__.py from sst import loaders discover = loaders.discoverRegularTests file: t/test_all_pass.py import unittest class TestAllPass(unittest.TestCase): def test_all_pass(self): self.assertTrue(True) file: t/test_one_fail.py import unittest class TestOneFail(unittest.TestCase): def test_one_fail(self): self.assertTrue(False) file: t/test_multi_fail.py import unittest class TestMultiFail(unittest.TestCase): def test_fail_1(self): self.assertTrue(False) def test_fail_2(self): self.assertTrue(False) ''')
def test_load_tests(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py import unittest def load_tests(test_loader, tests, ignore): # A simple way to reveal the side effect is to add more tests class TestLoadTest(unittest.TestCase): def test_in_load_test(self): self.assertTrue(True) tests.addTests(test_loader.loadTestsFromTestCase(TestLoadTest)) return tests class TestInit(unittest.TestCase): def test_in_init(self): self.assertTrue(True) file: t/test_not_discovered.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) ''') test_loader = self.make_test_loader() suite = test_loader.discoverTestsFromTree('t') self.assertEqual(2, suite.countTestCases()) self.assertEqual( ['t.TestInit.test_in_init', 't.TestLoadTest.test_in_load_test'], [t.id() for t in testtools.iterate_tests(suite)])
def setUp(self): super(SSTRunExitCodeTestCase, self).setUp() tests.write_tree_from_desc('''dir: t file: t/__init__.py from sst import loader discover = loader.discoverRegularTests file: t/test_all_pass.py import unittest class TestAllPass(unittest.TestCase): def test_all_pass(self): self.assertTrue(True) file: t/test_one_fail.py import unittest class TestOneFail(unittest.TestCase): def test_one_fail(self): self.assertTrue(False) file: t/test_multi_fail.py import unittest class TestMultiFail(unittest.TestCase): def test_fail_1(self): self.assertTrue(False) def test_fail_2(self): self.assertTrue(False) ''')
def test_load_tests(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py import unittest def load_tests(test_loader, tests, ignore): # A simple way to reveal the side effect is to add more tests class TestLoadTest(unittest.TestCase): def test_in_load_test(self): self.assertTrue(True) tests.addTests(test_loader.loadTestsFromTestCase(TestLoadTest)) return tests class TestInit(unittest.TestCase): def test_in_init(self): self.assertTrue(True) file: t/test_not_discovered.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) ''') test_loader = self.make_test_loader() suite = test_loader.discoverTestsFromTree('t') self.assertEqual(2, suite.countTestCases()) self.assertEqual(['t.TestInit.test_in_init', 't.TestLoadTest.test_in_load_test'], [t.id() for t in testtools.iterate_tests(suite)])
def test_fail(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py from sst import loaders discover = loaders.discoverRegularTests file: t/test_fail1.py import unittest class TestFail1(unittest.TestCase): def test_fail_1(self): self.assertTrue(False) file: t/test_fail2.py import unittest class TestFail2(unittest.TestCase): def test_fail_2(self): self.assertTrue(False) ''') out = StringIO() runtests.runtests( ['^t'], 'no results directory used', out, concurrency_num=2, browser_factory=browsers.FirefoxFactory(), ) output = out.getvalue() self.assertIn('Ran 2 tests', output) self.assertEqual(output.count('Traceback (most recent call last):'), 2) self.assertIn('FAILED (failures=2)', output)
def test_broken_symlink_is_ignored(self): tests.write_tree_from_desc('''dir: t link: t/test_bar.py t/test_qux.py ''') test_loader = self.make_test_loader() suite = test_loader.discoverTestsFromTree('.') self.assertEqual(0, suite.countTestCases())
def test_regular_below_scripts(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py dir: t/regular file: t/regular/__init__.py from sst import loaders discover = loaders.discoverRegularTests file: t/regular/test_foo.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) file: t/script.py raise AssertionError('Loading only, executing fails') ''') suite = self.discover('t') # Check which kind of tests have been discovered or we may miss regular # test cases seen as scripts. self.assertEqual(['t.regular.test_foo.Test.test_me', 't.script'], [t.id() for t in testtools.iterate_tests(suite)])
def test_simple_script_in_a_dir(self): tests.write_tree_from_desc('''dir: t # no t/__init__.py required, we don't need to import the scripts file: t/script.py raise AssertionError('Loading only, executing fails') ''') suite = self.discover('t') self.assertEqual(1, suite.countTestCases())
def test_discover_path_for_broken_symlink(self): tests.write_tree_from_desc('''dir: t file: t/foo tagada link: bar t/qux ''') dir_loader = loader.DirLoader(self.get_test_loader()) suite = dir_loader.discover_path('t', 'qux') self.assertIs(None, suite)
def test_broken_file_in_a_dir(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py file: t/foo.py I'm not even python code ''') test_loader = loader.TestLoader() e = self.assertRaises(SyntaxError, test_loader.discoverTests, 't') self.assertEqual('EOL while scanning string literal', e.args[0])
def test_discover_path_for_not_matching_symlink(self): tests.write_tree_from_desc('''dir: t file: t/foo tagada link: t/foo t/bar.py ''') dir_loader = loader.DirLoader(self.get_test_loader()) suite = dir_loader.discover_path('t', 'bar.py') self.assertIs(None, suite)
def test_discover_package_with_invalid_file(self): tests.write_tree_from_desc('''dir: dir file: dir/__init__.py file: dir/foo.py I'm not even python code ''') pkg_loader = loader.PackageLoader(self.get_test_loader()) e = self.assertRaises(SyntaxError, pkg_loader.discover, '.', 'dir') self.assertEqual('EOL while scanning string literal', e.args[0])
def test_symlink_is_ignored(self): tests.write_tree_from_desc('''dir: t file: t/foo tagada link: t/foo t/test_bar.py ''') test_loader = self.make_test_loader() suite = test_loader.discoverTestsFromTree('.') # Despite a matching name, symlink is ignored self.assertEqual(0, suite.countTestCases())
def test_simple_script_with_csv(self): tests.write_tree_from_desc('''file: foo.py pass file: foo.csv 'foo'^'bar' 1^baz 2^qux ''') suite = self.discover('.') self.assertEqual(2, suite.countTestCases())
def _create_foo_in_tests(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py file: t/foo.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) ''')
def test_simple_script(self): tests.write_tree_from_desc('''dir: t # no t/__init__.py required, we don't need to import the scripts file: t/foo.py from sst.actions import * raise AssertionError('Loading only, executing fails') ''') script_loader = loader.ScriptLoader(self.get_test_loader()) suite = script_loader.discover('t', 'foo.py') self.assertEqual(1, suite.countTestCases())
def test_invalid_file_in_a_dir(self): tests.write_tree_from_desc('''dir: t file: t/test_foo.py I'm not even python code ''') # Since 'foo' can't be imported, discoverTestsFromTree should not be # invoked, ensure we still get some meaningful error message. test_loader = self.make_test_loader() e = self.assertRaises(ImportError, test_loader.discoverTestsFromTree, 't') self.assertEqual('No module named t.test_foo', e.args[0])
def test_discover_path_for_file_without_package(self): tests.write_tree_from_desc('''dir: t file: t/foo.py I'm not even python code ''') # Since 'foo' can't be imported, discover_path should not be invoked, # ensure we still get some meaningful error message. dir_loader = loader.DirLoader(self.get_test_loader()) e = self.assertRaises(ImportError, dir_loader.discover_path, 't', 'foo.py') self.assertEqual('No module named t.foo', e.message)
def test_orphan_line_is_ignored(self): self.assertEqual([], os.listdir('.')) tests.write_tree_from_desc(''' dir: foo orphan line file: foo/bar.py baz ''') self.assertEqual(['foo'], os.listdir('.')) self.assertEqual(['bar.py'], os.listdir('foo')) self.assertEqual('baz\n', file('foo/bar.py').read())
def test_shared_in_dir(self): tests.write_tree_from_desc('''dir: t # no t/__init__.py required, we don't need to import the scripts dir: t/subdir file: t/subdir/foo.py raise AssertionError('Loading only, executing fails') dir: t/shared file: t/shared/amodule.py Don't look at me ! ''') test_names = self.run_tests('.', 't/shared') self.assertEqual(['t.subdir.foo'], test_names)
def test_discover_simple_file_in_dir(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py file: t/foo.py import unittest class Test(unittest.TestCase): def test_it(self): self.assertTrue(True) ''') dir_loader = loader.DirLoader(self.get_test_loader()) suite = dir_loader.discover('.', 't') self.assertEqual(1, suite.countTestCases())
def test_shared(self): tests.write_tree_from_desc('''dir: t # no t/__init__.py required, we don't need to import the scripts file: t/foo.py from sst.actions import * raise AssertionError('Loading only, executing fails') dir: t/shared file: t/shared/amodule.py Don't look at me ! ''') script_dir_loader = loader.ScriptDirLoader(loader.TestLoader()) suite = script_dir_loader.discover('t', 'shared') self.assertIs(None, suite)
def test_simple_file_in_a_package(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py file: t/test_foo.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) ''') test_loader = self.make_test_loader() suite = test_loader.discoverTestsFromTree('t') self.assertEqual(1, suite.countTestCases())
def test_regular(self): tests.write_tree_from_desc('''dir: t # no t/__init__.py required, we don't need to import the scripts dir: t/subdir file: t/subdir/foo.py raise AssertionError('Loading only, executing fails') dir: t/shared file: t/shared/amodule.py Don't look at me ! ''') test_loader = loader.TestLoader() suite = test_loader.discoverTests( '.', file_loader_class=loader.ScriptLoader, dir_loader_class=loader.ScriptDirLoader) self.assertEqual(1, suite.countTestCases())
def setUp(self): super(TestRunTestsFilteringByTestId, self).setUp() tests.write_tree_from_desc('''dir: t file: t/__init__.py file: t/test_foo.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) file: t/bar.py Don't look at me ! file: t/too.py Don't look at me ! ''')
def test_pattern(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py file: t/foo_foo.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) file: t/test_foo.py Don't look at me ! ''') test_loader = self.make_test_loader() suite = test_loader.discover('t', pattern='foo*.py') self.assertEqual(1, suite.countTestCases())
def setUp(self): super(TestTestLoaderTopLevelDir, self).setUp() # We build trees rooted in test_base_dir from which we will import tests.set_cwd_to_tmp(self) tests.protect_imports(self) tests.write_tree_from_desc('''dir: t file: t/__init__.py file: t/foo.py import unittest class Test(unittest.TestCase): def test_me(self): self.assertTrue(True) ''') self.loader = loaders.TestLoader()
def test_invalid_init_file(self): tests.write_tree_from_desc('''dir: t file: t/__init__.py I'm not even python code file: t/test_foo.py import unittest class Test(unittest.TestCase): def test_it(self): self.assertTrue(True) ''') test_loader = self.make_test_loader() e = self.assertRaises(SyntaxError, test_loader.discoverTestsFromTree, 't') self.assertEqual('EOL while scanning string literal', e.args[0])