Skip to content

Commit 46632d6

Browse files
committed
TEST: Make sure non-gzip file handles are dropped when keep_file_open ==
'auto'. Updates to benchmark functions.
1 parent 4c850cb commit 46632d6

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

nibabel/benchmarks/bench_array_to_file.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from __future__ import division, print_function
1717

1818
import sys
19+
from io import BytesIO # NOQA
1920

2021
import numpy as np
2122

nibabel/benchmarks/bench_arrayproxy_slicing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
('?', '?', '?', ':'),
5252
]
5353

54-
KEEP_OPENS = [False, True]
54+
KEEP_OPENS = [False, True, 'auto']
5555

5656
if HAVE_INDEXED_GZIP:
5757
HAVE_IGZIP = [False, True]

nibabel/tests/test_arrayproxy.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,25 @@ def test_keep_file_open_auto():
432432
keep_file_open='auto')
433433
assert proxy._keep_file_open is False
434434
assert _count_ImageOpeners(proxy, data, voxels) == 10
435+
# If not a gzip file, keep_file_open should be False
436+
fname = 'testdata'
437+
with open(fname, 'wb') as fobj:
438+
fobj.write(data.tostring(order='F'))
439+
# regardless of whether indexed_gzip is present or not
440+
with patch_indexed_gzip(True), \
441+
mock.patch('nibabel.arrayproxy.ImageOpener', CountingImageOpener):
442+
CountingImageOpener.num_openers = 0
443+
proxy = ArrayProxy(fname, ((10, 10, 10), dtype),
444+
keep_file_open='auto')
445+
assert proxy._keep_file_open is False
446+
assert _count_ImageOpeners(proxy, data, voxels) == 10
447+
with patch_indexed_gzip(False), \
448+
mock.patch('nibabel.arrayproxy.ImageOpener', CountingImageOpener):
449+
CountingImageOpener.num_openers = 0
450+
proxy = ArrayProxy(fname, ((10, 10, 10), dtype),
451+
keep_file_open='auto')
452+
assert proxy._keep_file_open is False
453+
assert _count_ImageOpeners(proxy, data, voxels) == 10
435454

436455

437456
@contextlib.contextmanager

nibabel/tests/test_openers.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,18 @@ def test_Opener_gzip_type():
133133
# Each test is specified by a tuple containing:
134134
# (indexed_gzip present, Opener kwargs, expected file type)
135135
tests = [
136-
(False, {'mode' : 'rb', 'keep_open' : True}, GzipFile),
137-
(False, {'mode' : 'rb', 'keep_open' : False}, GzipFile),
138-
(False, {'mode' : 'wb', 'keep_open' : True}, GzipFile),
139-
(False, {'mode' : 'wb', 'keep_open' : False}, GzipFile),
140-
(True, {'mode' : 'rb', 'keep_open' : True}, MockIndexedGzipFile),
141-
(True, {'mode' : 'rb', 'keep_open' : False}, GzipFile),
142-
(True, {'mode' : 'wb', 'keep_open' : True}, GzipFile),
143-
(True, {'mode' : 'wb', 'keep_open' : False}, GzipFile),
136+
(False, {'mode' : 'rb', 'keep_open' : True}, GzipFile),
137+
(False, {'mode' : 'rb', 'keep_open' : False}, GzipFile),
138+
(False, {'mode' : 'rb', 'keep_open' : 'auto'}, GzipFile),
139+
(False, {'mode' : 'wb', 'keep_open' : True}, GzipFile),
140+
(False, {'mode' : 'wb', 'keep_open' : False}, GzipFile),
141+
(False, {'mode' : 'rb', 'keep_open' : 'auto'}, GzipFile),
142+
(True, {'mode' : 'rb', 'keep_open' : True}, MockIndexedGzipFile),
143+
(True, {'mode' : 'rb', 'keep_open' : False}, GzipFile),
144+
(True, {'mode' : 'rb', 'keep_open' : 'auto'}, MockIndexedGzipFile),
145+
(True, {'mode' : 'wb', 'keep_open' : True}, GzipFile),
146+
(True, {'mode' : 'wb', 'keep_open' : False}, GzipFile),
147+
(True, {'mode' : 'rb', 'keep_open' : 'auto'}, GzipFile),
144148
]
145149

146150
for test in tests:

0 commit comments

Comments
 (0)