| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # 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 pytest
- import h5py
- from .common import make_name
- 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
- @pytest.mark.thread_unsafe(reason="Changes global state")
- 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 / make_name("{}.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/make_name("{}.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 == ''
|