comparison env/lib/python3.9/site-packages/cwltool/tests/test_singularity.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 distutils.spawn
2 import os
3 import sys
4 from pathlib import Path
5
6 from cwltool.main import main
7
8 from .util import (
9 get_data,
10 get_main_output,
11 needs_singularity,
12 needs_singularity_2_6,
13 working_directory,
14 )
15
16 sys.argv = [""]
17
18
19 @needs_singularity_2_6
20 def test_singularity_pullfolder(tmp_path: Path) -> None:
21 workdir = tmp_path / "working_dir_new"
22 workdir.mkdir()
23 os.chdir(workdir)
24 pullfolder = tmp_path / "pullfolder"
25 pullfolder.mkdir()
26 env = os.environ.copy()
27 env["SINGULARITY_PULLFOLDER"] = str(pullfolder)
28 result_code, stdout, stderr = get_main_output(
29 [
30 "--singularity",
31 get_data("tests/sing_pullfolder_test.cwl"),
32 "--message",
33 "hello",
34 ],
35 env=env,
36 )
37 print(stdout)
38 print(stderr)
39 assert result_code == 0
40 image = pullfolder / "debian.img"
41 assert image.exists()
42
43
44 @needs_singularity
45 def test_singularity_workflow(tmp_path: Path) -> None:
46 with working_directory(tmp_path):
47 error_code, _, stderr = get_main_output(
48 [
49 "--singularity",
50 "--default-container",
51 "debian",
52 "--debug",
53 get_data("tests/wf/hello-workflow.cwl"),
54 "--usermessage",
55 "hello",
56 ]
57 )
58 assert "completed success" in stderr, stderr
59 assert error_code == 0
60
61
62 def test_singularity_iwdr() -> None:
63 result_code = main(
64 [
65 "--singularity",
66 "--default-container",
67 "debian",
68 get_data("tests/wf/iwdr-entry.cwl"),
69 "--message",
70 "hello",
71 ]
72 )
73 singularity_installed = bool(distutils.spawn.find_executable("singularity"))
74 if singularity_installed:
75 assert result_code == 0
76 else:
77 assert result_code != 0
78
79
80 @needs_singularity
81 def test_singularity_incorrect_image_pull() -> None:
82 result_code, _, stderr = get_main_output(
83 [
84 "--singularity",
85 "--default-container",
86 "non-existant-weird-image",
87 get_data("tests/wf/hello-workflow.cwl"),
88 "--usermessage",
89 "hello",
90 ]
91 )
92 assert result_code != 0
93
94
95 @needs_singularity
96 def test_singularity_local(tmp_path: Path) -> None:
97 workdir = tmp_path / "working_dir"
98 workdir.mkdir()
99 os.chdir(workdir)
100 result_code, stdout, stderr = get_main_output(
101 [
102 "--singularity",
103 get_data("tests/sing_pullfolder_test.cwl"),
104 "--message",
105 "hello",
106 ]
107 )
108 assert result_code == 0
109
110
111 @needs_singularity_2_6
112 def test_singularity_docker_image_id_in_tool(tmp_path: Path) -> None:
113 workdir = tmp_path / "working_dir"
114 workdir.mkdir()
115 os.chdir(workdir)
116 result_code, stdout, stderr = get_main_output(
117 [
118 "--singularity",
119 get_data("tests/sing_pullfolder_test.cwl"),
120 "--message",
121 "hello",
122 ]
123 )
124 result_code1, stdout, stderr = get_main_output(
125 ["--singularity", get_data("tests/debian_image_id.cwl"), "--message", "hello"]
126 )
127 assert result_code1 == 0