|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
|
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' |
|
|
|
|
|
|
|
|
try: |
|
|
h5py._errors.unsilence_errors() |
|
|
|
|
|
_access_not_existing_object(filename) |
|
|
captured = capfd.readouterr() |
|
|
assert captured.err != '' |
|
|
assert captured.out == '' |
|
|
|
|
|
|
|
|
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 == '' |
|
|
|