Skip to content

Commit b7f5cdd

Browse files
authored
Merge pull request #2802 from oesteban/maint/tests-on-temp
[TST] Improve py.test configuration of doctests
2 parents 22451dd + beacb0a commit b7f5cdd

File tree

5 files changed

+42
-21
lines changed

5 files changed

+42
-21
lines changed

nipype/conftest.py

+30-8
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,43 @@
1+
import os
2+
import shutil
3+
from tempfile import mkdtemp
14
import pytest
25
import numpy
3-
import os
6+
import py.path as pp
47

5-
DATADIR = os.path.realpath(
8+
NIPYPE_DATADIR = os.path.realpath(
69
os.path.join(os.path.dirname(__file__), 'testing/data'))
10+
temp_folder = mkdtemp()
11+
data_dir = os.path.join(temp_folder, 'data')
12+
shutil.copytree(NIPYPE_DATADIR, data_dir)
713

814

915
@pytest.fixture(autouse=True)
1016
def add_np(doctest_namespace):
1117
doctest_namespace['np'] = numpy
1218
doctest_namespace['os'] = os
13-
14-
doctest_namespace["datadir"] = DATADIR
19+
doctest_namespace["datadir"] = data_dir
1520

1621

1722
@pytest.fixture(autouse=True)
18-
def in_testing(request):
19-
# This seems to be a reliable way to distinguish tests from doctests
20-
if request.function is None:
21-
os.chdir(DATADIR)
23+
def _docdir(request):
24+
"""Grabbed from https://stackoverflow.com/a/46991331"""
25+
# Trigger ONLY for the doctests.
26+
doctest_plugin = request.config.pluginmanager.getplugin("doctest")
27+
if isinstance(request.node, doctest_plugin.DoctestItem):
28+
29+
# Get the fixture dynamically by its name.
30+
tmpdir = pp.local(data_dir)
31+
32+
# Chdir only for the duration of the test.
33+
with tmpdir.as_cwd():
34+
yield
35+
36+
else:
37+
# For normal tests, we have to yield, since this is a yield-fixture.
38+
yield
39+
40+
41+
def pytest_unconfigure(config):
42+
# Delete temp folder after session is finished
43+
shutil.rmtree(temp_folder)

nipype/interfaces/ants/registration.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -736,17 +736,17 @@ class Registration(ANTSCommand):
736736
>>> reg4.inputs.collapse_output_transforms = True
737737
>>> outputs = reg4._list_outputs()
738738
>>> pprint.pprint(outputs) # doctest: +ELLIPSIS,
739-
{'composite_transform': '.../nipype/testing/data/output_Composite.h5',
739+
{'composite_transform': '...data/output_Composite.h5',
740740
'elapsed_time': <undefined>,
741741
'forward_invert_flags': [],
742742
'forward_transforms': [],
743-
'inverse_composite_transform': '.../nipype/testing/data/output_InverseComposite.h5',
743+
'inverse_composite_transform': '...data/output_InverseComposite.h5',
744744
'inverse_warped_image': <undefined>,
745745
'metric_value': <undefined>,
746746
'reverse_invert_flags': [],
747747
'reverse_transforms': [],
748-
'save_state': '.../nipype/testing/data/trans.mat',
749-
'warped_image': '.../nipype/testing/data/output_warped_image.nii.gz'}
748+
'save_state': '...data/trans.mat',
749+
'warped_image': '...data/output_warped_image.nii.gz'}
750750
>>> reg4.cmdline
751751
'antsRegistration --collapse-output-transforms 1 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] \
752752
--initialize-transforms-per-stage 1 --interpolation Linear --output [ output_, output_warped_image.nii.gz ] \
@@ -767,16 +767,16 @@ class Registration(ANTSCommand):
767767
{'composite_transform': <undefined>,
768768
'elapsed_time': <undefined>,
769769
'forward_invert_flags': [False, False],
770-
'forward_transforms': ['.../nipype/testing/data/output_0GenericAffine.mat',
771-
'.../nipype/testing/data/output_1Warp.nii.gz'],
770+
'forward_transforms': ['...data/output_0GenericAffine.mat',
771+
'...data/output_1Warp.nii.gz'],
772772
'inverse_composite_transform': <undefined>,
773773
'inverse_warped_image': <undefined>,
774774
'metric_value': <undefined>,
775775
'reverse_invert_flags': [True, False],
776-
'reverse_transforms': ['.../nipype/testing/data/output_0GenericAffine.mat', \
777-
'.../nipype/testing/data/output_1InverseWarp.nii.gz'],
778-
'save_state': '.../nipype/testing/data/trans.mat',
779-
'warped_image': '.../nipype/testing/data/output_warped_image.nii.gz'}
776+
'reverse_transforms': ['...data/output_0GenericAffine.mat', \
777+
'...data/output_1InverseWarp.nii.gz'],
778+
'save_state': '...data/trans.mat',
779+
'warped_image': '...data/output_warped_image.nii.gz'}
780780
>>> reg4b.aggregate_outputs() # doctest: +SKIP
781781
>>> reg4b.cmdline
782782
'antsRegistration --collapse-output-transforms 1 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] \

nipype/interfaces/bru2nii.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class Bru2(CommandLine):
4747
>>> converter = Bru2()
4848
>>> converter.inputs.input_dir = "brukerdir"
4949
>>> converter.cmdline # doctest: +ELLIPSIS
50-
'Bru2 -o .../nipype/testing/data/brukerdir brukerdir'
50+
'Bru2 -o .../data/brukerdir brukerdir'
5151
"""
5252
input_spec = Bru2InputSpec
5353
output_spec = Bru2OutputSpec

nipype/pipeline/plugins/lsf.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def _submit_batchtask(self, scriptfile, node):
113113
break
114114
iflogger.setLevel(oldlevel)
115115
# retrieve lsf taskid
116-
match = re.search('<(\d*)>', result.runtime.stdout)
116+
match = re.search(r'<(\d*)>', result.runtime.stdout)
117117
if match:
118118
taskid = int(match.groups()[0])
119119
else:

nipype/testing/data/slice_timing.1D

-1
This file was deleted.

0 commit comments

Comments
 (0)