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

skip $import: with a #local-ref; better handle $import and "run" references to parent directories #92

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
Open
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
include MANIFEST.in Makefile
include cwlupgrader/py.typed
recursive-include testdata *.cwl
recursive-include testdata *.yml
208 changes: 132 additions & 76 deletions cwlupgrader/main.py

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
packages=["cwlupgrader", "cwlupgrader.tests"],
include_package_data=True,
package_dir={"cwlupgrader.tests": "tests"},
package_data={"cwlupgrader.tests": ["../testdata/**/*.cwl"]},
package_data={
"cwlupgrader.tests": ["../testdata/**/*.cwl", "../testdata/**/*.yml"]
},
install_requires=[
"setuptools",
"ruamel.yaml >= 0.16.0, < 0.18",
Expand Down
120 changes: 120 additions & 0 deletions testdata/v1.0/params_inc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
- id: t1
type: Any
outputBinding:
outputEval: $(inputs)
- id: t2
type: Any
outputBinding:
outputEval: $(inputs.bar)
- id: t3
type: Any
outputBinding:
outputEval: $(inputs['bar'])
- id: t4
type: Any
outputBinding:
outputEval: $(inputs["bar"])

- id: t5
type: Any
outputBinding:
outputEval: $(inputs.bar.baz)
- id: t6
type: Any
outputBinding:
outputEval: $(inputs['bar'].baz)
- id: t7
type: Any
outputBinding:
outputEval: $(inputs['bar']["baz"])
- id: t8
type: Any
outputBinding:
outputEval: $(inputs.bar['baz'])

- id: t9
type: Any
outputBinding:
outputEval: $(inputs.bar['b az'])
- id: t10
type: Any
outputBinding:
outputEval: $(inputs.bar['b\'az'])
- id: t11
type: Any
outputBinding:
outputEval: $(inputs.bar["b'az"])
- id: t12
type: "null"
outputBinding:
outputEval: $(inputs.bar['b"az'])

- id: t13
type: Any
outputBinding:
outputEval: -$(inputs.bar.baz)
- id: t14
type: Any
outputBinding:
outputEval: -$(inputs['bar'].baz)
- id: t15
type: Any
outputBinding:
outputEval: -$(inputs['bar']["baz"])
- id: t16
type: Any
outputBinding:
outputEval: -$(inputs.bar['baz'])

- id: t17
type: Any
outputBinding:
outputEval: $(inputs.bar.baz) $(inputs.bar.baz)
- id: t18
type: Any
outputBinding:
outputEval: $(inputs['bar'].baz) $(inputs['bar'].baz)
- id: t19
type: Any
outputBinding:
outputEval: $(inputs['bar']["baz"]) $(inputs['bar']["baz"])
- id: t20
type: Any
outputBinding:
outputEval: $(inputs.bar['baz']) $(inputs.bar['baz'])

- id: t21
type: Any
outputBinding:
outputEval: $(inputs.bar['b az']) $(inputs.bar['b az'])
- id: t22
type: Any
outputBinding:
outputEval: $(inputs.bar['b\'az']) $(inputs.bar['b\'az'])
- id: t23
type: Any
outputBinding:
outputEval: $(inputs.bar["b'az"]) $(inputs.bar["b'az"])
- id: t24
type: Any
outputBinding:
outputEval: $(inputs.bar['b"az']) $(inputs.bar['b"az'])

- id: t25
type: Any
outputBinding:
outputEval: $(inputs.bar.buz[1])
- id: t26
type: Any
outputBinding:
outputEval: $(inputs.bar.buz[1]) $(inputs.bar.buz[1])

- id: t27
type: "null"
outputBinding:
outputEval: $(null)

- id: t28
type: int
outputBinding:
outputEval: $(inputs.bar.buz.length)
19 changes: 19 additions & 0 deletions testdata/v1.0/subdir/params.cwl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class: CommandLineTool
cwlVersion: v1.0
hints:
ResourceRequirement:
ramMin: 8
inputs:
bar:
type: Any
default: {
"baz": "zab1",
"b az": 2,
"b'az": true,
'b"az': null,
"buz": ['a', 'b', 'c']
}

outputs: {"$import": ../params_inc.yml}

baseCommand: "true"
120 changes: 120 additions & 0 deletions testdata/v1.1/params_inc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
- id: t1
type: Any
outputBinding:
outputEval: $(inputs)
- id: t2
type: Any
outputBinding:
outputEval: $(inputs.bar)
- id: t3
type: Any
outputBinding:
outputEval: $(inputs['bar'])
- id: t4
type: Any
outputBinding:
outputEval: $(inputs["bar"])

- id: t5
type: Any
outputBinding:
outputEval: $(inputs.bar.baz)
- id: t6
type: Any
outputBinding:
outputEval: $(inputs['bar'].baz)
- id: t7
type: Any
outputBinding:
outputEval: $(inputs['bar']["baz"])
- id: t8
type: Any
outputBinding:
outputEval: $(inputs.bar['baz'])

- id: t9
type: Any
outputBinding:
outputEval: $(inputs.bar['b az'])
- id: t10
type: Any
outputBinding:
outputEval: $(inputs.bar['b\'az'])
- id: t11
type: Any
outputBinding:
outputEval: $(inputs.bar["b'az"])
- id: t12
type: "null"
outputBinding:
outputEval: $(inputs.bar['b"az'])

- id: t13
type: Any
outputBinding:
outputEval: -$(inputs.bar.baz)
- id: t14
type: Any
outputBinding:
outputEval: -$(inputs['bar'].baz)
- id: t15
type: Any
outputBinding:
outputEval: -$(inputs['bar']["baz"])
- id: t16
type: Any
outputBinding:
outputEval: -$(inputs.bar['baz'])

- id: t17
type: Any
outputBinding:
outputEval: $(inputs.bar.baz) $(inputs.bar.baz)
- id: t18
type: Any
outputBinding:
outputEval: $(inputs['bar'].baz) $(inputs['bar'].baz)
- id: t19
type: Any
outputBinding:
outputEval: $(inputs['bar']["baz"]) $(inputs['bar']["baz"])
- id: t20
type: Any
outputBinding:
outputEval: $(inputs.bar['baz']) $(inputs.bar['baz'])

- id: t21
type: Any
outputBinding:
outputEval: $(inputs.bar['b az']) $(inputs.bar['b az'])
- id: t22
type: Any
outputBinding:
outputEval: $(inputs.bar['b\'az']) $(inputs.bar['b\'az'])
- id: t23
type: Any
outputBinding:
outputEval: $(inputs.bar["b'az"]) $(inputs.bar["b'az"])
- id: t24
type: Any
outputBinding:
outputEval: $(inputs.bar['b"az']) $(inputs.bar['b"az'])

- id: t25
type: Any
outputBinding:
outputEval: $(inputs.bar.buz[1])
- id: t26
type: Any
outputBinding:
outputEval: $(inputs.bar.buz[1]) $(inputs.bar.buz[1])

- id: t27
type: "null"
outputBinding:
outputEval: $(null)

- id: t28
type: int
outputBinding:
outputEval: $(inputs.bar.buz.length)
18 changes: 18 additions & 0 deletions testdata/v1.1/subdir/params.cwl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env cwl-runner
cwlVersion: v1.1
class: CommandLineTool
requirements:
NetworkAccess:
networkAccess: true
LoadListingRequirement:
loadListing: deep_listing
hints:
ResourceRequirement:
ramMin: 8
inputs:
bar:
type: Any
default: {"baz": "zab1", "b az": 2, "b'az": true, 'b"az': null, "buz": ['a', 'b',
'c']}
baseCommand: "true"
outputs: {"$import": ../params_inc.yml}
14 changes: 7 additions & 7 deletions tests/test_complete.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,54 +37,54 @@ def test_draft3_tool_long_form_arrays(tmp_path: Path) -> None:
def test_invalid_target(tmp_path: Path) -> None:
"""Test for invalid target version"""
doc = load_cwl_document(get_data("testdata/v1.0/listing_deep1.cwl"))
result = upgrade_document(doc, str(tmp_path), "invalid-version")
result = upgrade_document(doc, tmp_path, tmp_path, "invalid-version")
assert result is None


def test_v1_0_to_v1_1_load_listing(tmp_path: Path) -> None:
"""Basic CWL v1.0 to CWL v1.1 test with LoadListingRequirement (map notation)."""
doc = load_cwl_document(get_data("testdata/v1.0/listing_deep1.cwl"))
upgraded = upgrade_document(doc, str(tmp_path), "v1.1")
upgraded = upgrade_document(doc, tmp_path, tmp_path, "v1.1")
expected = load_cwl_document(get_data("testdata/v1.1/listing_deep1.cwl"))
assert upgraded == expected


def test_v1_0_to_v1_1_load_listing_arr(tmp_path: Path) -> None:
"""Basic CWL v1.0 to CWL v1.1 test with LoadListingRequirement (array notation)."""
doc = load_cwl_document(get_data("testdata/v1.0/listing_deep1-arr.cwl"))
upgraded = upgrade_document(doc, str(tmp_path), "v1.1")
upgraded = upgrade_document(doc, tmp_path, tmp_path, "v1.1")
expected = load_cwl_document(get_data("testdata/v1.1/listing_deep1-arr.cwl"))
assert upgraded == expected


def test_v1_0_to_v1_1_network_access(tmp_path: Path) -> None:
"""Basic CWL v1.0 to CWL v1.1 test with NetworkAccess."""
doc = load_cwl_document(get_data("testdata/v1.0/networkaccess.cwl"))
upgraded = upgrade_document(doc, str(tmp_path), "v1.1")
upgraded = upgrade_document(doc, tmp_path, tmp_path, "v1.1")
expected = load_cwl_document(get_data("testdata/v1.1/networkaccess.cwl"))
assert upgraded == expected


def test_v1_1_to_v1_2(tmp_path: Path) -> None:
"""Basic CWL v1.1 to CWL v1.2 test."""
doc = load_cwl_document(get_data("testdata/v1.1/listing_deep1.cwl"))
upgraded = upgrade_document(doc, str(tmp_path), "v1.2")
upgraded = upgrade_document(doc, tmp_path, tmp_path, "v1.2")
expected = load_cwl_document(get_data("testdata/v1.2/listing_deep1.cwl"))
assert upgraded == expected


def test_v1_2_to_v1_2(tmp_path: Path) -> None:
"""CWL v1.2 to CWL v1.2 no change test."""
doc = load_cwl_document(get_data("testdata/v1.2/networkaccess.cwl"))
upgraded = upgrade_document(doc, str(tmp_path), "v1.2")
upgraded = upgrade_document(doc, tmp_path, tmp_path, "v1.2")
expected = load_cwl_document(get_data("testdata/v1.2/networkaccess.cwl"))
assert upgraded == expected


def test_v1_2_to_latest(tmp_path: Path) -> None:
"""CWL v1.2 to latest no change test."""
doc = load_cwl_document(get_data("testdata/v1.2/networkaccess.cwl"))
upgraded = upgrade_document(doc, str(tmp_path), "latest")
upgraded = upgrade_document(doc, tmp_path, tmp_path, "latest")
expected = load_cwl_document(get_data("testdata/v1.2/networkaccess.cwl"))
assert upgraded == expected

Expand Down
Loading