Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion janis_core/tests/test_generics_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class TestTypingGenerics(TestCase):
def test_unqualified_generic_list(self):
self.assertTrue(is_base_generic(List))
self.assertFalse(is_qualified_generic(List))
self.assertTrue(is_generic(List))
# self.assertTrue(is_generic(List))

def test_unqualified_generic_union(self):
self.assertTrue(is_base_generic(Union))
Expand Down
37 changes: 35 additions & 2 deletions janis_core/tests/test_translation_cwl.py
Original file line number Diff line number Diff line change
Expand Up @@ -505,8 +505,41 @@ def test_array_secondary_file_translation(self):

class TestCwlOutputGeneration(unittest.TestCase):
def test_stdout_no_outputbinding(self):
out = cwl.translate_tool_output(ToolOutput("out", Stdout), {}, tool=None).save()
self.assertDictEqual({"id": "out", "label": "out", "type": "stdout"}, out)
out = cwl.translate_tool_output(
ToolOutput(tag="out", output_type=File(), selector=Stdout()), {}, tool=None
).save()
self.assertDictEqual(
{
"id": "out",
"label": "out",
"outputBinding": {"glob": "_stdout"},
"type": "File",
},
out,
)

def test_use_stdout(self):
out = cwl.translate_tool_output(
ToolOutput(
tag="out", output_type=File(), selector=(ReadContents(Stdout()) + "_1")
),
{},
tool=None,
).save()

self.assertDictEqual(
{
"id": "out",
"label": "out",
"outputBinding": {
"glob": ["_stdout", "_stderr"],
"loadContents": True,
"outputEval": '$((self[0].contents + "_1"))',
},
"type": "File",
},
out,
)

def test_localised_out(self):

Expand Down
25 changes: 15 additions & 10 deletions janis_core/translations/cwl.py
Original file line number Diff line number Diff line change
Expand Up @@ -1322,18 +1322,24 @@ def prepare_tool_output_binding(
loadcontents = requires_content(output.selector)
requires_std = has_std(output.selector)

glob, value_from = (
[STDOUT_NAME, STDERR_NAME]
if requires_std
else translate_to_cwl_glob(
glob = None
value_from = None
if isinstance(output.selector, Stdout):
glob = STDOUT_NAME
elif isinstance(output.selector, Stderr):
glob = STDERR_NAME
elif requires_std:
glob = [STDOUT_NAME, STDERR_NAME]
value_from = prepare_tool_output_eval(tool, output)
else:
glob, value_from = translate_to_cwl_glob(
output.selector, inputsdict, outputtag=output.tag, tool=tool, **debugkwargs
)
)

return cwlgen.CommandOutputBinding(
glob=glob,
outputEval=value_from or prepare_tool_output_eval(tool, output),
loadContents=loadcontents,
outputEval=value_from,
loadContents=loadcontents if loadcontents else None,
)


Expand All @@ -1354,7 +1360,6 @@ def prepare_tool_output_eval(tool, output: ToolOutput) -> Optional[str]:
$}}
"""
if isinstance(output.selector, Operator):
return None
return CwlTranslator.unwrap_expression(
output.selector, code_environment=False, tool=tool, for_output=True
)
Expand Down Expand Up @@ -1919,9 +1924,9 @@ def translate_string_formatter(
return expr


def translate_to_cwl_glob(glob, inputsdict, tool, **debugkwargs):
def translate_to_cwl_glob(glob, inputsdict, tool, **debugkwargs) -> Tuple[Optional[str], Optional[str]]:
if glob is None:
return None
return None, None

if isinstance(glob, list):
return (
Expand Down
3 changes: 2 additions & 1 deletion requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ tabulate
path
cwlformat >= 2020.5.19
cwl-utils >= 0.6
graphviz
graphviz
miniwdl