Skip to content

Commit d1a66eb

Browse files
authored
Merge pull request #22 from simleo/formal_param_names
Set param names to those expected by CWL
2 parents 361a258 + ccfec4e commit d1a66eb

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/runcrate/convert.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ def add_params(self, crate, cwl_params):
352352
for cwl_p in cwl_params:
353353
p_id = get_relative_uri(cwl_p.id)
354354
properties = properties_from_cwl_param(cwl_p)
355-
properties["name"] = get_fragment(p_id)
355+
properties["name"] = p_id.rsplit("/", 1)[-1]
356356
p = crate.add(ContextEntity(crate, p_id, properties=properties))
357357
params.append(p)
358358
return params
@@ -474,12 +474,12 @@ def add_action_params(self, crate, activity, to_wf_p, ptype="usage"):
474474
if isinstance(value, dict):
475475
value = [crate.add(ContextEntity(crate, f"#pv-{k}/{nk}", properties={
476476
"@type": "PropertyValue",
477-
"name": f"{k}/{nk}",
477+
"name": nk,
478478
"value": nv,
479479
})) for nk, nv in value.items()]
480480
action_p = crate.add(ContextEntity(crate, f"#pv-{k}", properties={
481481
"@type": "PropertyValue",
482-
"name": k,
482+
"name": k.rsplit("/", 1)[-1],
483483
}))
484484
action_p["value"] = value
485485
action_p["exampleOfWork"] = list(set(

tests/test_cwlprov_crate_builder.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,14 @@ def test_revsort(data_dir, tmpdir):
5656
for entity in inputs + outputs:
5757
assert "FormalParameter" in entity.type
5858
input_map = {_.id.rsplit("/", 1)[-1]: _ for _ in inputs}
59+
assert input_map["input"]["name"] == "input"
5960
assert input_map["input"]["additionalType"] == "File"
6061
assert "encodingFormat" in input_map["input"]
6162
assert input_map["input"]["defaultValue"] == "file:///home/stain/src/cwltool/tests/wf/hello.txt"
63+
assert input_map["reverse_sort"]["name"] == "reverse_sort"
6264
assert input_map["reverse_sort"]["additionalType"] == "Boolean"
6365
assert input_map["reverse_sort"]["defaultValue"] == "True"
66+
assert outputs[0]["name"] == "output"
6467
assert outputs[0]["additionalType"] == "File"
6568
assert workflow["programmingLanguage"].id == CWL_ID
6669
sel = [_ for _ in crate.contextual_entities if "OrganizeAction" in _.type]
@@ -220,19 +223,30 @@ def test_param_types(data_dir, tmpdir):
220223
for entity in inputs + outputs:
221224
assert "FormalParameter" in entity.type
222225
input_map = {_.id.rsplit("/", 1)[-1]: _ for _ in inputs}
226+
assert input_map["in_array"]["name"] == "in_array"
223227
assert input_map["in_array"]["additionalType"] == "Text"
224228
assert input_map["in_array"]["multipleValues"] == "True"
229+
assert input_map["in_any"]["name"] == "in_any"
225230
assert input_map["in_any"]["additionalType"] == "DataType"
231+
assert input_map["in_str"]["name"] == "in_str"
226232
assert input_map["in_str"]["additionalType"] == "Text"
233+
assert input_map["in_bool"]["name"] == "in_bool"
227234
assert input_map["in_bool"]["additionalType"] == "Boolean"
235+
assert input_map["in_int"]["name"] == "in_int"
228236
assert input_map["in_int"]["additionalType"] == "Integer"
237+
assert input_map["in_long"]["name"] == "in_long"
229238
assert input_map["in_long"]["additionalType"] == "Integer"
239+
assert input_map["in_float"]["name"] == "in_float"
230240
assert input_map["in_float"]["additionalType"] == "Float"
241+
assert input_map["in_double"]["name"] == "in_double"
231242
assert input_map["in_double"]["additionalType"] == "Float"
243+
assert input_map["in_enum"]["name"] == "in_enum"
232244
assert input_map["in_enum"]["additionalType"] == "Text"
233245
assert input_map["in_enum"]["valuePattern"] == "A|B"
246+
assert input_map["in_record"]["name"] == "in_record"
234247
assert input_map["in_record"]["additionalType"] == "PropertyValue"
235248
assert input_map["in_record"]["multipleValues"] == "True"
249+
assert input_map["in_multi"]["name"] == "in_multi"
236250
assert set(input_map["in_multi"]["additionalType"]) == {"Integer", "Float"}
237251
assert input_map["in_multi"]["defaultValue"] == "9.99"
238252
assert input_map["in_multi"]["valueRequired"] == "False"
@@ -246,21 +260,34 @@ def test_param_types(data_dir, tmpdir):
246260
for obj in objects:
247261
assert "PropertyValue" in obj.type
248262
obj_map = {_.id.rsplit("/", 1)[-1]: _ for _ in objects}
263+
assert obj_map["in_array"]["name"] == "in_array"
249264
assert obj_map["in_array"]["value"] == ["foo", "bar"]
265+
assert obj_map["in_any"]["name"] == "in_any"
250266
assert obj_map["in_any"]["value"] == "tar"
267+
assert obj_map["in_str"]["name"] == "in_str"
251268
assert obj_map["in_str"]["value"] == "spam"
269+
assert obj_map["in_bool"]["name"] == "in_bool"
252270
assert obj_map["in_bool"]["value"] == "True"
271+
assert obj_map["in_int"]["name"] == "in_int"
253272
assert obj_map["in_int"]["value"] == "42"
273+
assert obj_map["in_long"]["name"] == "in_long"
254274
assert obj_map["in_long"]["value"] == "420"
275+
assert obj_map["in_float"]["name"] == "in_float"
255276
assert obj_map["in_float"]["value"] == "3.14"
277+
assert obj_map["in_double"]["name"] == "in_double"
256278
assert obj_map["in_double"]["value"] == "3.142"
279+
assert obj_map["in_enum"]["name"] == "in_enum"
257280
assert obj_map["in_enum"]["value"] == "B"
258281
record_pv = obj_map["in_record"]
282+
assert record_pv["name"] == "in_record"
259283
v_A = crate.dereference(f"{record_pv.id}/in_record_A")
284+
assert v_A["name"] == "in_record_A"
260285
assert v_A["value"] == "Tom"
261286
v_B = crate.dereference(f"{record_pv.id}/in_record_B")
287+
assert v_B["name"] == "in_record_B"
262288
assert v_B["value"] == "Jerry"
263289
assert set(record_pv["value"]) == {v_A, v_B}
290+
assert obj_map["in_multi"]["name"] == "in_multi"
264291
assert obj_map["in_multi"]["value"] == "9.99"
265292
results = action["result"]
266293
assert len(results) == 1

0 commit comments

Comments
 (0)