Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/cwltool/tests/test_toolargparse.py @ 2:6af9afd405e9 draft
"planemo upload commit 0a63dd5f4d38a1f6944587f52a8cd79874177fc1"
| author | shellac |
|---|---|
| date | Thu, 14 May 2020 14:56:58 -0400 |
| parents | 26e78fe6e8c4 |
| children |
comparison
equal
deleted
inserted
replaced
| 1:75ca89e9b81c | 2:6af9afd405e9 |
|---|---|
| 1 import os | |
| 2 import sys | |
| 3 from tempfile import NamedTemporaryFile | |
| 4 from io import BytesIO, StringIO | |
| 5 | |
| 6 import pytest | |
| 7 from cwltool.main import main | |
| 8 import cwltool.executors | |
| 9 | |
| 10 from .util import get_data, needs_docker | |
| 11 | |
| 12 script_a = ''' | |
| 13 #!/usr/bin/env cwl-runner | |
| 14 cwlVersion: v1.0 | |
| 15 class: CommandLineTool | |
| 16 doc: "This tool is developed for SMC-RNA Challenge for detecting gene fusions (STAR fusion)" | |
| 17 inputs: | |
| 18 #Give it a list of input files | |
| 19 - id: input | |
| 20 type: File | |
| 21 inputBinding: | |
| 22 position: 0 | |
| 23 outputs: | |
| 24 - id: output | |
| 25 type: File | |
| 26 outputBinding: | |
| 27 glob: test.txt | |
| 28 stdout: test.txt | |
| 29 baseCommand: [cat] | |
| 30 ''' | |
| 31 | |
| 32 script_b = ''' | |
| 33 #!/usr/bin/env cwl-runner | |
| 34 cwlVersion: v1.0 | |
| 35 class: CommandLineTool | |
| 36 inputs: | |
| 37 - id: bdg | |
| 38 type: "boolean" | |
| 39 outputs: | |
| 40 - id: output | |
| 41 type: File | |
| 42 outputBinding: | |
| 43 glob: foo | |
| 44 baseCommand: | |
| 45 - echo | |
| 46 - "ff" | |
| 47 stdout: foo | |
| 48 ''' | |
| 49 | |
| 50 script_c = ''' | |
| 51 #!/usr/bin/env cwl-runner | |
| 52 | |
| 53 cwlVersion: v1.0 | |
| 54 class: ExpressionTool | |
| 55 | |
| 56 inputs: | |
| 57 foo: | |
| 58 type: | |
| 59 type: record | |
| 60 fields: | |
| 61 one: File | |
| 62 two: string | |
| 63 | |
| 64 expression: $(inputs.foo.two) | |
| 65 | |
| 66 outputs: [] | |
| 67 ''' | |
| 68 | |
| 69 scripts_argparse_params = [ | |
| 70 ('help', script_a, | |
| 71 lambda x: ["--debug", x, '--input', get_data('tests/echo.cwl')] | |
| 72 ), | |
| 73 ('boolean', script_b, lambda x: [x, '--help'] | |
| 74 ), | |
| 75 ('help with c', script_c, lambda x: [x, '--help']), | |
| 76 ('foo with c', script_c, | |
| 77 lambda x: [x, '--foo.one', get_data('tests/echo.cwl'), '--foo.two', 'test'] | |
| 78 ) | |
| 79 ] | |
| 80 | |
| 81 @needs_docker | |
| 82 @pytest.mark.parametrize('name,script_contents,params', scripts_argparse_params) | |
| 83 def test_argparse(name, script_contents, params, tmpdir): | |
| 84 script = None | |
| 85 try: | |
| 86 script = NamedTemporaryFile(mode='w', delete=False) | |
| 87 script.write(script_contents) | |
| 88 script.close() | |
| 89 | |
| 90 my_params = ["--outdir", str(tmpdir)] | |
| 91 my_params.extend(params(script.name)) | |
| 92 assert main(my_params) == 0, name | |
| 93 | |
| 94 except SystemExit as err: | |
| 95 assert err.code == 0, name | |
| 96 finally: | |
| 97 if script and script.name and os.path.exists(script.name): | |
| 98 os.unlink(script.name) | |
| 99 | |
| 100 | |
| 101 class NoopJobExecutor(cwltool.executors.JobExecutor): | |
| 102 def run_jobs(self, | |
| 103 process, # type: Process | |
| 104 job_order_object, # type: Dict[Text, Any] | |
| 105 logger, # type: logging.Logger | |
| 106 runtime_context # type: RuntimeContext | |
| 107 ): # type: (...) -> None | |
| 108 pass | |
| 109 | |
| 110 def execute(self, | |
| 111 process, # type: Process | |
| 112 job_order_object, # type: Dict[Text, Any] | |
| 113 runtime_context, # type: RuntimeContext | |
| 114 logger=None, # type: logging.Logger | |
| 115 ): # type: (...) -> Tuple[Optional[Union[Dict[Text, Any], List[Dict[Text, Any]]]], Text] | |
| 116 return {}, "success" | |
| 117 | |
| 118 def test_dont_require_inputs(): | |
| 119 if sys.version_info[0] < 3: | |
| 120 stream = BytesIO() | |
| 121 else: | |
| 122 stream = StringIO() | |
| 123 | |
| 124 script = None | |
| 125 try: | |
| 126 script = NamedTemporaryFile(mode='w', delete=False) | |
| 127 script.write(script_a) | |
| 128 script.close() | |
| 129 | |
| 130 assert main(argsl=["--debug", script.name, "--input", script.name], executor=NoopJobExecutor(), stdout=stream) == 0 | |
| 131 assert main(argsl=["--debug", script.name], executor=NoopJobExecutor(), stdout=stream) == 2 | |
| 132 assert main(argsl=["--debug", script.name], executor=NoopJobExecutor(), input_required=False, stdout=stream) == 0 | |
| 133 | |
| 134 except SystemExit as err: | |
| 135 assert err.code == 0, name | |
| 136 finally: | |
| 137 if script and script.name and os.path.exists(script.name): | |
| 138 os.unlink(script.name) |
