Skip to content

Commit 18de5f5

Browse files
committed
Test check_depends
1 parent a289e96 commit 18de5f5

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

nipype/utils/filemanip.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ def check_depends(targets, dependencies):
457457
deps = filename_to_list(dependencies)
458458
return all(map(os.path.exists, tgts)) and \
459459
min(map(os.path.getmtime, tgts)) > \
460-
max(map(os.path.getmtime, deps), default=0)
460+
max(list(map(os.path.getmtime, deps)) + [0])
461461

462462

463463
def save_json(filename, data):

nipype/utils/tests/test_filemanip.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
from builtins import open
66

77
import os
8-
from tempfile import mkstemp
8+
import time
9+
from tempfile import mkstemp, mkdtemp
10+
import shutil
911
import warnings
1012

1113
import pytest
@@ -15,6 +17,7 @@
1517
hash_rename, check_forhash,
1618
copyfile, copyfiles,
1719
filename_to_list, list_to_filename,
20+
check_depends,
1821
split_filename, get_related_files)
1922

2023
import numpy as np
@@ -271,6 +274,41 @@ def test_list_to_filename(list, expected):
271274
assert x == expected
272275

273276

277+
def test_check_depends():
278+
def touch(fname):
279+
with open(fname, 'a'):
280+
os.utime(fname, None)
281+
282+
tmpdir = mkdtemp()
283+
284+
dependencies = [os.path.join(tmpdir, str(i)) for i in range(3)]
285+
targets = [os.path.join(tmpdir, str(i)) for i in range(3, 6)]
286+
287+
# Targets newer than dependencies
288+
for dep in dependencies:
289+
touch(dep)
290+
time.sleep(1)
291+
for tgt in targets:
292+
touch(tgt)
293+
assert check_depends(targets, dependencies)
294+
295+
# Targets older than newest dependency
296+
time.sleep(1)
297+
touch(dependencies[0])
298+
assert not check_depends(targets, dependencies)
299+
300+
# Missing dependency
301+
os.unlink(dependencies[0])
302+
try:
303+
check_depends(targets, dependencies)
304+
except OSError as e:
305+
pass
306+
else:
307+
assert False, "Should raise OSError on missing dependency"
308+
309+
shutil.rmtree(tmpdir)
310+
311+
274312
def test_json():
275313
# Simple roundtrip test of json files, just a sanity check.
276314
adict = dict(a='one', c='three', b='two')

0 commit comments

Comments
 (0)