Viewing file: test_errors.py (2.19 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# 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 == ''
|