def test_cpp_expand_roots(self): config = {"root": "integrationtest.txt", "roots": ["build/test*"]} selected, excluded = selector.filter_tests("cpp_integration_test", config, self.test_file_explorer) self.assertEqual(["build/testA", "build/testB", "build/testC"], selected) self.assertEqual([], excluded) selected, excluded = selector.filter_tests("cpp_unit_test", config, self.test_file_explorer) self.assertEqual(["build/testA", "build/testB", "build/testC"], selected) self.assertEqual([], excluded)
def test_cpp_roots_override(self): # When roots are specified for cpp tests they override all filtering since # 'roots' are populated with the command line arguments. config = {"include_files": "unknown_file", "roots": ["build/testC"]} selected = selector.filter_tests("cpp_unit_test", config, self.test_file_explorer) self.assertEqual(["build/testC"], selected) selected = selector.filter_tests("cpp_integration_test", config, self.test_file_explorer) self.assertEqual(["build/testC"], selected)
def test_cpp_expand_roots(self): config = {"root": "integrationtest.txt", "roots": ["build/test*"]} selected, excluded = selector.filter_tests("cpp_integration_test", config, self.test_file_explorer) self.assertEqual(["build/testA", "build/testB", "build/testC"], selected) self.assertEqual([], excluded) selected, excluded = selector.filter_tests("cpp_unit_test", config, self.test_file_explorer) self.assertEqual(["build/testA", "build/testB", "build/testC"], selected) self.assertEqual([], excluded)
def test_cpp_roots_override(self): # When roots are specified for cpp tests they override all filtering since # 'roots' are populated with the command line arguments. config = {"include_files": "unknown_file", "roots": ["build/testC"]} selected, excluded = selector.filter_tests("cpp_unit_test", config, self.test_file_explorer) self.assertEqual(["build/testC"], selected) self.assertEqual([], excluded) selected, excluded = selector.filter_tests("cpp_integration_test", config, self.test_file_explorer) self.assertEqual(["build/testC"], selected) self.assertEqual([], excluded)
def test_jstest_include_with_any_tags(self): config = { "roots": ["dir/subdir1/*.js", "dir/subdir2/*.js", "dir/subdir3/a/*.js"], "include_with_any_tags": ["tag2"] } selected, excluded = selector.filter_tests("js_test", config, self.test_file_explorer) self.assertEqual(["dir/subdir1/test11.js", "dir/subdir2/test21.js"], selected) self.assertEqual(["dir/subdir1/test12.js", "dir/subdir3/a/test3a1.js"], excluded)
def test_db_tests_include_suites(self): config = { "binary": self.test_file_explorer.binary, "include_suites": ["dbtestB"] } selected = selector.filter_tests("db_test", config, self.test_file_explorer) self.assertEqual(["dbtestB"], selected)
def get_tests_with_feature_flag_tags(feature_flags, ent_path): """Get the list of tests with feature flag tag.""" selector_config = { "roots": ["jstests/**/*.js", f"{ent_path}/jstests/**/*.js"], "include_with_any_tags": feature_flags, } tests, _ = selector.filter_tests("js_test", selector_config) return tests
def test_json_shcema_include_files(self): config = {"roots": ["dir/subdir1/*.js", "dir/subdir2/*.js", "dir/subdir3/a/*.js"], "include_files": ["dir/subdir2/test21.js"]} selected, excluded = selector.filter_tests("json_schema_test", config, self.test_file_explorer) self.assertEqual(["dir/subdir2/test21.js"], selected) self.assertEqual(["dir/subdir1/test11.js", "dir/subdir1/test12.js", "dir/subdir3/a/test3a1.js"], excluded)
def test_jstest_include_with_any_tags(self): config = { "roots": ["dir/subdir1/*.js", "dir/subdir2/*.js", "dir/subdir3/a/*.js"], "include_with_any_tags": ["tag2"] } selected, excluded = selector.filter_tests("js_test", config, self.test_file_explorer) self.assertEqual(["dir/subdir1/test11.js", "dir/subdir2/test21.js"], selected) self.assertEqual(["dir/subdir1/test12.js", "dir/subdir3/a/test3a1.js"], excluded)
def test_db_tests_roots_override(self): # When roots are specified for db_tests they override all filtering since # 'roots' are populated with the command line arguments. config = {"binary": self.test_file_explorer.binary, "include_suites": ["dbtestB"], "roots": ["dbtestOverride"]} selected, excluded = selector.filter_tests("db_test", config, self.test_file_explorer) self.assertEqual(["dbtestOverride"], selected) self.assertEqual([], excluded)
def test_jstest_include_tags(self): config = { "roots": ["dir/subdir1/*.js", "dir/subdir2/*.js", "dir/subdir3/a/*.js"], "include_tags": "tag1" } selected = selector.filter_tests("js_test", config, self.test_file_explorer) self.assertEqual(["dir/subdir1/test11.js"], selected)
def test_json_shcema_include_files(self): config = { "roots": ["dir/subdir1/*.js", "dir/subdir2/*.js", "dir/subdir3/a/*.js"], "include_files": ["dir/subdir2/test21.js"] } selected = selector.filter_tests("json_schema_test", config, self.test_file_explorer) self.assertEqual(["dir/subdir2/test21.js"], selected)
def test_cpp_with_any_tags(self): buildscripts.resmokelib.config.INCLUDE_WITH_ANY_TAGS = ["tag1"] try: selector_config = {"root": "unittest.txt"} selected, excluded = selector.filter_tests("cpp_unit_test", selector_config, test_file_explorer=self.test_file_explorer) self.assertEqual([], selected) self.assertEqual(["build/testA", "build/testB"], excluded) finally: buildscripts.resmokelib.config.INCLUDE_WITH_ANY_TAGS = None
def test_cpp_with_any_tags(self): buildscripts.resmokelib.config.INCLUDE_WITH_ANY_TAGS = ["tag1"] try: selector_config = {"root": "unittest.txt"} selected, excluded = selector.filter_tests("cpp_unit_test", selector_config, test_file_explorer=self.test_file_explorer) self.assertEqual([], selected) self.assertEqual(["build/testA", "build/testB"], excluded) finally: buildscripts.resmokelib.config.INCLUDE_WITH_ANY_TAGS = None
def test_db_tests_roots_override(self): # When roots are specified for db_tests they override all filtering since # 'roots' are populated with the command line arguments. config = { "binary": self.test_file_explorer.binary, "include_suites": ["dbtestB"], "roots": ["dbtestOverride"] } selected, excluded = selector.filter_tests("db_test", config, self.test_file_explorer) self.assertEqual(["dbtestOverride"], selected) self.assertEqual([], excluded)
def test_filter_temporarily_disabled_tests(self): parser.parse_command_line() test_file_explorer = MockTestFileExplorer() test_file_explorer.tags = { "dir/subdir1/test11.js": ["tag1", "tag2", "__TEMPORARILY_DISABLED__"], "dir/subdir1/test12.js": ["tag3"], "dir/subdir2/test21.js": ["tag2", "tag4"] } config = {"roots": ["dir/subdir1/*.js", "dir/subdir2/*.js"]} selected, excluded = selector.filter_tests("js_test", config, test_file_explorer) self.assertEqual(["dir/subdir1/test11.js"], excluded) self.assertEqual(["dir/subdir1/test12.js", "dir/subdir2/test21.js"], selected)
def test_filter_temporarily_disabled_tests(self): parser.parse_command_line(sys.argv[1:]) test_file_explorer = MockTestFileExplorer() test_file_explorer.tags = { "dir/subdir1/test11.js": ["tag1", "tag2", "__TEMPORARILY_DISABLED__"], "dir/subdir1/test12.js": ["tag3"], "dir/subdir2/test21.js": ["tag2", "tag4"] } config = {"roots": ["dir/subdir1/*.js", "dir/subdir2/*.js"]} selected, excluded = selector.filter_tests("js_test", config, test_file_explorer) self.assertEqual(["dir/subdir1/test11.js"], excluded) self.assertEqual(["dir/subdir1/test12.js", "dir/subdir2/test21.js"], selected)
def test_jstest_all(self): config = { "roots": ["dir/subdir1/*.js", "dir/subdir2/*.js", "dir/subdir3/a/*.js"] } selected = selector.filter_tests("js_test", config, self.test_file_explorer) self.assertEqual([ "dir/subdir1/test11.js", "dir/subdir1/test12.js", "dir/subdir2/test21.js", "dir/subdir3/a/test3a1.js" ], selected)
def _get_tests_for_kind(self, test_kind): """Return the tests to run based on the 'test_kind'-specific filtering policy.""" selector_config = self.get_selector_config() # The mongos_test doesn't have to filter anything, the selector_config is just the # arguments to the mongos program to be used as the test case. if test_kind == "mongos_test": mongos_options = selector_config # Just for easier reading. if not isinstance(mongos_options, dict): raise TypeError("Expected dictionary of arguments to mongos") return [mongos_options], [] return _selector.filter_tests(test_kind, selector_config)
def test_db_tests_include_suites(self): config = {"binary": self.test_file_explorer.binary, "include_suites": ["dbtestB"]} selected, excluded = selector.filter_tests("db_test", config, self.test_file_explorer) self.assertEqual(["dbtestB"], selected) self.assertEqual(["dbtestA", "dbtestC"], excluded)
def test_jstest_unknown_file(self): config = {"roots": ["dir/subdir1/*.js", "dir/subdir1/unknown"]} with self.assertRaisesRegexp(ValueError, "Unrecognized test file: dir/subdir1/unknown"): selector.filter_tests("js_test", config, self.test_file_explorer)
def test_db_tests_all(self): config = {"binary": self.test_file_explorer.binary} selected, excluded = selector.filter_tests("db_test", config, self.test_file_explorer) self.assertEqual(["dbtestA", "dbtestB", "dbtestC"], selected) self.assertEqual([], excluded)
def test_cpp_all(self): config = {"root": "integrationtest.txt"} selected = selector.filter_tests("cpp_integration_test", config, self.test_file_explorer) self.assertEqual(["build/testA", "build/testB"], selected)
def test_unknown_test_kind(self): with self.assertRaises(ValueError): selector.filter_tests("unknown_test", {})
def test_jstest_unknown_file(self): config = {"roots": ["dir/subdir1/*.js", "dir/subdir1/unknown"]} with self.assertRaisesRegexp( ValueError, "Unrecognized test file: dir/subdir1/unknown"): selector.filter_tests("js_test", config, self.test_file_explorer)
def test_db_tests_all(self): config = {"binary": self.test_file_explorer.binary} selected, excluded = selector.filter_tests("db_test", config, self.test_file_explorer) self.assertEqual(["dbtestA", "dbtestB", "dbtestC"], selected) self.assertEqual([], excluded)
def test_unknown_test_kind(self): with self.assertRaises(ValueError): selector.filter_tests("unknown_test", {})