Unverified Commit 7c8d732e authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #15439 from bernt-matthias/fix-looks-like-yaml-w-class

[22.05] fix looks_like_yaml_or_cwl_with_class
parents bff1a04c 8ec08f66
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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.
    """
@@ -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:
+24 −0
Original line number Diff line number Diff line
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"])