Skip to content

Commit 18a4803

Browse files
authored
Merge pull request #383 from djarecka/fix/singularity_wdir
fixing singularity command
2 parents 59f0756 + 18a07dc commit 18a4803

File tree

3 files changed

+14
-15
lines changed

3 files changed

+14
-15
lines changed

pydra/engine/task.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -833,9 +833,8 @@ def _container_args_single(self, image, ind=None):
833833

834834
if self.inputs.container_xargs is not None:
835835
cargs.extend(self.inputs.container_xargs)
836-
cargs.append(image)
837836

838-
# insert bindings before image
839-
idx = len(cargs) - 1
840-
cargs[idx:-1] = self.binds("-B", ind)
837+
cargs.extend(self.binds("-B", ind))
838+
cargs.extend(["--pwd", str(self.output_cpath)])
839+
cargs.append(image)
841840
return cargs

pydra/engine/tests/test_singularity.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ def test_singularity_1_nosubm(tmpdir):
3030
assert singu.inputs.container == "singularity"
3131
assert (
3232
singu.cmdline
33-
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw {image} {cmd}"
33+
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw --pwd /output_pydra {image} {cmd}"
3434
)
3535

3636
res = singu()
37-
assert "SingularityTask" in res.output.stdout
37+
assert "output_pydra" in res.output.stdout
3838
assert res.output.return_code == 0
3939

4040

@@ -48,7 +48,7 @@ def test_singularity_2_nosubm(tmpdir):
4848
singu = SingularityTask(name="singu", executable=cmd, image=image, cache_dir=tmpdir)
4949
assert (
5050
singu.cmdline
51-
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw {image} {' '.join(cmd)}"
51+
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw --pwd /output_pydra {image} {' '.join(cmd)}"
5252
)
5353

5454
res = singu()
@@ -66,7 +66,7 @@ def test_singularity_2(plugin, tmpdir):
6666
singu = SingularityTask(name="singu", executable=cmd, image=image, cache_dir=tmpdir)
6767
assert (
6868
singu.cmdline
69-
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw {image} {' '.join(cmd)}"
69+
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw --pwd /output_pydra {image} {' '.join(cmd)}"
7070
)
7171

7272
with Submitter(plugin=plugin) as sub:
@@ -91,7 +91,7 @@ def test_singularity_2_singuflag(plugin, tmpdir):
9191
)
9292
assert (
9393
shingu.cmdline
94-
== f"singularity exec -B {shingu.output_dir}:/output_pydra:rw {image} {' '.join(cmd)}"
94+
== f"singularity exec -B {shingu.output_dir}:/output_pydra:rw --pwd /output_pydra {image} {' '.join(cmd)}"
9595
)
9696

9797
with Submitter(plugin=plugin) as sub:
@@ -115,7 +115,7 @@ def test_singularity_2a(plugin, tmpdir):
115115
)
116116
assert (
117117
singu.cmdline
118-
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw {image} {cmd_exec} {' '.join(cmd_args)}"
118+
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw --pwd /output_pydra {image} {cmd_exec} {' '.join(cmd_args)}"
119119
)
120120

121121
with Submitter(plugin=plugin) as sub:
@@ -214,7 +214,7 @@ def test_singularity_st_1(plugin, tmpdir):
214214
assert singu.state.splitter == "singu.executable"
215215

216216
res = singu(plugin=plugin)
217-
assert "SingularityTask" in res[0].output.stdout
217+
assert "/output_pydra" in res[0].output.stdout
218218
assert res[1].output.stdout == ""
219219
assert res[0].output.return_code == res[1].output.return_code == 0
220220

@@ -249,9 +249,9 @@ def test_singularity_st_3(plugin, tmpdir):
249249
assert singu.state.splitter == ["singu.image", "singu.executable"]
250250
res = singu(plugin=plugin)
251251

252-
assert "SingularityTask" in res[0].output.stdout
252+
assert "/output_pydra" in res[0].output.stdout
253253
assert "Alpine" in res[1].output.stdout
254-
assert "SingularityTask" in res[2].output.stdout
254+
assert "/output_pydra" in res[2].output.stdout
255255
assert "Ubuntu" in res[3].output.stdout
256256

257257

pydra/engine/tests/test_task.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,15 +1143,15 @@ def test_singularity_cmd(tmpdir):
11431143
singu = SingularityTask(name="singi", executable="pwd", image=image)
11441144
assert (
11451145
singu.cmdline
1146-
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw {image} pwd"
1146+
== f"singularity exec -B {singu.output_dir}:/output_pydra:rw --pwd /output_pydra {image} pwd"
11471147
)
11481148
singu.inputs.bindings = [
11491149
("/local/path", "/container/path", "ro"),
11501150
("/local2", "/container2", None),
11511151
]
11521152
assert singu.cmdline == (
11531153
"singularity exec -B /local/path:/container/path:ro"
1154-
f" -B /local2:/container2:rw -B {singu.output_dir}:/output_pydra:rw {image} pwd"
1154+
f" -B /local2:/container2:rw -B {singu.output_dir}:/output_pydra:rw --pwd /output_pydra {image} pwd"
11551155
)
11561156

11571157

0 commit comments

Comments
 (0)