Skip to content

Commit f99751a

Browse files
GlassOfWhiskeymr-c
authored andcommitted
Rewrite tests for CWLParameterContext
1 parent 0f82805 commit f99751a

File tree

2 files changed

+156
-142
lines changed

2 files changed

+156
-142
lines changed

tests/test_examples.py

Lines changed: 152 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import subprocess
88
import sys
99
import urllib.parse
10+
from collections.abc import MutableMapping
1011
from io import StringIO
1112
from pathlib import Path
1213
from typing import Any, cast
@@ -16,7 +17,7 @@
1617
import pytest
1718
from cwl_utils.errors import JavascriptException
1819
from cwl_utils.sandboxjs import param_re
19-
from cwl_utils.types import CWLObjectType
20+
from cwl_utils.types import CWLObjectType, CWLOutputType, CWLParameterContext
2021
from ruamel.yaml.comments import CommentedMap, CommentedSeq
2122
from schema_salad.exceptions import ValidationException
2223

@@ -37,30 +38,30 @@
3738
sys.argv = [""]
3839

3940
expression_match = [
40-
("(foo)", True),
41-
("(foo.bar)", True),
42-
("(foo['bar'])", True),
43-
('(foo["bar"])', True),
44-
("(foo.bar.baz)", True),
45-
("(foo['bar'].baz)", True),
46-
("(foo['bar']['baz'])", True),
47-
("(foo['b\\'ar']['baz'])", True),
48-
("(foo['b ar']['baz'])", True),
49-
("(foo_bar)", True),
50-
('(foo.["bar"])', False),
51-
('(.foo["bar"])', False),
52-
('(foo ["bar"])', False),
53-
('( foo["bar"])', False),
54-
("(foo[bar].baz)", False),
55-
("(foo['bar\"].baz)", False),
56-
("(foo['bar].baz)", False),
57-
("{foo}", False),
58-
("(foo.bar", False),
59-
("foo.bar)", False),
60-
("foo.b ar)", False),
61-
("foo.b'ar)", False),
62-
("(foo+bar", False),
63-
("(foo bar", False),
41+
("(inputs)", True),
42+
("(inputs.bar)", True),
43+
("(inputs['bar'])", True),
44+
('(inputs["bar"])', True),
45+
("(inputs.bar.baz)", True),
46+
("(inputs['bar'].baz)", True),
47+
("(inputs['bar']['baz'])", True),
48+
("(inputs['b\\'ar']['baz'])", True),
49+
("(inputs['b ar']['baz'])", True),
50+
("(inputs_bar)", True),
51+
('(inputs.["bar"])', False),
52+
('(.inputs["bar"])', False),
53+
('(inputs ["bar"])', False),
54+
('( inputs["bar"])', False),
55+
("(inputs[bar].baz)", False),
56+
("(inputs['bar\"].baz)", False),
57+
("(inputs['bar].baz)", False),
58+
("{inputs}", False),
59+
("(inputs.bar", False),
60+
("inputs.bar)", False),
61+
("inputs.b ar)", False),
62+
("inputs.b'ar)", False),
63+
("(inputs+bar", False),
64+
("(inputs bar", False),
6465
]
6566

6667

@@ -70,54 +71,66 @@ def test_expression_match(expression: str, expected: bool) -> None:
7071
assert (match is not None) == expected
7172

7273

73-
interpolate_input: dict[str, Any] = {
74-
"foo": {
74+
interpolate_input = CWLParameterContext(
75+
inputs={
7576
"bar": {"baz": "zab1"},
7677
"b ar": {"baz": 2},
7778
"b'ar": {"baz": True},
7879
'b"ar': {"baz": None},
7980
},
80-
"lst": ["A", "B"],
81-
}
81+
self=["A", "B"],
82+
)
8283

8384
interpolate_parameters = [
84-
("$(foo)", interpolate_input["foo"]),
85-
("$(foo.bar)", interpolate_input["foo"]["bar"]),
86-
("$(foo['bar'])", interpolate_input["foo"]["bar"]),
87-
('$(foo["bar"])', interpolate_input["foo"]["bar"]),
88-
("$(foo.bar.baz)", interpolate_input["foo"]["bar"]["baz"]),
89-
("$(foo['bar'].baz)", interpolate_input["foo"]["bar"]["baz"]),
90-
("$(foo['bar'][\"baz\"])", interpolate_input["foo"]["bar"]["baz"]),
91-
("$(foo.bar['baz'])", interpolate_input["foo"]["bar"]["baz"]),
92-
("$(foo['b\\'ar'].baz)", True),
93-
('$(foo["b\'ar"].baz)', True),
94-
("$(foo['b\\\"ar'].baz)", None),
95-
("$(lst[0])", "A"),
96-
("$(lst[1])", "B"),
97-
("$(lst.length)", 2),
98-
("$(lst['length'])", 2),
99-
("-$(foo.bar)", """-{"baz": "zab1"}"""),
100-
("-$(foo['bar'])", """-{"baz": "zab1"}"""),
101-
('-$(foo["bar"])', """-{"baz": "zab1"}"""),
102-
("-$(foo.bar.baz)", "-zab1"),
103-
("-$(foo['bar'].baz)", "-zab1"),
104-
("-$(foo['bar'][\"baz\"])", "-zab1"),
105-
("-$(foo.bar['baz'])", "-zab1"),
106-
("-$(foo['b ar'].baz)", "-2"),
107-
("-$(foo['b\\'ar'].baz)", "-true"),
108-
('-$(foo["b\\\'ar"].baz)', "-true"),
109-
("-$(foo['b\\\"ar'].baz)", "-null"),
110-
("$(foo.bar) $(foo.bar)", """{"baz": "zab1"} {"baz": "zab1"}"""),
111-
("$(foo['bar']) $(foo['bar'])", """{"baz": "zab1"} {"baz": "zab1"}"""),
112-
('$(foo["bar"]) $(foo["bar"])', """{"baz": "zab1"} {"baz": "zab1"}"""),
113-
("$(foo.bar.baz) $(foo.bar.baz)", "zab1 zab1"),
114-
("$(foo['bar'].baz) $(foo['bar'].baz)", "zab1 zab1"),
115-
("$(foo['bar'][\"baz\"]) $(foo['bar'][\"baz\"])", "zab1 zab1"),
116-
("$(foo.bar['baz']) $(foo.bar['baz'])", "zab1 zab1"),
117-
("$(foo['b ar'].baz) $(foo['b ar'].baz)", "2 2"),
118-
("$(foo['b\\'ar'].baz) $(foo['b\\'ar'].baz)", "true true"),
119-
('$(foo["b\\\'ar"].baz) $(foo["b\\\'ar"].baz)', "true true"),
120-
("$(foo['b\\\"ar'].baz) $(foo['b\\\"ar'].baz)", "null null"),
85+
("$(inputs)", interpolate_input["inputs"]),
86+
("$(inputs.bar)", interpolate_input["inputs"]["bar"]),
87+
("$(inputs['bar'])", interpolate_input["inputs"]["bar"]),
88+
('$(inputs["bar"])', interpolate_input["inputs"]["bar"]),
89+
(
90+
"$(inputs.bar.baz)",
91+
cast(MutableMapping[str, CWLOutputType], interpolate_input["inputs"]["bar"])["baz"],
92+
),
93+
(
94+
"$(inputs['bar'].baz)",
95+
cast(MutableMapping[str, CWLOutputType], interpolate_input["inputs"]["bar"])["baz"],
96+
),
97+
(
98+
"$(inputs['bar'][\"baz\"])",
99+
cast(MutableMapping[str, CWLOutputType], interpolate_input["inputs"]["bar"])["baz"],
100+
),
101+
(
102+
"$(inputs.bar['baz'])",
103+
cast(MutableMapping[str, CWLOutputType], interpolate_input["inputs"]["bar"])["baz"],
104+
),
105+
("$(inputs['b\\'ar'].baz)", True),
106+
('$(inputs["b\'ar"].baz)', True),
107+
("$(inputs['b\\\"ar'].baz)", None),
108+
("$(self[0])", "A"),
109+
("$(self[1])", "B"),
110+
("$(self.length)", 2),
111+
("$(self['length'])", 2),
112+
("-$(inputs.bar)", """-{"baz": "zab1"}"""),
113+
("-$(inputs['bar'])", """-{"baz": "zab1"}"""),
114+
('-$(inputs["bar"])', """-{"baz": "zab1"}"""),
115+
("-$(inputs.bar.baz)", "-zab1"),
116+
("-$(inputs['bar'].baz)", "-zab1"),
117+
("-$(inputs['bar'][\"baz\"])", "-zab1"),
118+
("-$(inputs.bar['baz'])", "-zab1"),
119+
("-$(inputs['b ar'].baz)", "-2"),
120+
("-$(inputs['b\\'ar'].baz)", "-true"),
121+
('-$(inputs["b\\\'ar"].baz)', "-true"),
122+
("-$(inputs['b\\\"ar'].baz)", "-null"),
123+
("$(inputs.bar) $(inputs.bar)", """{"baz": "zab1"} {"baz": "zab1"}"""),
124+
("$(inputs['bar']) $(inputs['bar'])", """{"baz": "zab1"} {"baz": "zab1"}"""),
125+
('$(inputs["bar"]) $(inputs["bar"])', """{"baz": "zab1"} {"baz": "zab1"}"""),
126+
("$(inputs.bar.baz) $(inputs.bar.baz)", "zab1 zab1"),
127+
("$(inputs['bar'].baz) $(inputs['bar'].baz)", "zab1 zab1"),
128+
("$(inputs['bar'][\"baz\"]) $(inputs['bar'][\"baz\"])", "zab1 zab1"),
129+
("$(inputs.bar['baz']) $(inputs.bar['baz'])", "zab1 zab1"),
130+
("$(inputs['b ar'].baz) $(inputs['b ar'].baz)", "2 2"),
131+
("$(inputs['b\\'ar'].baz) $(inputs['b\\'ar'].baz)", "true true"),
132+
('$(inputs["b\\\'ar"].baz) $(inputs["b\\\'ar"].baz)', "true true"),
133+
("$(inputs['b\\\"ar'].baz) $(inputs['b\\\"ar'].baz)", "null null"),
121134
]
122135

123136

@@ -128,31 +141,31 @@ def test_expression_interpolate(pattern: str, expected: Any) -> None:
128141

129142
parameter_to_expressions = [
130143
(
131-
"-$(foo)",
144+
"-$(inputs)",
132145
r"""-{"bar":{"baz":"zab1"},"b ar":{"baz":2},"b'ar":{"baz":true},"b\"ar":{"baz":null}}""",
133146
),
134-
("-$(foo.bar)", """-{"baz":"zab1"}"""),
135-
("-$(foo['bar'])", """-{"baz":"zab1"}"""),
136-
('-$(foo["bar"])', """-{"baz":"zab1"}"""),
137-
("-$(foo.bar.baz)", "-zab1"),
138-
("-$(foo['bar'].baz)", "-zab1"),
139-
("-$(foo['bar'][\"baz\"])", "-zab1"),
140-
("-$(foo.bar['baz'])", "-zab1"),
141-
("-$(foo['b ar'].baz)", "-2"),
142-
("-$(foo['b\\'ar'].baz)", "-true"),
143-
('-$(foo["b\\\'ar"].baz)', "-true"),
144-
("-$(foo['b\\\"ar'].baz)", "-null"),
145-
("$(foo.bar) $(foo.bar)", """{"baz":"zab1"} {"baz":"zab1"}"""),
146-
("$(foo['bar']) $(foo['bar'])", """{"baz":"zab1"} {"baz":"zab1"}"""),
147-
('$(foo["bar"]) $(foo["bar"])', """{"baz":"zab1"} {"baz":"zab1"}"""),
148-
("$(foo.bar.baz) $(foo.bar.baz)", "zab1 zab1"),
149-
("$(foo['bar'].baz) $(foo['bar'].baz)", "zab1 zab1"),
150-
("$(foo['bar'][\"baz\"]) $(foo['bar'][\"baz\"])", "zab1 zab1"),
151-
("$(foo.bar['baz']) $(foo.bar['baz'])", "zab1 zab1"),
152-
("$(foo['b ar'].baz) $(foo['b ar'].baz)", "2 2"),
153-
("$(foo['b\\'ar'].baz) $(foo['b\\'ar'].baz)", "true true"),
154-
('$(foo["b\\\'ar"].baz) $(foo["b\\\'ar"].baz)', "true true"),
155-
("$(foo['b\\\"ar'].baz) $(foo['b\\\"ar'].baz)", "null null"),
147+
("-$(inputs.bar)", """-{"baz":"zab1"}"""),
148+
("-$(inputs['bar'])", """-{"baz":"zab1"}"""),
149+
('-$(inputs["bar"])', """-{"baz":"zab1"}"""),
150+
("-$(inputs.bar.baz)", "-zab1"),
151+
("-$(inputs['bar'].baz)", "-zab1"),
152+
("-$(inputs['bar'][\"baz\"])", "-zab1"),
153+
("-$(inputs.bar['baz'])", "-zab1"),
154+
("-$(inputs['b ar'].baz)", "-2"),
155+
("-$(inputs['b\\'ar'].baz)", "-true"),
156+
('-$(inputs["b\\\'ar"].baz)', "-true"),
157+
("-$(inputs['b\\\"ar'].baz)", "-null"),
158+
("$(inputs.bar) $(inputs.bar)", """{"baz":"zab1"} {"baz":"zab1"}"""),
159+
("$(inputs['bar']) $(inputs['bar'])", """{"baz":"zab1"} {"baz":"zab1"}"""),
160+
('$(inputs["bar"]) $(inputs["bar"])', """{"baz":"zab1"} {"baz":"zab1"}"""),
161+
("$(inputs.bar.baz) $(inputs.bar.baz)", "zab1 zab1"),
162+
("$(inputs['bar'].baz) $(inputs['bar'].baz)", "zab1 zab1"),
163+
("$(inputs['bar'][\"baz\"]) $(inputs['bar'][\"baz\"])", "zab1 zab1"),
164+
("$(inputs.bar['baz']) $(inputs.bar['baz'])", "zab1 zab1"),
165+
("$(inputs['b ar'].baz) $(inputs['b ar'].baz)", "2 2"),
166+
("$(inputs['b\\'ar'].baz) $(inputs['b\\'ar'].baz)", "true true"),
167+
('$(inputs["b\\\'ar"].baz) $(inputs["b\\\'ar"].baz)', "true true"),
168+
("$(inputs['b\\\"ar'].baz) $(inputs['b\\\"ar'].baz)", "null null"),
156169
]
157170

158171

@@ -174,22 +187,22 @@ def test_parameter_to_expression(pattern: str, expected: Any) -> None:
174187

175188

176189
param_to_expr_interpolate_escapebehavior = (
177-
("\\$(foo.bar.baz)", "$(foo.bar.baz)", 1),
178-
("\\\\$(foo.bar.baz)", "\\zab1", 1),
179-
("\\\\\\$(foo.bar.baz)", "\\$(foo.bar.baz)", 1),
180-
("\\\\\\\\$(foo.bar.baz)", "\\\\zab1", 1),
181-
("\\$foo", "$foo", 1),
182-
("\\foo", "foo", 1),
190+
("\\$(inputs.bar.baz)", "$(inputs.bar.baz)", 1),
191+
("\\\\$(inputs.bar.baz)", "\\zab1", 1),
192+
("\\\\\\$(inputs.bar.baz)", "\\$(inputs.bar.baz)", 1),
193+
("\\\\\\\\$(inputs.bar.baz)", "\\\\zab1", 1),
194+
("\\$inputs", "$inputs", 1),
195+
("\\inputs", "inputs", 1),
183196
("\\x", "x", 1),
184197
("\\\\x", "\\x", 1),
185198
("\\\\\\x", "\\x", 1),
186199
("\\\\\\\\x", "\\\\x", 1),
187-
("\\$(foo.bar.baz)", "$(foo.bar.baz)", 2),
188-
("\\\\$(foo.bar.baz)", "\\zab1", 2),
189-
("\\\\\\$(foo.bar.baz)", "\\$(foo.bar.baz)", 2),
190-
("\\\\\\\\$(foo.bar.baz)", "\\\\zab1", 2),
191-
("\\$foo", "\\$foo", 2),
192-
("\\foo", "\\foo", 2),
200+
("\\$(inputs.bar.baz)", "$(inputs.bar.baz)", 2),
201+
("\\\\$(inputs.bar.baz)", "\\zab1", 2),
202+
("\\\\\\$(inputs.bar.baz)", "\\$(inputs.bar.baz)", 2),
203+
("\\\\\\\\$(inputs.bar.baz)", "\\\\zab1", 2),
204+
("\\$inputs", "\\$inputs", 2),
205+
("\\inputs", "\\inputs", 2),
193206
("\\x", "\\x", 2),
194207
("\\\\x", "\\x", 2),
195208
("\\\\\\x", "\\\\x", 2),
@@ -219,32 +232,32 @@ def test_parameter_to_expression_interpolate_escapebehavior(
219232

220233

221234
interpolate_bad_parameters = [
222-
("$(fooz)"),
223-
("$(foo.barz)"),
224-
("$(foo['barz'])"),
225-
('$(foo["barz"])'),
226-
("$(foo.bar.bazz)"),
227-
("$(foo['bar'].bazz)"),
228-
("$(foo['bar'][\"bazz\"])"),
229-
("$(foo.bar['bazz'])"),
230-
("$(foo['b\\'ar'].bazz)"),
231-
('$(foo["b\'ar"].bazz)'),
232-
("$(foo['b\\\"ar'].bazz)"),
233-
("$(lst[O])"), # not "0" the number, but the letter O
234-
("$(lst[2])"),
235-
("$(lst.lengthz)"),
236-
("$(lst['lengthz'])"),
237-
("-$(foo.barz)"),
238-
("-$(foo['barz'])"),
239-
('-$(foo["barz"])'),
240-
("-$(foo.bar.bazz)"),
241-
("-$(foo['bar'].bazz)"),
242-
("-$(foo['bar'][\"bazz\"])"),
243-
("-$(foo.bar['bazz'])"),
244-
("-$(foo['b ar'].bazz)"),
245-
("-$(foo['b\\'ar'].bazz)"),
246-
('-$(foo["b\\\'ar"].bazz)'),
247-
("-$(foo['b\\\"ar'].bazz)"),
235+
("$(inputsz)"),
236+
("$(inputs.barz)"),
237+
("$(inputs['barz'])"),
238+
('$(inputs["barz"])'),
239+
("$(inputs.bar.bazz)"),
240+
("$(inputs['bar'].bazz)"),
241+
("$(inputs['bar'][\"bazz\"])"),
242+
("$(inputs.bar['bazz'])"),
243+
("$(inputs['b\\'ar'].bazz)"),
244+
('$(inputs["b\'ar"].bazz)'),
245+
("$(inputs['b\\\"ar'].bazz)"),
246+
("$(self[O])"), # not "0" the number, but the letter O
247+
("$(self[2])"),
248+
("$(self.lengthz)"),
249+
("$(self['lengthz'])"),
250+
("-$(inputs.barz)"),
251+
("-$(inputs['barz'])"),
252+
('-$(inputs["barz"])'),
253+
("-$(inputs.bar.bazz)"),
254+
("-$(inputs['bar'].bazz)"),
255+
("-$(inputs['bar'][\"bazz\"])"),
256+
("-$(inputs.bar['bazz'])"),
257+
("-$(inputs['b ar'].bazz)"),
258+
("-$(inputs['b\\'ar'].bazz)"),
259+
('-$(inputs["b\\\'ar"].bazz)'),
260+
("-$(inputs['b\\\"ar'].bazz)"),
248261
]
249262

250263

@@ -255,22 +268,22 @@ def test_expression_interpolate_failures(pattern: str) -> None:
255268

256269

257270
interpolate_escapebehavior = (
258-
("\\$(foo.bar.baz)", "$(foo.bar.baz)", 1),
259-
("\\\\$(foo.bar.baz)", "\\zab1", 1),
260-
("\\\\\\$(foo.bar.baz)", "\\$(foo.bar.baz)", 1),
261-
("\\\\\\\\$(foo.bar.baz)", "\\\\zab1", 1),
262-
("\\$foo", "$foo", 1),
263-
("\\foo", "foo", 1),
271+
("\\$(inputs.bar.baz)", "$(inputs.bar.baz)", 1),
272+
("\\\\$(inputs.bar.baz)", "\\zab1", 1),
273+
("\\\\\\$(inputs.bar.baz)", "\\$(inputs.bar.baz)", 1),
274+
("\\\\\\\\$(inputs.bar.baz)", "\\\\zab1", 1),
275+
("\\$inputs", "$inputs", 1),
276+
("\\inputs", "inputs", 1),
264277
("\\x", "x", 1),
265278
("\\\\x", "\\x", 1),
266279
("\\\\\\x", "\\x", 1),
267280
("\\\\\\\\x", "\\\\x", 1),
268-
("\\$(foo.bar.baz)", "$(foo.bar.baz)", 2),
269-
("\\\\$(foo.bar.baz)", "\\zab1", 2),
270-
("\\\\\\$(foo.bar.baz)", "\\$(foo.bar.baz)", 2),
271-
("\\\\\\\\$(foo.bar.baz)", "\\\\zab1", 2),
272-
("\\$foo", "\\$foo", 2),
273-
("\\foo", "\\foo", 2),
281+
("\\$(inputs.bar.baz)", "$(inputs.bar.baz)", 2),
282+
("\\\\$(inputs.bar.baz)", "\\zab1", 2),
283+
("\\\\\\$(inputs.bar.baz)", "\\$(inputs.bar.baz)", 2),
284+
("\\\\\\\\$(inputs.bar.baz)", "\\\\zab1", 2),
285+
("\\$inputs", "\\$inputs", 2),
286+
("\\inputs", "\\inputs", 2),
274287
("\\x", "\\x", 2),
275288
("\\\\x", "\\x", 2),
276289
("\\\\\\x", "\\\\x", 2),

tests/test_secrets.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import shutil
22
import tempfile
3-
from collections.abc import Callable
3+
from collections.abc import Callable, MutableMapping
44
from io import StringIO
5+
from typing import cast
56

67
import pytest
7-
from cwl_utils.types import CWLObjectType
8+
from cwl_utils.types import CWLObjectType, CWLOutputType
89

910
from cwltool.main import main
1011
from cwltool.secrets import SecretStore
@@ -27,7 +28,7 @@ def test_obscuring(secrets: tuple[SecretStore, CWLObjectType]) -> None:
2728
storage, obscured = secrets
2829
assert obscured["foo"] != "bar"
2930
assert obscured["baz"] == "quux"
30-
result = storage.retrieve(obscured)
31+
result = cast(MutableMapping[str, CWLOutputType], storage.retrieve(obscured))
3132
assert isinstance(result, dict) and result["foo"] == "bar"
3233

3334

0 commit comments

Comments
 (0)