o
    gi                     @   sL   d dl Z d dlZd dlZd dlZd dlmZ ddlmZ G dd deZ	dS )    N)_objects   )TestCasec                   @   s^   e Zd Zdd Zdd Zdd Zejjddej	d	ejj
eed
 dddd ZdS )TestObjectsc                 C   s   t d}~t d}~d S )Nr   r   )oObjectIDselfoid r   U/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/h5py/tests/test_objects.pytest_invalid   s   

zTestObjects.test_invalidc                 C   s:   t d}t d}t d}| || | || d S )N*   +   )r   r   assertEqualassertNotEqual)r	   oid1oid2oid3r   r   r   test_equality   s
   


zTestObjects.test_equalityc                 C   sB   t d}| t t| W d    d S 1 sw   Y  d S )Nr   )r   r   assertRaises	TypeErrorhashr   r   r   r   	test_hash%   s   

"zTestObjects.test_hashz!fork() from a thread may deadlock)reasonzAignore:.*use of fork\(\) may lead to deadlocks:DeprecationWarningforkzfork() not availablec                    s   t    fdd}t j|d}|     z[t }|dkr9tjj	ddr3tj
  td n3td n&tjj	ddsBJ tj
  t|d\}}t|sVJ t|dksmJ W |  dS W |  dS W |  dS |  w )	a  Test that handling of the phil Lock after fork is correct.

        h5py uses os.register_at_fork() to cause os.fork() to acquire the phil lock
        before forking and release it afterwards, so that the global state of libhdf5
        cannot be cloned in a corrupted state.
        c                      s>   t j    td W d    d S 1 sw   Y  d S )Nr   )r   philsettimesleepr   thread_acquired_phil_eventr   r   f:   s   "z2TestObjects.test_phil_fork_with_threads.<locals>.f)targetr   F)blockingr   N)	threadingEventThreadstartwaitosr   r   r   acquirerelease_exitwaitpid	WIFEXITEDWEXITSTATUSjoin)r	   r"   threadpid_statusr   r    r   test_phil_fork_with_threads+   s.   


z'TestObjects.test_phil_fork_with_threadsN)__name__
__module____qualname__r   r   r   pytestmarkthread_unsafefilterwarningsskipifhasattrr*   r6   r   r   r   r   r      s    	r   )
r*   r%   r   r:   h5pyr   r   commonr   r   r   r   r   r   <module>   s   