Spaces:
Running
Running
File size: 2,331 Bytes
122d3ff |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# This file is part of h5py, a Python interface to the HDF5 library.
#
# http://www.h5py.org
#
# Copyright 2008-2013 Andrew Collette and contributors
#
# License: Standard 3-clause BSD; see "license.txt" for full license terms
# and contributor agreement.
"""
Tests the h5py.File object.
"""
import threading
import h5py
def _access_not_existing_object(filename):
"""Create a file and access not existing key"""
with h5py.File(filename, 'w') as newfile:
try:
doesnt_exist = newfile['doesnt_exist'].value
except KeyError:
pass
def test_unsilence_errors(tmp_path, capfd):
"""Check that HDF5 errors can be muted/unmuted from h5py"""
filename = tmp_path / 'test.h5'
# Unmute HDF5 errors
try:
h5py._errors.unsilence_errors()
_access_not_existing_object(filename)
captured = capfd.readouterr()
assert captured.err != ''
assert captured.out == ''
# Mute HDF5 errors
finally:
h5py._errors.silence_errors()
_access_not_existing_object(filename)
captured = capfd.readouterr()
assert captured.err == ''
assert captured.out == ''
def test_thread_hdf5_silence_error_membership(tmp_path, capfd):
"""Verify the error printing is squashed in all threads.
No console messages should be shown from membership tests
"""
th = threading.Thread(target=_access_not_existing_object,
args=(tmp_path / 'test.h5',))
th.start()
th.join()
captured = capfd.readouterr()
assert captured.err == ''
assert captured.out == ''
def test_thread_hdf5_silence_error_attr(tmp_path, capfd):
"""Verify the error printing is squashed in all threads.
No console messages should be shown for non-existing attributes
"""
def test():
with h5py.File(tmp_path/'test.h5', 'w') as newfile:
newfile['newdata'] = [1, 2, 3]
try:
nonexistent_attr = newfile['newdata'].attrs['nonexistent_attr']
except KeyError:
pass
th = threading.Thread(target=test)
th.start()
th.join()
captured = capfd.readouterr()
assert captured.err == ''
assert captured.out == ''
|