Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[22.05] fix looks_like_yaml_or_cwl_with_class #15439

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/galaxy/tool_util/loader_directory.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ def looks_like_a_data_manager_xml(path):

def as_dict_if_looks_like_yaml_or_cwl_with_class(path, classes):
"""
get a dict from yaml file if it contains `class: CLASS`, where CLASS is
get a dict from yaml file if it contains a line `class: CLASS`, where CLASS is
any string given in CLASSES. must appear in the first 5k and also load
properly in total.
"""
Expand All @@ -199,7 +199,7 @@ def as_dict_if_looks_like_yaml_or_cwl_with_class(path, classes):
start_contents = f.read(5 * 1024)
except UnicodeDecodeError:
return False, None
if re.search(rf"\nclass:\s+({'|'.join(classes)})\s*\n", start_contents) is None:
if re.search(rf"^class:\s+{'|'.join(classes)}\s*$", start_contents, re.MULTILINE) is None:
return False, None

with open(path) as f:
Expand Down
24 changes: 24 additions & 0 deletions test/unit/tool_util/test_loader_directory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import tempfile

from galaxy.tool_util.loader_directory import is_a_yaml_with_class


def test_is_a_yaml_with_class():
with tempfile.NamedTemporaryFile("w", suffix=".yaml") as tf:
fname = tf.name
tf.write(
"""class: GalaxyWorkflow
name: "Test Workflow"
inputs:
- id: input1
outputs:
- id: wf_output_1
outputSource: first_cat/out_file1
steps:
- tool_id: cat
label: first_cat
in:
input1: input1"""
)
tf.flush()
assert is_a_yaml_with_class(fname, ["GalaxyWorkflow"])