diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2014-06-03 16:51:14 -0600 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2014-06-03 16:51:14 -0600 |
commit | d856a7f8a1fdca371fe090d2eaf731d69f26e1dd (patch) | |
tree | 8f7b7346169b8a778de7861d08b00cb7f663cb6e /numpy/lib/tests | |
parent | 3f5e45737361e97a87c7652eac5e095729360994 (diff) | |
parent | 21ea30b00cf79ae3107a54b1592efe1571d5a7d7 (diff) | |
download | numpy-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.py | 57 |
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 |