From afe9f94fb8edda5abb08468bf85d1f57dbc14a26 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Fri, 30 Jul 2021 11:13:17 +0200 Subject: [PATCH] Allow passing arguments to unittest --- test/framework/asyncprocess.py | 7 +++-- test/framework/build_log.py | 7 +++-- test/framework/config.py | 7 +++-- test/framework/containers.py | 7 +++-- test/framework/docs.py | 7 +++-- test/framework/easyblock.py | 7 +++-- test/framework/easyconfig.py | 7 +++-- test/framework/easyconfigformat.py | 7 +++-- test/framework/easyconfigparser.py | 7 +++-- test/framework/easyconfigversion.py | 7 +++-- test/framework/easystack.py | 7 +++-- test/framework/ebconfigobj.py | 7 +++-- test/framework/environment.py | 7 +++-- test/framework/filetools.py | 7 +++-- test/framework/format_convert.py | 7 +++-- test/framework/general.py | 7 +++-- test/framework/github.py | 7 +++-- test/framework/hooks.py | 7 +++-- test/framework/include.py | 7 +++-- test/framework/lib.py | 7 +++-- test/framework/license.py | 7 +++-- test/framework/module_generator.py | 11 +++++-- test/framework/modules.py | 7 +++-- test/framework/modulestool.py | 7 +++-- test/framework/options.py | 7 +++-- test/framework/output.py | 7 +++-- test/framework/package.py | 7 +++-- test/framework/parallelbuild.py | 7 +++-- test/framework/repository.py | 7 +++-- test/framework/robot.py | 7 +++-- test/framework/run.py | 7 +++-- test/framework/style.py | 7 +++-- test/framework/suite.py | 43 +++++++++++++++++----------- test/framework/systemtools.py | 7 +++-- test/framework/toolchain.py | 7 +++-- test/framework/toolchainvariables.py | 7 +++-- test/framework/toy_build.py | 7 +++-- test/framework/tweak.py | 7 +++-- test/framework/type_checking.py | 7 +++-- test/framework/utilities.py | 3 +- test/framework/utilities_test.py | 7 +++-- test/framework/variables.py | 7 +++-- test/framework/yeb.py | 7 +++-- 43 files changed, 236 insertions(+), 101 deletions(-) diff --git a/test/framework/asyncprocess.py b/test/framework/asyncprocess.py index f8db1927d8..4f57e62c8f 100644 --- a/test/framework/asyncprocess.py +++ b/test/framework/asyncprocess.py @@ -67,9 +67,12 @@ def tearDown(self): super(AsyncProcessTest, self).tearDown() -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(AsyncProcessTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(AsyncProcessTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(AsyncProcessTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/build_log.py b/test/framework/build_log.py index a1792b998f..5ebe1a5e5c 100644 --- a/test/framework/build_log.py +++ b/test/framework/build_log.py @@ -437,9 +437,12 @@ def test_raise_nosupport(self): raise_nosupport, 'foobar', 42) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(BuildLogTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(BuildLogTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(BuildLogTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/config.py b/test/framework/config.py index 4b42672cfc..94fc1f9032 100644 --- a/test/framework/config.py +++ b/test/framework/config.py @@ -731,8 +731,11 @@ def test_update_build_options(self): self.assertEqual(build_option('pr_target_account'), 'easybuilders') -def suite(): - return TestLoaderFiltered().loadTestsFromTestCase(EasyBuildConfigTest, sys.argv[1:]) +def suite(loader=None): + if loader: + return loader.loadTestsFromTestCase(EasyBuildConfigTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EasyBuildConfigTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/containers.py b/test/framework/containers.py index bd6dfde7f6..475cd26566 100644 --- a/test/framework/containers.py +++ b/test/framework/containers.py @@ -509,9 +509,12 @@ def test_container_config_template_recipe(self): self.assertEqual(cont_recipe, expected) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(ContainersTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(ContainersTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(ContainersTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/docs.py b/test/framework/docs.py index 146d05b24c..8f4e9b0785 100644 --- a/test/framework/docs.py +++ b/test/framework/docs.py @@ -1067,9 +1067,12 @@ def get_eb_help_output(arg=''): self.assertTrue(regex.search(txt_rst), "Pattern '%s' should be found in: %s" % (regex.pattern, txt_rst)) -def suite(): +def suite(loader=None): """ returns all test cases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(DocsTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(DocsTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(DocsTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/easyblock.py b/test/framework/easyblock.py index 4f27e86fb2..6a340eab57 100644 --- a/test/framework/easyblock.py +++ b/test/framework/easyblock.py @@ -2839,9 +2839,12 @@ def run_sanity_check_step(sanity_check_paths, enhance_sanity_check): run_sanity_check_step({}, True) -def suite(): +def suite(loader=None): """ return all the tests in this file """ - return TestLoaderFiltered().loadTestsFromTestCase(EasyBlockTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(EasyBlockTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EasyBlockTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/easyconfig.py b/test/framework/easyconfig.py index f09a0896a6..ac901c824e 100644 --- a/test/framework/easyconfig.py +++ b/test/framework/easyconfig.py @@ -4883,9 +4883,12 @@ def test_easyconfigs_caches(self): self.assertTrue(regex.search(stdout), "Pattern '%s' should be found in: %s" % (regex.pattern, stdout)) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(EasyConfigTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(EasyConfigTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EasyConfigTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/easyconfigformat.py b/test/framework/easyconfigformat.py index e806a88378..498417ccf8 100644 --- a/test/framework/easyconfigformat.py +++ b/test/framework/easyconfigformat.py @@ -46,9 +46,12 @@ def test_parser_version_regex(self): self.assertEqual(version['minor'], int(res['minor'])) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(EasyConfigFormatTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(EasyConfigFormatTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EasyConfigFormatTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/easyconfigparser.py b/test/framework/easyconfigparser.py index 9a17d8f0a5..a6ec93f790 100644 --- a/test/framework/easyconfigparser.py +++ b/test/framework/easyconfigparser.py @@ -223,9 +223,12 @@ def test_check_value_types(self): self.assertEqual(ecdict['version'], '1.4') -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(EasyConfigParserTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(EasyConfigParserTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EasyConfigParserTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/easyconfigversion.py b/test/framework/easyconfigversion.py index 5ef706a72a..f103be2b59 100644 --- a/test/framework/easyconfigversion.py +++ b/test/framework/easyconfigversion.py @@ -285,9 +285,12 @@ def test_hashing(self): self.assertTrue(hash(test_case)) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(EasyConfigVersion, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(EasyConfigVersion) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EasyConfigVersion, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/easystack.py b/test/framework/easystack.py index ac36d7a26f..6673543e25 100644 --- a/test/framework/easystack.py +++ b/test/framework/easystack.py @@ -175,9 +175,12 @@ def test_check_value(self): self.assertErrorRegex(EasyBuildError, error_pattern, check_value, version, context) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(EasyStackTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(EasyStackTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EasyStackTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/ebconfigobj.py b/test/framework/ebconfigobj.py index d4d81995d8..271c918f57 100644 --- a/test/framework/ebconfigobj.py +++ b/test/framework/ebconfigobj.py @@ -262,9 +262,12 @@ def test_ebconfigobj(self): self.assertEqual(res, {'foo': 'bar'}) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(TestEBConfigObj, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(TestEBConfigObj) + else: + return TestLoaderFiltered().loadTestsFromTestCase(TestEBConfigObj, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/environment.py b/test/framework/environment.py index 9a81e17486..eac24a43cf 100644 --- a/test/framework/environment.py +++ b/test/framework/environment.py @@ -163,9 +163,12 @@ def test_sanitize_env(self): self.assertEqual(os.getenv('LD_PRELOAD'), None) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(EnvironmentTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(EnvironmentTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EnvironmentTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/filetools.py b/test/framework/filetools.py index 32d72c7b83..0553327616 100644 --- a/test/framework/filetools.py +++ b/test/framework/filetools.py @@ -3428,9 +3428,12 @@ def test_create_unused_dir(self): self.assertExists(path) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(FileToolsTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(FileToolsTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(FileToolsTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/format_convert.py b/test/framework/format_convert.py index 1bc3f764bb..071d594741 100644 --- a/test/framework/format_convert.py +++ b/test/framework/format_convert.py @@ -60,9 +60,12 @@ def test_dependency(self): self.assertEqual(str(res), txt) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(ConvertTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(ConvertTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(ConvertTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/general.py b/test/framework/general.py index 526fe07467..9a03d9b4f8 100644 --- a/test/framework/general.py +++ b/test/framework/general.py @@ -155,9 +155,12 @@ def test_import_available_modules(self): self.assertEqual([test123.one, test123.three, test123.two], res) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(GeneralTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(GeneralTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(GeneralTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/github.py b/test/framework/github.py index 84d3f5c821..e5023cf6c8 100644 --- a/test/framework/github.py +++ b/test/framework/github.py @@ -1249,9 +1249,12 @@ def test_is_patch_for(self): self.assertTrue(is_patch_for('pi.patch', ec)) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(GithubTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(GithubTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(GithubTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/hooks.py b/test/framework/hooks.py index fad251b040..3c55d85a1d 100644 --- a/test/framework/hooks.py +++ b/test/framework/hooks.py @@ -217,9 +217,12 @@ def test_verify_hooks(self): self.assertErrorRegex(EasyBuildError, error_msg_pattern, load_hooks, test_broken_hooks_pymod) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(HooksTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(HooksTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(HooksTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/include.py b/test/framework/include.py index b346f911ae..56ea6171a8 100644 --- a/test/framework/include.py +++ b/test/framework/include.py @@ -258,9 +258,12 @@ def test_is_software_specific_easyblock(self): self.assertFalse(is_software_specific_easyblock(os.path.join(test_easyblocks, 'generic', 'toolchain.py'))) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(IncludeTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(IncludeTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(IncludeTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/lib.py b/test/framework/lib.py index 2f4149314c..6df1537404 100644 --- a/test/framework/lib.py +++ b/test/framework/lib.py @@ -124,8 +124,11 @@ def test_modules_tool(self): self.assertEqual(modtool.list(), [{'default': None, 'mod_name': 'GCC/6.4.0-2.28'}]) -def suite(): - return TestLoaderFiltered().loadTestsFromTestCase(EasyBuildLibTest, sys.argv[1:]) +def suite(loader=None): + if loader: + return loader.loadTestsFromTestCase(EasyBuildLibTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(EasyBuildLibTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/license.py b/test/framework/license.py index 80c741908f..db225d419c 100644 --- a/test/framework/license.py +++ b/test/framework/license.py @@ -67,9 +67,12 @@ def test_licenses(self): self.assertTrue(issubclass(lics[lic], License)) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(LicenseTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(LicenseTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(LicenseTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/module_generator.py b/test/framework/module_generator.py index b6bec17093..afa386dd40 100644 --- a/test/framework/module_generator.py +++ b/test/framework/module_generator.py @@ -1599,11 +1599,16 @@ class LuaModuleGeneratorTest(ModuleGeneratorTest): MODULE_GENERATOR_CLASS = ModuleGeneratorLua -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ + if loader: + args = [] + else: + loader = TestLoaderFiltered() + args = [sys.argv[1:]] suite = TestSuite() - suite.addTests(TestLoaderFiltered().loadTestsFromTestCase(TclModuleGeneratorTest, sys.argv[1:])) - suite.addTests(TestLoaderFiltered().loadTestsFromTestCase(LuaModuleGeneratorTest, sys.argv[1:])) + suite.addTests(loader.loadTestsFromTestCase(TclModuleGeneratorTest, *args)) + suite.addTests(loader.loadTestsFromTestCase(LuaModuleGeneratorTest, *args)) return suite diff --git a/test/framework/modules.py b/test/framework/modules.py index 4f2b3fc5d6..eb2f7e4272 100644 --- a/test/framework/modules.py +++ b/test/framework/modules.py @@ -1546,9 +1546,12 @@ def test_get_setenv_value_from_modulefile(self): self.assertEqual(res, None) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(ModulesTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(ModulesTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(ModulesTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/modulestool.py b/test/framework/modulestool.py index 59c6872b93..004431b6ce 100644 --- a/test/framework/modulestool.py +++ b/test/framework/modulestool.py @@ -204,9 +204,12 @@ def tearDown(self): del os.environ['module'] -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(ModulesToolTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(ModulesToolTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(ModulesToolTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/options.py b/test/framework/options.py index 8e60cbc8bb..1a97963950 100644 --- a/test/framework/options.py +++ b/test/framework/options.py @@ -6870,9 +6870,12 @@ def test_opts_dict_to_eb_opts(self): self.assertEqual(opts_dict_to_eb_opts(opts_dict), expected) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(CommandLineOptionsTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(CommandLineOptionsTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(CommandLineOptionsTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/output.py b/test/framework/output.py index d1673a55d1..ec71202b98 100644 --- a/test/framework/output.py +++ b/test/framework/output.py @@ -181,9 +181,12 @@ def test_get_start_update_stop_progress_bar(self): stop_progress_bar(PROGRESS_BAR_EXTENSIONS) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(OutputTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(OutputTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(OutputTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/package.py b/test/framework/package.py index 23e2e37e9c..a90e53546a 100644 --- a/test/framework/package.py +++ b/test/framework/package.py @@ -267,9 +267,12 @@ def test_package(self): self.assertTrue(regex_pkg.search(pkgtxt), "Pattern '%s' not found in: %s" % (regex_pkg.pattern, pkgtxt)) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(PackageTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(PackageTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(PackageTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/parallelbuild.py b/test/framework/parallelbuild.py index 3ad85ac3b1..0fbf800849 100644 --- a/test/framework/parallelbuild.py +++ b/test/framework/parallelbuild.py @@ -382,9 +382,12 @@ def test_build_easyconfigs_in_parallel_slurm(self): self.assertEqual(jobs[1].job_specs, expected) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(ParallelBuildTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(ParallelBuildTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(ParallelBuildTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/repository.py b/test/framework/repository.py index aa1cf402b7..7430842ae1 100644 --- a/test/framework/repository.py +++ b/test/framework/repository.py @@ -209,9 +209,12 @@ def tearDown(self): shutil.rmtree(self.path, True) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(RepositoryTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(RepositoryTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(RepositoryTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/robot.py b/test/framework/robot.py index 4f226bae35..cb7e7bad69 100644 --- a/test/framework/robot.py +++ b/test/framework/robot.py @@ -1573,9 +1573,12 @@ def test_search_easyconfigs(self): self.assertTrue(regex.search(stdout), "Pattern '%s' should be found in: %s" % (regex.pattern, stdout)) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(RobotTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(RobotTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(RobotTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/run.py b/test/framework/run.py index 908a9e9d93..899d30da67 100644 --- a/test/framework/run.py +++ b/test/framework/run.py @@ -737,9 +737,12 @@ def test_check_log_for_errors(self): self.assertIn(expected_msg, read_file(logfile)) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(RunTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(RunTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(RunTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/style.py b/test/framework/style.py index 298b165c24..6ff177d3cd 100644 --- a/test/framework/style.py +++ b/test/framework/style.py @@ -97,9 +97,12 @@ def test_check_trailing_whitespace(self): self.assertEqual(result, expected_result) -def suite(): +def suite(loader=None): """Return all style tests for easyconfigs.""" - return TestLoaderFiltered().loadTestsFromTestCase(StyleTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(StyleTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(StyleTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/suite.py b/test/framework/suite.py index 6a40e35754..b80896640a 100755 --- a/test/framework/suite.py +++ b/test/framework/suite.py @@ -111,27 +111,36 @@ sys.stderr.write("No execution rights on temporary files, specify another location via $TMPDIR: %s\n" % err) sys.exit(1) -# initialize logger for all the unit tests -fd, log_fn = tempfile.mkstemp(prefix='easybuild-tests-', suffix='.log') -os.close(fd) -os.remove(log_fn) -fancylogger.logToFile(log_fn) -log = fancylogger.getLogger() - # call suite() for each module and then run them all # note: make sure the options unit tests run first, to avoid running some of them with a readily initialized config tests = [gen, d, bl, o, r, ef, ev, ebco, ep, e, mg, m, mt, f, run, a, robot, b, v, g, tcv, tc, t, c, s, lic, f_c, tw, p, i, pkg, env, et, y, st, h, ct, lib, u, es, ou] -SUITE = unittest.TestSuite([x.suite() for x in tests]) -res = unittest.TextTestRunner().run(SUITE) -fancylogger.logToFile(log_fn, enable=False) +class EasyBuildFrameworkTestSuite(unittest.TestSuite): + def __init__(self, loader): + super(EasyBuildFrameworkTestSuite, self).__init__([x.suite(loader) for x in tests]) + + def run(self, *args, **kwargs): + # initialize logger for all the unit tests + fd, log_fn = tempfile.mkstemp(prefix='easybuild-tests-', suffix='.log') + os.close(fd) + os.remove(log_fn) + fancylogger.logToFile(log_fn) + res = super(EasyBuildFrameworkTestSuite, self).run(*args, **kwargs) + fancylogger.logToFile(log_fn, enable=False) + if not res.wasSuccessful(): + sys.stderr.write("ERROR: Not all tests were successful.\n") + print("Log available at %s" % log_fn) + else: + for fn in glob.glob('%s*' % log_fn): + os.remove(fn) + return res + + +def load_tests(loader, tests, pattern): + return EasyBuildFrameworkTestSuite(loader) + -if not res.wasSuccessful(): - sys.stderr.write("ERROR: Not all tests were successful.\n") - print("Log available at %s" % log_fn) - sys.exit(2) -else: - for fn in glob.glob('%s*' % log_fn): - os.remove(fn) +if __name__ == '__main__': + unittest.main() diff --git a/test/framework/systemtools.py b/test/framework/systemtools.py index 0841e3b76f..b448c20935 100644 --- a/test/framework/systemtools.py +++ b/test/framework/systemtools.py @@ -1129,9 +1129,12 @@ def test_find_library_path(self): self.assertExists(lib_path) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(SystemToolsTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(SystemToolsTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(SystemToolsTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/toolchain.py b/test/framework/toolchain.py index 1c36431c45..1af8e5f669 100644 --- a/test/framework/toolchain.py +++ b/test/framework/toolchain.py @@ -2951,9 +2951,12 @@ def test_env_vars_external_module(self): self.assertEqual(res, expected) -def suite(): +def suite(loader=None): """ return all the tests""" - return TestLoaderFiltered().loadTestsFromTestCase(ToolchainTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(ToolchainTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(ToolchainTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/toolchainvariables.py b/test/framework/toolchainvariables.py index db90378d8b..ce0e3d804d 100644 --- a/test/framework/toolchainvariables.py +++ b/test/framework/toolchainvariables.py @@ -163,9 +163,12 @@ class TCV(ToolchainVariables): self.assertEqual(str(tcv['MPICH_CC']), "icc -test") -def suite(): +def suite(loader=None): """ return all the tests""" - return TestLoaderFiltered().loadTestsFromTestCase(ToolchainVariablesTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(ToolchainVariablesTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(ToolchainVariablesTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/toy_build.py b/test/framework/toy_build.py index 52aa18aae9..d268fc5a43 100644 --- a/test/framework/toy_build.py +++ b/test/framework/toy_build.py @@ -3901,9 +3901,12 @@ def test_toy_post_install_messages(self): self.assertTrue(regex.search(stdout), "Pattern '%s' should be found in: %s" % (regex.pattern, stdout)) -def suite(): +def suite(loader=None): """ return all the tests in this file """ - return TestLoaderFiltered().loadTestsFromTestCase(ToyBuildTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(ToyBuildTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(ToyBuildTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/tweak.py b/test/framework/tweak.py index eda8046d52..3ac039af01 100644 --- a/test/framework/tweak.py +++ b/test/framework/tweak.py @@ -540,9 +540,12 @@ def test_list_deps_versionsuffixes(self): self.assertEqual(list_deps_versionsuffixes(ec_spec), ['-deps']) -def suite(): +def suite(loader=None): """ return all the tests in this file """ - return TestLoaderFiltered().loadTestsFromTestCase(TweakTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(TweakTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(TweakTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/type_checking.py b/test/framework/type_checking.py index 83f1ef41ac..452125afa9 100644 --- a/test/framework/type_checking.py +++ b/test/framework/type_checking.py @@ -743,9 +743,12 @@ def test_ensure_iterable_license_specs(self): self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, (42, 'foo')) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(TypeCheckingTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(TypeCheckingTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(TypeCheckingTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/utilities.py b/test/framework/utilities.py index bca64bc827..74e1c8123d 100644 --- a/test/framework/utilities.py +++ b/test/framework/utilities.py @@ -66,8 +66,9 @@ if key.startswith('%s_' % CONFIG_ENV_VAR_PREFIX): del os.environ[key] +# Ignore cmdline args as those are meant for the unittest framework # ignore any existing configuration files -go = EasyBuildOptions(go_useconfigfiles=False) +go = EasyBuildOptions(go_args=[], go_useconfigfiles=False) os.environ['EASYBUILD_IGNORECONFIGFILES'] = ','.join(go.options.configfiles) # redefine $TEST_EASYBUILD_X env vars as $EASYBUILD_X diff --git a/test/framework/utilities_test.py b/test/framework/utilities_test.py index 0aa3a9956e..1740a3af90 100644 --- a/test/framework/utilities_test.py +++ b/test/framework/utilities_test.py @@ -179,9 +179,12 @@ def test_LooseVersion(self): self.assertEqual(LooseVersion('2.a5').version, [2, 'a', 5]) -def suite(): +def suite(loader=None): """ return all the tests in this file """ - return TestLoaderFiltered().loadTestsFromTestCase(UtilitiesTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(UtilitiesTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(UtilitiesTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/variables.py b/test/framework/variables.py index 8331a6c2dd..bd98403543 100644 --- a/test/framework/variables.py +++ b/test/framework/variables.py @@ -90,9 +90,12 @@ def test_empty_variables(self): self.assertEqual(v['FOOBAR'], []) -def suite(): +def suite(loader=None): """ return all the tests""" - return TestLoaderFiltered().loadTestsFromTestCase(VariablesTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(VariablesTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(VariablesTest, sys.argv[1:]) if __name__ == '__main__': diff --git a/test/framework/yeb.py b/test/framework/yeb.py index 74a2a47875..2866214313 100644 --- a/test/framework/yeb.py +++ b/test/framework/yeb.py @@ -204,9 +204,12 @@ def test_external_module_toolchain(self): self.assertEqual(ec.dependencies()[1]['external_module_metadata'], metadata) -def suite(): +def suite(loader=None): """ returns all the testcases in this module """ - return TestLoaderFiltered().loadTestsFromTestCase(YebTest, sys.argv[1:]) + if loader: + return loader.loadTestsFromTestCase(YebTest) + else: + return TestLoaderFiltered().loadTestsFromTestCase(YebTest, sys.argv[1:]) if __name__ == '__main__':