diff env/lib/python3.9/site-packages/cwltool/tests/test_override.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/cwltool/tests/test_override.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,131 @@
+import json
+from io import StringIO
+from typing import Dict, List
+
+import pytest
+
+from cwltool.main import main
+
+from .util import get_data, needs_docker
+
+override_parameters = [
+    (
+        [get_data("tests/override/echo.cwl"), get_data("tests/override/echo-job.yml")],
+        {"out": "zing hello1\n"},
+    ),
+    (
+        [
+            "--overrides",
+            get_data("tests/override/ov.yml"),
+            get_data("tests/override/echo.cwl"),
+            get_data("tests/override/echo-job.yml"),
+        ],
+        {"out": "zing hello2\n"},
+    ),
+    (
+        [
+            get_data("tests/override/echo.cwl"),
+            get_data("tests/override/echo-job-ov.yml"),
+        ],
+        {"out": "zing hello3\n"},
+    ),
+    ([get_data("tests/override/echo-job-ov2.yml")], {"out": "zing hello4\n"}),
+    (
+        [
+            "--overrides",
+            get_data("tests/override/ov.yml"),
+            get_data("tests/override/echo-wf.cwl"),
+            get_data("tests/override/echo-job.yml"),
+        ],
+        {"out": "zing hello2\n"},
+    ),
+    (
+        [
+            "--overrides",
+            get_data("tests/override/ov2.yml"),
+            get_data("tests/override/echo-wf.cwl"),
+            get_data("tests/override/echo-job.yml"),
+        ],
+        {"out": "zing hello5\n"},
+    ),
+    (
+        [
+            "--overrides",
+            get_data("tests/override/ov3.yml"),
+            get_data("tests/override/echo-wf.cwl"),
+            get_data("tests/override/echo-job.yml"),
+        ],
+        {"out": "zing hello6\n"},
+    ),
+    (
+        [
+            get_data("tests/override/env-tool_v1.1.cwl"),
+            get_data("tests/override/env-tool_cwl-requirement_override.yaml"),
+        ],
+        {"value": "hello test env"},
+    ),
+    (
+        [
+            "--enable-dev",
+            get_data("tests/override/env-tool_cwl-requirement_override_default.yaml"),
+        ],
+        {"value": "hello test env"},
+    ),
+]
+
+
+@needs_docker
+@pytest.mark.parametrize("parameters,result", override_parameters)
+def test_overrides(parameters: List[str], result: Dict[str, str]) -> None:
+    sio = StringIO()
+
+    assert main(parameters, stdout=sio) == 0
+    assert json.loads(sio.getvalue()) == result
+
+
+failing_override_parameters = [
+    (
+        [
+            get_data("tests/override/env-tool.cwl"),
+            get_data("tests/override/env-tool_cwl-requirement_override.yaml"),
+        ],
+        "`cwl:requirements` in the input object is not part of CWL v1.0. You can "
+        "adjust to use `cwltool:overrides` instead; or you can set the cwlVersion to "
+        "v1.1",
+    ),
+    (
+        [
+            get_data("tests/override/env-tool_v1.1.0-dev1.cwl"),
+            get_data("tests/override/env-tool_cwl-requirement_override.yaml"),
+        ],
+        "Version 'v1.1.0-dev1' is a development or deprecated version.\n"
+        " Update your document to a stable version (v1.0, v1.1, v1.2) or use --enable-dev to "
+        "enable support for development and deprecated versions.",
+    ),
+    (
+        [
+            get_data(
+                "tests/override/env-tool_cwl-requirement_override_default_wrongver.yaml"
+            )
+        ],
+        "`cwl:requirements` in the input object is not part of CWL v1.0. You can "
+        "adjust to use `cwltool:overrides` instead; or you can set the cwlVersion to "
+        "v1.1 or greater.",
+    ),
+    (
+        [get_data("tests/override/env-tool_cwl-requirement_override_default.yaml")],
+        "Version 'v1.1.0-dev1' is a development or deprecated version.\n"
+        " Update your document to a stable version (v1.0, v1.1, v1.2) or use --enable-dev to "
+        "enable support for development and deprecated versions.",
+    ),
+]
+
+
+@needs_docker
+@pytest.mark.parametrize("parameters,expected_error", failing_override_parameters)
+def test_overrides_fails(parameters: List[str], expected_error: str) -> None:
+    sio = StringIO()
+
+    assert main(parameters, stderr=sio) == 1
+    stderr = sio.getvalue()
+    assert expected_error in stderr, stderr