summaryrefslogtreecommitdiff
path: root/numpy/lib/tests
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2014-06-03 16:51:14 -0600
committerCharles Harris <charlesr.harris@gmail.com>2014-06-03 16:51:14 -0600
commitd856a7f8a1fdca371fe090d2eaf731d69f26e1dd (patch)
tree8f7b7346169b8a778de7861d08b00cb7f663cb6e /numpy/lib/tests
parent3f5e45737361e97a87c7652eac5e095729360994 (diff)
parent21ea30b00cf79ae3107a54b1592efe1571d5a7d7 (diff)
downloadnumpy-d856a7f8a1fdca371fe090d2eaf731d69f26e1dd.tar.gz
Merge pull request #4773 from juliantaylor/win-testfix
BUG: fix test deleting temporary file before using it on windows
Diffstat (limited to 'numpy/lib/tests')
-rw-r--r--numpy/lib/tests/test_io.py57
1 files changed, 35 insertions, 22 deletions
diff --git a/numpy/lib/tests/test_io.py b/numpy/lib/tests/test_io.py
index d0f81bde3..49ad1ba5b 100644
--- a/numpy/lib/tests/test_io.py
+++ b/numpy/lib/tests/test_io.py
@@ -88,32 +88,32 @@ class RoundtripTest(object):
file_on_disk = kwargs.get('file_on_disk', False)
if file_on_disk:
- # Do not delete the file on windows, because we can't
- # reopen an already opened file on that platform, so we
- # need to close the file and reopen it, implying no
- # automatic deletion.
- if sys.platform == 'win32' and MAJVER >= 2 and MINVER >= 6:
- target_file = NamedTemporaryFile(delete=False)
- else:
- target_file = NamedTemporaryFile()
+ target_file = NamedTemporaryFile(delete=False)
load_file = target_file.name
else:
target_file = BytesIO()
load_file = target_file
- arr = args
+ try:
+ arr = args
- save_func(target_file, *arr, **save_kwds)
- target_file.flush()
- target_file.seek(0)
+ save_func(target_file, *arr, **save_kwds)
+ target_file.flush()
+ target_file.seek(0)
- if sys.platform == 'win32' and not isinstance(target_file, BytesIO):
- target_file.close()
+ if sys.platform == 'win32' and not isinstance(target_file, BytesIO):
+ target_file.close()
- arr_reloaded = np.load(load_file, **load_kwds)
+ arr_reloaded = np.load(load_file, **load_kwds)
- self.arr = arr
- self.arr_reloaded = arr_reloaded
+ self.arr = arr
+ self.arr_reloaded = arr_reloaded
+ finally:
+ if not isinstance(target_file, BytesIO):
+ target_file.close()
+ # holds an open file descriptor so it can't be deleted on win
+ if not isinstance(arr_reloaded, np.lib.npyio.NpzFile):
+ os.remove(target_file.name)
def check_roundtrips(self, a):
self.roundtrip(a)
@@ -166,6 +166,13 @@ class RoundtripTest(object):
a = np.array([(1, 2), (3, 4)], dtype=[('x', 'i4'), ('y', 'i4')])
self.check_roundtrips(a)
+ def test_format_2_0(self):
+ dt = [(("%d" % i) * 100, float) for i in range(500)]
+ a = np.ones(1000, dtype=dt)
+ with warnings.catch_warnings(record=True):
+ warnings.filterwarnings('always', '', UserWarning)
+ self.check_roundtrips(a)
+
class TestSaveLoad(RoundtripTest, TestCase):
def roundtrip(self, *args, **kwargs):
@@ -178,11 +185,17 @@ class TestSaveLoad(RoundtripTest, TestCase):
class TestSavezLoad(RoundtripTest, TestCase):
def roundtrip(self, *args, **kwargs):
RoundtripTest.roundtrip(self, np.savez, *args, **kwargs)
- for n, arr in enumerate(self.arr):
- reloaded = self.arr_reloaded['arr_%d' % n]
- assert_equal(arr, reloaded)
- assert_equal(arr.dtype, reloaded.dtype)
- assert_equal(arr.flags.fnc, reloaded.flags.fnc)
+ try:
+ for n, arr in enumerate(self.arr):
+ reloaded = self.arr_reloaded['arr_%d' % n]
+ assert_equal(arr, reloaded)
+ assert_equal(arr.dtype, reloaded.dtype)
+ assert_equal(arr.flags.fnc, reloaded.flags.fnc)
+ finally:
+ # delete tempfile, must be done here on windows
+ if self.arr_reloaded.fid:
+ self.arr_reloaded.fid.close()
+ os.remove(self.arr_reloaded.fid.name)
@np.testing.dec.skipif(not IS_64BIT, "Works only with 64bit systems")
@np.testing.dec.slow