o
    `                     @   s   d dl Z d dlmZmZmZ d dlmZmZ d dlm	Z	m
Z
 ddlmZ e jje ddZe jd	d
 Zdd ZeddddZdd Zdd Zdd Zdd Zdd ZdS )    N)new_method_callMessageTypeDBusAddress)message_bus	MatchRule)open_dbus_connectionProxy   )have_session_buszTests require DBus session bus)reasonc                  c   s8    t dd} | V  W d    d S 1 sw   Y  d S )NSESSION)bus)r   )conn r   @/usr/lib/python3/dist-packages/jeepney/io/tests/test_blocking.pysession_conn   s   "r   c                 C   s   | j dsJ d S )N:)unique_name
startswith)r   r   r   r   test_connect   s   r   zorg.freedesktop.DBusz/org/freedesktop/DBuszorg.freedesktop.DBus.Peer)bus_nameobject_path	interfacec                 C   sd   t td}| j|ddd}|jjtjksJ |jdksJ t td}| j|ddd}|dks0J d S )NZPing   F)timeoutZunwrapr   T)r   bus_peersend_and_get_replyheadermessage_typer   method_returnbody)r   Z	ping_callreplyZ
reply_bodyr   r   r   test_send_and_get_reply   s   

r"   c                 C   sH   t t| dd}d}||}|dv sJ |j|dd\}|du s"J d S )Nr   r   z+io.gitlab.takluyver.jeepney.examples.Server>   r	         )Z_timeoutT)r   r   RequestNameZNameHasOwner)r   proxynameresZ	has_ownerr   r   r   
test_proxy%   s   
r,   c                 C   s   t t| }d}tdtjtjdtjd}|d| || | |'}|	|\}|dks0J | j
|dd}|j|d	| jfksBJ W d    d S 1 sMw   Y  d S )
Nz6io.gitlab.takluyver.jeepney.tests.blocking_test_filtersignalZNameOwnerChanged)typeZsenderr   memberpathr   r	   r&   r#    )r   r   r   r   r   r   Zadd_arg_conditionZAddMatchfilterr(   Zrecv_until_filteredr    r   )r   r   r*   Z
match_rulematchesr+   Z
signal_msgr   r   r   test_filter.   s"   

"r4   c                 C   s   t | d}tddd}|j|dd}W d    n1 sw   Y  |jjtju s+J |jd d}|	 d	ks<J W d    d S 1 sGw   Y  d S )
NZGetFDr   Tr   Z
enable_fdsr   r#   r   zw+Zreadme)
r   r   r   r   r   r   r   r    Zto_fileread)Zrespond_with_fdZ
getfd_callr   r!   fr   r   r   test_recv_fdG   s   
"r8   c                 C   sz   | \}}t |dd|f}tddd}|j|dd}W d    n1 s$w   Y  |jjtju s2J |jd |ks;J d S )	NZReadFDhr   Tr5   r   r#   r   )r   r   r   r   r   r   r   r    )Ztemp_file_and_contentsZread_from_fdZ	temp_filedataZreadfd_callr   r!   r   r   r   test_send_fdQ   s   r;   )ZpytestZjeepneyr   r   r   Zjeepney.bus_messagesr   r   Zjeepney.io.blockingr   r   Zutilsr
   ZmarkZskipifZ
pytestmarkZfixturer   r   r   r"   r,   r4   r8   r;   r   r   r   r   <module>   s*    

	
