From 7266e051983cd469695dd156c11cb28207ddb4ba Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Wed, 18 Oct 2023 20:09:28 +0200 Subject: [PATCH] Break up _lint_case --- planemo/workflow_lint.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/planemo/workflow_lint.py b/planemo/workflow_lint.py index 270608014..b10a9e450 100644 --- a/planemo/workflow_lint.py +++ b/planemo/workflow_lint.py @@ -290,19 +290,7 @@ def _lint_case(path: str, test_case: TestCase, lint_context: WorkflowLintContext # TODO: validate structure of test expectations output_expectations = test_case.output_expectations[test_output_id] - all_assertion_definitions = [] - if isinstance(output_expectations, (int, str, float, bool)): - # CWL style parameter output - continue - if "element_tests" in output_expectations: - # This is a collection - for element_id in output_expectations["element_tests"]: - all_assertion_definitions.append(output_expectations["element_tests"][element_id].get("asserts")) - else: - all_assertion_definitions.append(output_expectations.get("asserts")) - for assertion_definitions in all_assertion_definitions: - if not _check_test_assertions(lint_context, assertion_definitions): - test_valid = False + test_valid = is_valid_output_expectations(lint_context=lint_context, output_expectations=output_expectations) if not found_valid_expectation: lint_context.warn("Found no valid test expectations for workflow test") @@ -311,6 +299,23 @@ def _lint_case(path: str, test_case: TestCase, lint_context: WorkflowLintContext return test_valid +def is_valid_output_expectations(lint_context, output_expectations): + all_assertion_definitions = [] + if isinstance(output_expectations, (int, str, float, bool)): + # CWL style parameter output + return True + elif "element_tests" in output_expectations: + # This is a collection + for element_id in output_expectations["element_tests"]: + all_assertion_definitions.append(output_expectations["element_tests"][element_id].get("asserts")) + else: + all_assertion_definitions.append(output_expectations.get("asserts")) + for assertion_definitions in all_assertion_definitions: + if not _check_test_assertions(lint_context, assertion_definitions): + return False + return True + + def _check_test_assertions( lint_context: WorkflowLintContext, assertion_definitions: Optional[Dict[str, Dict[str, Any]]] ) -> bool: