diff --git a/lib/galaxy_test/base/populators.py b/lib/galaxy_test/base/populators.py index 5acad84dd63..0bd146638a8 100644 --- a/lib/galaxy_test/base/populators.py +++ b/lib/galaxy_test/base/populators.py @@ -226,22 +226,18 @@ def _raise_skip_if(check, *args): raise SkipTest(*args) -def load_conformance_tests(directory, path="conformance_tests.yaml"): - conformance_tests_path = os.path.join(directory, path) +def conformance_tests_gen(directory, filename="conformance_tests.yaml"): + conformance_tests_path = os.path.join(directory, filename) with open(conformance_tests_path) as f: conformance_tests = yaml.safe_load(f) - expanded_conformance_tests = [] for conformance_test in conformance_tests: if "$import" in conformance_test: - import_path = conformance_test["$import"] - expanded_conformance_tests.extend(load_conformance_tests(directory, import_path)) + import_dir, import_filename = os.path.split(conformance_test["$import"]) + yield from conformance_tests_gen(os.path.join(directory, import_dir), import_filename) else: - subdirectory = os.path.dirname(path) - if subdirectory: - conformance_test["relative_path"] = os.path.join(directory, subdirectory) - expanded_conformance_tests.append(conformance_test) - return expanded_conformance_tests + conformance_test["directory"] = directory + yield conformance_test class CwlRun: @@ -287,8 +283,7 @@ class CwlPopulator: self.workflow_populator = workflow_populator def get_conformance_test(self, version, doc): - conformance_tests = load_conformance_tests(os.path.join(CWL_TOOL_DIRECTORY, str(version))) - for test in conformance_tests: + for test in conformance_tests_gen(os.path.join(CWL_TOOL_DIRECTORY, str(version))): if test.get("doc") == doc: return test raise Exception(f"doc [{doc}] not found") @@ -404,7 +399,7 @@ class CwlPopulator: def run_conformance_test(self, version, doc): test = self.get_conformance_test(version, doc) - directory = os.path.join(CWL_TOOL_DIRECTORY, version) + directory = test["directory"] artifact = os.path.join(directory, test["tool"]) job_path = test.get("job") if job_path is not None: diff --git a/scripts/cwl_conformance_to_test_cases.py b/scripts/cwl_conformance_to_test_cases.py index b5a03df88ed..b4abb8aceb1 100644 --- a/scripts/cwl_conformance_to_test_cases.py +++ b/scripts/cwl_conformance_to_test_cases.py @@ -342,19 +342,17 @@ RED_TESTS = { } -def load_conformance_tests(directory, path="conformance_tests.yaml"): - conformance_tests_path = os.path.join(directory, path) +def conformance_tests_gen(directory, filename="conformance_tests.yaml"): + conformance_tests_path = os.path.join(directory, filename) with open(conformance_tests_path) as f: conformance_tests = yaml.safe_load(f) - expanded_conformance_tests = [] for conformance_test in conformance_tests: if "$import" in conformance_test: import_path = conformance_test["$import"] - expanded_conformance_tests.extend(load_conformance_tests(directory, import_path)) + yield from conformance_tests_gen(directory, import_path) else: - expanded_conformance_tests.append(conformance_test) - return expanded_conformance_tests + yield conformance_test def main(): @@ -363,7 +361,6 @@ def main(): conformance_tests_dir = sys.argv[1] version = sys.argv[2] version_simple = version.replace(".", "_") - conformance_tests = load_conformance_tests(os.path.join(conformance_tests_dir, version)) red_tests_list = RED_TESTS[version] red_tests_found = set() @@ -371,7 +368,7 @@ def main(): tests = "" - for i, conformance_test in enumerate(conformance_tests): + for i, conformance_test in enumerate(conformance_tests_gen(os.path.join(conformance_tests_dir, version))): test_with_doc = conformance_test.copy() if 'doc' not in test_with_doc: raise Exception(f"No doc in test [{test_with_doc}]")