Skip to content

Commit 478d45a

Browse files
committed
trust given secondaryFiles if !discover_secondaryFiles
This is needed for toil-cwl-runner (and others) as some secondaryFile expressions can modify other entries in a way that would cause them to not pass validatation a second time Example conformance test: command_input_file_expression: Confirm CommandInputParameter expression can receive a File object
1 parent a265968 commit 478d45a

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

cwltool/builder.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,13 @@ def _capture_files(f: CWLObjectType) -> CWLObjectType:
443443
if "secondaryFiles" in schema:
444444
if "secondaryFiles" not in datum:
445445
datum["secondaryFiles"] = []
446-
for num, sf_entry in enumerate(aslist(schema["secondaryFiles"])):
446+
sf_schema = aslist(schema["secondaryFiles"])
447+
elif not discover_secondaryFiles:
448+
sf_schema = [] # trust the inputs
449+
else:
450+
sf_schema = aslist(schema["secondaryFiles"])
451+
452+
for num, sf_entry in enumerate(sf_schema):
447453
if "required" in sf_entry and sf_entry["required"] is not None:
448454
required_result = self.do_eval(
449455
sf_entry["required"], context=datum
@@ -452,15 +458,10 @@ def _capture_files(f: CWLObjectType) -> CWLObjectType:
452458
isinstance(required_result, bool)
453459
or required_result is None
454460
):
455-
if (
456-
aslist(schema["secondaryFiles"])
457-
== schema["secondaryFiles"]
458-
):
459-
sf_item: Any = cast(
460-
List[Any], schema["secondaryFiles"]
461-
)[num]
461+
if sf_schema == schema["secondaryFiles"]:
462+
sf_item: Any = sf_schema[num]
462463
else:
463-
sf_item = schema["secondaryFiles"]
464+
sf_item = sf_schema
464465
raise SourceLine(
465466
sf_item, "required", WorkflowException, debug
466467
).makeError(

0 commit comments

Comments
 (0)