Skip to content

Commit 75b405f

Browse files
committed
TEST: Parametrize multiproc test to track down error
1 parent 05359e7 commit 75b405f

File tree

1 file changed

+26
-38
lines changed

1 file changed

+26
-38
lines changed

nipype/tests/test_nipype.py

Lines changed: 26 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def _check_no_et():
4141
return et
4242

4343

44-
def test_no_et(tmp_path):
44+
def test_no_et_bare(tmp_path):
4545
from unittest.mock import patch
4646
from nipype.pipeline import engine as pe
4747
from nipype.interfaces import utility as niu
@@ -70,42 +70,30 @@ def test_no_et(tmp_path):
7070
res = wf1.run()
7171
assert next(iter(res.nodes)).result.outputs.out == et
7272

73-
# MultiProc run - environment initialized with NIPYPE_NO_ET
74-
wf2 = pe.Workflow(name="wf2", base_dir=str(tmp_path))
75-
wf2.add_nodes([pe.Node(niu.Function(function=_check_no_et), name="n")])
76-
res = wf2.run(plugin="MultiProc", plugin_args={"n_procs": 1})
77-
assert next(iter(res.nodes)).result.outputs.out is False
78-
79-
# LegacyMultiProc run - environment initialized with NIPYPE_NO_ET
80-
wf3 = pe.Workflow(name="wf3", base_dir=str(tmp_path))
81-
wf3.add_nodes([pe.Node(niu.Function(function=_check_no_et), name="n")])
82-
res = wf3.run(plugin="LegacyMultiProc", plugin_args={"n_procs": 1})
83-
assert next(iter(res.nodes)).result.outputs.out is False
84-
85-
# run_without_submitting - environment not set
86-
wf4 = pe.Workflow(name="wf4", base_dir=str(tmp_path))
87-
wf4.add_nodes(
88-
[
89-
pe.Node(
90-
niu.Function(function=_check_no_et),
91-
run_without_submitting=True,
92-
name="n",
93-
)
94-
]
95-
)
96-
res = wf4.run(plugin="MultiProc", plugin_args={"n_procs": 1})
97-
assert next(iter(res.nodes)).result.outputs.out == et
9873

99-
# run_without_submitting - environment not set
100-
wf5 = pe.Workflow(name="wf5", base_dir=str(tmp_path))
101-
wf5.add_nodes(
102-
[
103-
pe.Node(
104-
niu.Function(function=_check_no_et),
105-
run_without_submitting=True,
106-
name="n",
107-
)
108-
]
74+
@pytest.mark.parametrize("plugin", ("MultiProc", "LegacyMultiProc"))
75+
@pytest.mark.parametrize("run_without_submitting", (True, False))
76+
def test_no_et_multiproc(tmp_path, plugin, run_without_submitting):
77+
from unittest.mock import patch
78+
from nipype.pipeline import engine as pe
79+
from nipype.interfaces import utility as niu
80+
from nipype.interfaces.base import BaseInterface
81+
82+
et = os.getenv("NIPYPE_NO_ET") is None
83+
84+
# Multiprocessing runs initialize new processes with NIPYPE_NO_ET
85+
# This does not apply to unsubmitted jobs, run by the main thread
86+
expectation = et if run_without_submitting else False
87+
88+
# Pytest doesn't trigger this, so let's pretend it's there
89+
with patch.object(BaseInterface, "_etelemetry_version_data", {}):
90+
91+
wf = pe.Workflow(name="wf2", base_dir=str(tmp_path))
92+
n = pe.Node(
93+
niu.Function(function=_check_no_et),
94+
run_without_submitting=run_without_submitting,
95+
name="n",
10996
)
110-
res = wf5.run(plugin="LegacyMultiProc", plugin_args={"n_procs": 1})
111-
assert next(iter(res.nodes)).result.outputs.out == et
97+
wf.add_nodes([n])
98+
res = wf.run(plugin=plugin, plugin_args={"n_procs": 1})
99+
assert next(iter(res.nodes)).result.outputs.out is expectation

0 commit comments

Comments
 (0)