Skip to content

Commit f436b73

Browse files
HippocampusGirleffigies
authored andcommitted
Fix #1035 unclosed file warning in GiftiImage
- Change as proposed by @effigies Test for `ResourceWarning` in `GiftiImage` Backport of gh-1038
1 parent 295a79b commit f436b73

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

nibabel/gifti/gifti.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -877,8 +877,8 @@ def to_file_map(self, file_map=None):
877877
"""
878878
if file_map is None:
879879
file_map = self.file_map
880-
f = file_map['image'].get_prepare_fileobj('wb')
881-
f.write(self.to_xml())
880+
with file_map['image'].get_prepare_fileobj('wb') as f:
881+
f.write(self.to_xml())
882882

883883
@classmethod
884884
def from_file_map(klass, file_map, buffer_size=35000000):

nibabel/gifti/tests/test_gifti.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import numpy as np
88

9+
from nibabel.tmpdirs import InTemporaryDirectory
10+
911
from ... import load
1012
from .. import (GiftiImage, GiftiDataArray, GiftiLabel,
1113
GiftiLabelTable, GiftiMetaData, GiftiNVPairs,
@@ -40,7 +42,7 @@ def test_agg_data():
4042

4143
assert_array_equal(surf_gii_img.agg_data('pointset'), point_data)
4244
assert_array_equal(surf_gii_img.agg_data('triangle'), triangle_data)
43-
assert_array_equal(func_gii_img.agg_data('time series'), func_data)
45+
assert_array_equal(func_gii_img.agg_data('time series'), func_data)
4446
assert_array_equal(shape_gii_img.agg_data('shape'), shape_data)
4547

4648
assert surf_gii_img.agg_data('time series') == ()
@@ -443,3 +445,11 @@ def test_darray_dtype_coercion_failures():
443445
da_copy = gii_copy.darrays[0]
444446
assert np.dtype(da_copy.data.dtype) == np.dtype(darray_dtype)
445447
assert_array_equal(da_copy.data, da.data)
448+
449+
450+
def test_gifti_file_close():
451+
gii = load(test_data('gifti', 'ascii.gii'))
452+
with pytest.WarningsRecorder() as record:
453+
with InTemporaryDirectory():
454+
gii.to_filename('test.gii')
455+
assert not any(isinstance(r.message, ResourceWarning) for r in record.list)

0 commit comments

Comments
 (0)