Spaces:
Paused
Paused
| # 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 == '' | |