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_router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   )Zconn r   A/usr/lib/python3/dist-packages/jeepney/io/tests/test_threading.pyrouter   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   s<   t td}| j|dd}|jjtjksJ |jdksJ d S )NZPing   Ztimeoutr   )r   bus_peersend_and_get_replyheadermessage_typer   method_returnbody)r   Z	ping_callreplyr   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sAJ W d    d S 1 sLw   Y  d S )
Nz7io.gitlab.takluyver.jeepney.tests.threading_test_filtersignalZNameOwnerChanged)typeZsenderr   memberpathr   r	   g       @r    )r   r   r   r   r   r   Zadd_arg_conditionZAddMatchfilterr&   getr   r   )r   r   r(   Z
match_rulequeuer)   Z
signal_msgr   r   r   test_filter*   s"   

"r3   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_fdB   s   
"r7   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   Tr4   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_fdL   s   r:   )ZpytestZjeepneyr   r   r   Zjeepney.bus_messagesr   r   Zjeepney.io.threadingr   r   Zutilsr
   ZmarkZskipifZ
pytestmarkZfixturer   r   r   r!   r*   r3   r7   r:   r   r   r   r   <module>   s*    
	
