
    +c4                     
   d dl Z d dlZd dlmZmZmZmZ d dlmZm	Z	 d dl
mZmZmZ ddlmZ ej                   j                   ej                   j#                  e d      gZd	 Z ed
dd      Zd Zd Zd Zd Zd Zd Zd Zy)    N)DBusAddressDBusErrorResponseMessageTypenew_method_call)message_bus	MatchRule)open_dbus_connectionopen_dbus_routerProxy   )have_session_buszTests require DBus session bus)reasonc                     K   t        d       d {   } | 4 d {    | j                  j                  d      sJ d d d       d {    y 7 =7 47 	# 1 d {  7  sw Y   y xY ww)NSESSIONbus:)r	   unique_name
startswith)conns    </usr/lib/python3/dist-packages/jeepney/io/tests/test_trio.pytest_connectr      sj     %)44D 0 0**3///0 0 0 50 0 0 0 0sS   A+A
A+AA+AA+
AA+A+A+A(AA($A+zorg.freedesktop.DBusz/org/freedesktop/DBuszorg.freedesktop.DBus.Peer)bus_nameobject_path	interfacec                    K   t        t        d      } t        d      4 d {   }t        j                  d      5  |j                  |        d {   }d d d        d d d       d {    j                  j                  t        j                  k(  sJ |j                  dk(  sJ y 7 7 Y# 1 sw Y   XxY w7 O# 1 d {  7  sw Y   _xY ww)NPingr   r       )r   bus_peerr
   trio
fail_aftersend_and_get_replyheadermessage_typer   method_returnbody	ping_callreqreplys      r   test_send_and_get_replyr,       s     &1II. < <#__Q 	<00;;E	<< < <<$$(A(AAAA::<;	< 	<< < < <sn   !CB*CB<B.B,B.B<C*B:+A C,B..B7	3B<:C<CCC
Cc                    K   t        t        d      } t        d      4 d {   }t        j                  d      5  |j                  |        d {   }d d d        d d d       d {    j                  j                  t        j                  k(  sJ y 7 u7 H# 1 sw Y   GxY w7 ># 1 d {  7  sw Y   NxY ww)NSnartr   r   r   )
r   r    r
   r!   r"   r#   r$   r%   r   errorr(   s      r   test_send_and_get_reply_errorr0   *   s     '2II. < <#__Q 	<00;;E	<< < <<$$(9(9999	<;	< 	<< < < <sm   !C BC B+BBBB+C *B)+/C BB&	"B+)C +B=1B42B=9C c                  4  K   t        d      4 d {   } t        t        |       }d}|j                  |       d {   }|dv sJ |j	                  |       d {   \  }|du sJ d d d       d {    y 7 g7 >7 !7 # 1 d {  7  sw Y   y xY ww)Nr   r   z+io.gitlab.takluyver.jeepney.examples.Server>   r      T)r
   r   r   RequestNameNameHasOwner)r*   proxynameres	has_owners        r   
test_proxyr;   3   s     I. ! !#k3'<%%d++l""" --d33
	D   ! ! ! , 4! ! ! !sf   BA;B'BA=BA?B*B5B6B=B?BBB	B
BBc                  :  K   t        d      4 d {   } t        t        |       }t        j                  t
              5  |j                  d       d {    d d d        d d d       d {    y 7 `7 # 1 sw Y   xY w7 # 1 d {  7  sw Y   y xY ww)Nr   r   z:123)r
   r   r   pytestraisesr   r5   )r*   r7   s     r   test_proxy_errorr?   >   s     I. , ,#k3']],- 	,##F+++	,, , , ,	, 	,, , , ,sn   BA4B*BA8A6A8B#B.B/B6A88B	=BBBBBBc                    K   d} t        d      4 d {   }t        t        |      }t        dt        j                  t        j
                  dt        j                        }|j                  d|        |j                  |       d {    |j                  |      4 d {   }|j                  |        d {   \  }|dk(  sJ t        j                  d	      5  |j                          d {   }d d d        j                  | d
|j                  fk(  sJ d d d       d {    d d d       d {    y 7 +7 7 7 7 T# 1 sw Y   SxY w7 ,# 1 d {  7  sw Y   <xY w7 3# 1 d {  7  sw Y   y xY ww)Nz2io.gitlab.takluyver.jeepney.tests.trio_test_filterr   r   signalNameOwnerChanged)typesenderr   memberpathr   r   g       @ )r
   r   r   r   r   r   r   add_arg_conditionAddMatchfilterr5   r!   r"   receiver'   r   )r8   routerr   
match_rulechanr9   
signal_msgs          r   test_filterrP   E   sm    ?DI. E E&K(''!++%((

 	$$Q- ll:&&&==, 	E 	E..DC!8O8% 2#'<<>1
2??tR1C1C&DDDD	E 	EE E E 	'	E. 22 2		E 	E 	E 	EE E E Es   FE FA1E0
EE0$E%E0(E=E>"E E4E	
5E9&EE0*E+E0/F:E.;FE0E0E	EEEE0E+	E" E+	'E0.F0F6E97F>Fc                   K   t        | d      }t        j                  d      5  t        dd      4 d {   }|j	                  |       d {   }d d d       d {    d d d        j
                  j                  t        j                  u sJ |j                  d   j                  d      5 }|j                         dk(  sJ 	 d d d        y 7 7 7 v# 1 d {  7  sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY ww)	NGetFDr   r   Tr   
enable_fdsr   zw+readme)r   r!   r"   r
   r#   r$   r%   r   r&   r'   to_fileread)respond_with_fd
getfd_callrL   r+   fs        r   test_recv_fdr[   _   s      ':J		 @#	dC 	@ 	@v 33J??E	@ 	@@ <<$$(A(AAAA	A		t	$ $vvx8###$ $		@?	@ 	@ 	@ 	@@ @
$ $s   "DC-CC-CCCC-C C-$AD2C9		DC-CC-C*	C!C*	&C--C62D9D>Dc                   K   | \  }}t        |dd|f      }t        j                  d      5  t        dd      4 d {   }|j	                  |       d {   }d d d       d {    d d d        j
                  j                  t        j                  u sJ |j                  d   |k(  sJ y 7 r7 [7 M# 1 d {  7  sw Y   ]xY w# 1 sw Y   axY ww)NReadFDhr   r   TrS   r   )
r   r!   r"   r
   r#   r$   r%   r   r&   r'   )temp_file_and_contentsread_from_fd	temp_filedatareadfd_callrL   r+   s          r   test_send_fdrd   j   s     ,OIt!,#	|LK		 A#	dC 	A 	Av 33K@@E	A 	AA <<$$(A(AAAA::a=D   		A@	A 	A 	A 	AA Asu   *CCB1CB7B3B7C'B5(C,AC1C3B75C7C		=C >C		CCC)r!   r=   jeepneyr   r   r   r   jeepney.bus_messagesr   r   jeepney.io.trior	   r
   r   utilsr   markskipif
pytestmarkr   r    r,   r0   r;   r?   rP   r[   rd   r       r   <module>rm      s      P P 7  $ KK
KK%E  
0
 #'):!,E4$!rl   