Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/cwltool/tests/test_toolargparse.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
| author | shellac |
|---|---|
| date | Mon, 22 Mar 2021 18:12:50 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4f3585e2f14b |
|---|---|
| 1 import argparse | |
| 2 from io import StringIO | |
| 3 from pathlib import Path | |
| 4 from typing import Callable | |
| 5 | |
| 6 import pytest | |
| 7 | |
| 8 import cwltool.executors | |
| 9 from cwltool.argparser import generate_parser | |
| 10 from cwltool.context import LoadingContext | |
| 11 from cwltool.load_tool import load_tool | |
| 12 from cwltool.main import main | |
| 13 | |
| 14 from .util import get_data, needs_docker | |
| 15 | |
| 16 script_a = """ | |
| 17 #!/usr/bin/env cwl-runner | |
| 18 cwlVersion: v1.0 | |
| 19 class: CommandLineTool | |
| 20 doc: "This tool is developed for SMC-RNA Challenge for detecting gene fusions (STAR fusion)" | |
| 21 inputs: | |
| 22 #Give it a list of input files | |
| 23 - id: input | |
| 24 type: File | |
| 25 inputBinding: | |
| 26 position: 0 | |
| 27 outputs: | |
| 28 - id: output | |
| 29 type: File | |
| 30 outputBinding: | |
| 31 glob: test.txt | |
| 32 stdout: test.txt | |
| 33 baseCommand: [cat] | |
| 34 """ | |
| 35 | |
| 36 script_b = """ | |
| 37 #!/usr/bin/env cwl-runner | |
| 38 cwlVersion: v1.0 | |
| 39 class: CommandLineTool | |
| 40 inputs: | |
| 41 - id: bdg | |
| 42 type: "boolean" | |
| 43 outputs: | |
| 44 - id: output | |
| 45 type: File | |
| 46 outputBinding: | |
| 47 glob: foo | |
| 48 baseCommand: | |
| 49 - echo | |
| 50 - "ff" | |
| 51 stdout: foo | |
| 52 """ | |
| 53 | |
| 54 script_c = """ | |
| 55 #!/usr/bin/env cwl-runner | |
| 56 | |
| 57 cwlVersion: v1.0 | |
| 58 class: ExpressionTool | |
| 59 | |
| 60 inputs: | |
| 61 foo: | |
| 62 type: | |
| 63 type: record | |
| 64 fields: | |
| 65 one: File | |
| 66 two: string | |
| 67 | |
| 68 expression: $(inputs.foo.two) | |
| 69 | |
| 70 outputs: [] | |
| 71 """ | |
| 72 | |
| 73 scripts_argparse_params = [ | |
| 74 ("help", script_a, lambda x: ["--debug", x, "--input", get_data("tests/echo.cwl")]), | |
| 75 ("boolean", script_b, lambda x: [x, "--help"]), | |
| 76 ("help with c", script_c, lambda x: [x, "--help"]), | |
| 77 ( | |
| 78 "foo with c", | |
| 79 script_c, | |
| 80 lambda x: [x, "--foo.one", get_data("tests/echo.cwl"), "--foo.two", "test"], | |
| 81 ), | |
| 82 ] | |
| 83 | |
| 84 | |
| 85 @needs_docker | |
| 86 @pytest.mark.parametrize("name,script_contents,params", scripts_argparse_params) | |
| 87 def test_argparse( | |
| 88 name: str, script_contents: str, params: Callable[[str], str], tmp_path: Path | |
| 89 ) -> None: | |
| 90 script_name = tmp_path / "script" | |
| 91 try: | |
| 92 with script_name.open(mode="w") as script: | |
| 93 script.write(script_contents) | |
| 94 | |
| 95 my_params = ["--outdir", str(tmp_path / "outdir")] | |
| 96 my_params.extend(params(script.name)) | |
| 97 assert main(my_params) == 0, name | |
| 98 | |
| 99 except SystemExit as err: | |
| 100 assert err.code == 0, name | |
| 101 | |
| 102 | |
| 103 def test_dont_require_inputs(tmp_path: Path) -> None: | |
| 104 stream = StringIO() | |
| 105 | |
| 106 script_name = tmp_path / "script" | |
| 107 try: | |
| 108 with script_name.open(mode="w") as script: | |
| 109 script.write(script_a) | |
| 110 | |
| 111 assert ( | |
| 112 main( | |
| 113 argsl=["--debug", str(script_name), "--input", str(script_name)], | |
| 114 executor=cwltool.executors.NoopJobExecutor(), | |
| 115 stdout=stream, | |
| 116 ) | |
| 117 == 0 | |
| 118 ) | |
| 119 assert ( | |
| 120 main( | |
| 121 argsl=["--debug", str(script_name)], | |
| 122 executor=cwltool.executors.NoopJobExecutor(), | |
| 123 stdout=stream, | |
| 124 ) | |
| 125 == 2 | |
| 126 ) | |
| 127 assert ( | |
| 128 main( | |
| 129 argsl=["--debug", str(script_name)], | |
| 130 executor=cwltool.executors.NoopJobExecutor(), | |
| 131 input_required=False, | |
| 132 stdout=stream, | |
| 133 ) | |
| 134 == 0 | |
| 135 ) | |
| 136 | |
| 137 except SystemExit as err: | |
| 138 assert err.code == 0, script_name if script else None | |
| 139 | |
| 140 | |
| 141 def test_argparser_with_doc() -> None: | |
| 142 """The `desription` field is set if `doc` field is provided.""" | |
| 143 loadingContext = LoadingContext() | |
| 144 tool = load_tool(get_data("tests/with_doc.cwl"), loadingContext) | |
| 145 p = argparse.ArgumentParser() | |
| 146 parser = generate_parser(p, tool, {}, [], False) | |
| 147 assert parser.description is not None | |
| 148 | |
| 149 | |
| 150 def test_argparser_without_doc() -> None: | |
| 151 """The `desription` field is None if `doc` field is not provided.""" | |
| 152 loadingContext = LoadingContext() | |
| 153 tool = load_tool(get_data("tests/without_doc.cwl"), loadingContext) | |
| 154 p = argparse.ArgumentParser() | |
| 155 parser = generate_parser(p, tool, {}, [], False) | |
| 156 assert parser.description is None |
