Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/cwltool/tests/test_ext.py @ 0:d30785e31577 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:18:57 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d30785e31577 |
---|---|
1 from __future__ import absolute_import | |
2 | |
3 import os | |
4 import shutil | |
5 import tempfile | |
6 import sys | |
7 import re | |
8 from io import StringIO | |
9 | |
10 import pytest | |
11 | |
12 from cwltool.main import main | |
13 import cwltool.process | |
14 | |
15 | |
16 from .util import get_data, needs_docker, temp_dir, windows_needs_docker | |
17 | |
18 | |
19 @needs_docker | |
20 def test_missing_enable_ext(): | |
21 # Require that --enable-ext is provided. | |
22 assert main([get_data('tests/wf/listing_deep.cwl'), get_data('tests/listing-job.yml')]) != 0 | |
23 | |
24 @needs_docker | |
25 def test_listing_deep(): | |
26 params = ["--enable-ext", get_data('tests/wf/listing_deep.cwl'), | |
27 get_data('tests/listing-job.yml')] | |
28 assert main(params) == 0 | |
29 | |
30 @needs_docker | |
31 def test_cwltool_options(): | |
32 try: | |
33 opt = os.environ.get("CWLTOOL_OPTIONS") | |
34 os.environ["CWLTOOL_OPTIONS"] = "--enable-ext" | |
35 params = [get_data('tests/wf/listing_deep.cwl'), | |
36 get_data('tests/listing-job.yml')] | |
37 assert main(params) == 0 | |
38 finally: | |
39 if opt is not None: | |
40 os.environ["CWLTOOL_OPTIONS"] = opt | |
41 else: | |
42 del os.environ["CWLTOOL_OPTIONS"] | |
43 | |
44 @needs_docker | |
45 def test_listing_shallow(): | |
46 # This fails on purpose, because it tries to access listing in a subdirectory | |
47 # the same way that listing_deep does, but it shouldn't be expanded. | |
48 params = ["--enable-ext", get_data('tests/wf/listing_shallow.cwl'), | |
49 get_data('tests/listing-job.yml')] | |
50 assert main(params) != 0 | |
51 | |
52 @needs_docker | |
53 def test_listing_none(): | |
54 # This fails on purpose, because it tries to access listing but it shouldn't be there. | |
55 params = ["--enable-ext", get_data('tests/wf/listing_none.cwl'), | |
56 get_data('tests/listing-job.yml')] | |
57 assert main(params) != 0 | |
58 | |
59 @needs_docker | |
60 def test_listing_v1_0(): | |
61 # Default behavior in 1.0 is deep expansion. | |
62 assert main([get_data('tests/wf/listing_v1_0.cwl'), get_data('tests/listing-job.yml')]) == 0 | |
63 | |
64 @pytest.mark.skip(reason="This is not the default behaviour yet") | |
65 @needs_docker | |
66 def test_listing_v1_1(): | |
67 # Default behavior in 1.1 will be no expansion | |
68 assert main([get_data('tests/wf/listing_v1_1.cwl'), get_data('tests/listing-job.yml')]) != 0 | |
69 | |
70 @needs_docker | |
71 def test_double_overwrite(tmpdir): | |
72 with temp_dir() as tmp: | |
73 tmp_name = os.path.join(tmp, "value") | |
74 | |
75 before_value, expected_value = "1", "3" | |
76 | |
77 with open(tmp_name, "w") as f: | |
78 f.write(before_value) | |
79 | |
80 assert main(["--enable-ext", "--outdir", str(tmpdir), | |
81 get_data('tests/wf/mut2.cwl'), "-a", tmp_name]) == 0 | |
82 | |
83 with open(tmp_name, "r") as f: | |
84 actual_value = f.read() | |
85 | |
86 assert actual_value == expected_value | |
87 | |
88 @needs_docker | |
89 def test_disable_file_overwrite_without_ext(): | |
90 with temp_dir() as tmp: | |
91 with temp_dir() as out: | |
92 tmp_name = os.path.join(tmp, "value") | |
93 out_name = os.path.join(out, "value") | |
94 | |
95 before_value, expected_value = "1", "2" | |
96 | |
97 with open(tmp_name, "w") as f: | |
98 f.write(before_value) | |
99 | |
100 assert main(["--outdir", out, get_data('tests/wf/updateval.cwl'), "-r", tmp_name]) == 0 | |
101 | |
102 with open(tmp_name, "r") as f: | |
103 tmp_value = f.read() | |
104 with open(out_name, "r") as f: | |
105 out_value = f.read() | |
106 | |
107 assert tmp_value == before_value | |
108 assert out_value == expected_value | |
109 | |
110 @needs_docker | |
111 def test_disable_dir_overwrite_without_ext(): | |
112 with temp_dir() as tmp: | |
113 with temp_dir() as out: | |
114 | |
115 assert main(["--outdir", out, get_data('tests/wf/updatedir.cwl'), "-r", tmp]) == 0 | |
116 | |
117 assert not os.listdir(tmp) | |
118 assert os.listdir(out) | |
119 | |
120 @needs_docker | |
121 def test_disable_file_creation_in_outdir_with_ext(): | |
122 with temp_dir() as tmp: | |
123 with temp_dir() as out: | |
124 | |
125 tmp_name = os.path.join(tmp, "value") | |
126 out_name = os.path.join(out, "value") | |
127 | |
128 before_value, expected_value = "1", "2" | |
129 | |
130 with open(tmp_name, "w") as f: | |
131 f.write(before_value) | |
132 | |
133 params = ["--enable-ext", "--leave-outputs", "--outdir", | |
134 out, get_data('tests/wf/updateval_inplace.cwl'), "-r", tmp_name] | |
135 assert main(params) == 0 | |
136 | |
137 with open(tmp_name, "r") as f: | |
138 tmp_value = f.read() | |
139 | |
140 assert tmp_value == expected_value | |
141 assert not os.path.exists(out_name) | |
142 | |
143 @needs_docker | |
144 def test_disable_dir_creation_in_outdir_with_ext(): | |
145 with temp_dir() as tmp: | |
146 with temp_dir() as out: | |
147 params = ["--enable-ext", "--leave-outputs", "--outdir", | |
148 out, get_data('tests/wf/updatedir_inplace.cwl'), "-r", tmp] | |
149 assert main(params) == 0 | |
150 | |
151 assert os.listdir(tmp) | |
152 assert not os.listdir(out) | |
153 | |
154 @needs_docker | |
155 def test_write_write_conflict(): | |
156 with temp_dir('tmp') as tmp: | |
157 tmp_name = os.path.join(tmp, "value") | |
158 | |
159 before_value, expected_value = "1", "2" | |
160 | |
161 with open(tmp_name, "w") as f: | |
162 f.write(before_value) | |
163 | |
164 assert main(["--enable-ext", get_data('tests/wf/mut.cwl'), "-a", tmp_name]) != 0 | |
165 | |
166 with open(tmp_name, "r") as f: | |
167 tmp_value = f.read() | |
168 | |
169 assert tmp_value == expected_value | |
170 | |
171 @pytest.mark.skip(reason="This test is non-deterministic") | |
172 def test_read_write_conflict(): | |
173 with temp_dir('tmp') as tmp: | |
174 tmp_name = os.path.join(tmp, "value") | |
175 | |
176 with open(tmp_name, "w") as f: | |
177 f.write("1") | |
178 | |
179 assert main(["--enable-ext", get_data('tests/wf/mut3.cwl'), "-a", tmp_name]) != 0 | |
180 | |
181 @needs_docker | |
182 def test_require_prefix_networkaccess(): | |
183 assert main(["--enable-ext", get_data('tests/wf/networkaccess.cwl')]) == 0 | |
184 assert main([get_data('tests/wf/networkaccess.cwl')]) != 0 | |
185 assert main(["--enable-ext", get_data('tests/wf/networkaccess-fail.cwl')]) != 0 | |
186 | |
187 @needs_docker | |
188 def test_require_prefix_workreuse(tmpdir): | |
189 assert main(["--enable-ext", '--outdir', str(tmpdir), get_data('tests/wf/workreuse.cwl')]) == 0 | |
190 assert main([get_data('tests/wf/workreuse.cwl')]) != 0 | |
191 assert main(["--enable-ext", get_data('tests/wf/workreuse-fail.cwl')]) != 0 | |
192 | |
193 @windows_needs_docker | |
194 def test_require_prefix_timelimit(): | |
195 assert main(["--enable-ext", get_data('tests/wf/timelimit.cwl')]) == 0 | |
196 assert main([get_data('tests/wf/timelimit.cwl')]) != 0 | |
197 assert main(["--enable-ext", get_data('tests/wf/timelimit-fail.cwl')]) != 0 | |
198 | |
199 def test_warn_large_inputs(): | |
200 was = cwltool.process.FILE_COUNT_WARNING | |
201 try: | |
202 stream = StringIO() | |
203 | |
204 cwltool.process.FILE_COUNT_WARNING = 3 | |
205 main([get_data('tests/wf/listing_v1_0.cwl'), get_data('tests/listing2-job.yml')], | |
206 stderr=stream) | |
207 | |
208 assert "Recursive directory listing has resulted in a large number of File" in re.sub("\n *", " ", stream.getvalue()) | |
209 finally: | |
210 cwltool.process.FILE_COUNT_WARNING = was |