
    kc                     n   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
  G d d	e j                        Z G d
 de j                        Z G d de j                        Z G d de j                        Z G d de j                        Zd Zedk(  r e j&                  d       yy)    N)as_bytes)DummyOptions)DummyProcess)DummyPConfig)DummyLogger)
DummyEventc                   8    e Zd Zd Zd Zd Zd	dZd Zd Zd Z	y)
PDispatcherTestsc                     ddl m}  |        y Nr   )clearsupervisor.eventsr   selfr   s     C/usr/lib/python3/dist-packages/supervisor/tests/test_dispatchers.pysetUpzPDispatcherTests.setUp   
    +    c                     ddl m}  |        y r   r   r   s     r   tearDownzPDispatcherTests.tearDown   r   r   c                     ddl m} |S )Nr   )PDispatcher)supervisor.dispatchersr   )r   r   s     r   _getTargetClassz PDispatcherTests._getTargetClass   s    6r   Nc                 2     | j                         |||      S Nr   )r   processchannelfds       r   _makeOnezPDispatcherTests._makeOne   s    %t##%gw;;r   c                 d    | j                         }| j                  t        |j                         y r   )r"   assertRaisesNotImplementedErrorreadabler   insts     r   test_readablezPDispatcherTests.test_readable   "    }}-t}}=r   c                 d    | j                         }| j                  t        |j                         y r   )r"   r$   r%   writabler'   s     r   test_writablezPDispatcherTests.test_writable!   r*   r   c                 d    | j                         }| j                  |j                         d        y r   )r"   assertEqualflushr'   s     r   
test_flushzPDispatcherTests.test_flush%   s#    }}t,r   Nstdoutr   )
__name__
__module____qualname__r   r   r   r"   r)   r-   r1    r   r   r
   r
      s%    <>>-r   r
   c                       e Zd Zd Zd Zd Zd$dZd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$y#)%POutputDispatcherTestsc                     ddl m}  |        y r   r   r   s     r   r   zPOutputDispatcherTests.setUp*   r   r   c                     ddl m}  |        y r   r   r   s     r   r   zPOutputDispatcherTests.tearDown.   r   r   c                     ddl m} |S )Nr   )POutputDispatcher)r   r=   )r   r=   s     r   r   z&POutputDispatcherTests._getTargetClass2   s    <  r   c                 v    ddl m} |j                  |j                  d} | j	                         |||   d      S )Nr   events)r3   stderr)
supervisorr@   ProcessCommunicationStdoutEventProcessCommunicationStderrEventr   )r   r   r    r@   s       r   r"   zPOutputDispatcherTests._makeOne6   s?    %"BB"BBD &t##%gvgBBr   c                     t               }t        |dd      }t        |      }| j                  |      }| j	                  |j                         d       y Nprocess1/bin/process1Fr   r   r   r"   r/   r,   r   optionsconfigr   
dispatchers        r   r-   z$POutputDispatcherTests.test_writable=   H    .gz?Cv&]]7+
,,.6r   c                     t               }t        |dd      }t        |      }| j                  |      }d|_        | j                  |j                         d       y NrG   rH   FTr   r   r   r"   closedr/   r&   rJ   s        r   test_readable_openz)POutputDispatcherTests.test_readable_openD   P    .gz?Cv&]]7+
!
,,.5r   c                     t               }t        |dd      }t        |      }| j                  |      }d|_        | j                  |j                         d       y NrG   rH   TFrQ   rJ   s        r   test_readable_closedz+POutputDispatcherTests.test_readable_closedL   P    .gz?Cv&]]7+
 
,,.6r   c                     t               }t        |dd      }t        |      }| j                  |      }| j	                  t
        |j                         y NrG   rH   r   r   r   r"   r$   r%   handle_write_eventrJ   s        r   test_handle_write_eventz.POutputDispatcherTests.test_handle_write_eventT   F    .gz?Cv&]]7+
-z/L/LMr   c                     t               }d|_        t        |ddd      }t        |      }| j	                  |      }| j                  |j                         d        | j                  |j                  d       y )N   abcrG   rH   d   stdout_capture_maxbytes)r   readfd_resultr   r   r"   r/   handle_read_eventoutput_bufferrJ   s        r   test_handle_read_eventz-POutputDispatcherTests.test_handle_read_event[   sk    . &gz?69;v&]]7+
557>116:r   c                 `   t               }d|_        t        |ddd      }t        |      }| j	                  |      }| j                  |j                         | j                  |j                         d        | j                  |j                  d       | j                  |j                         y )Nr   rG   rH   ra   rb   )r   rd   r   r   r"   assertFalserR   r/   re   rf   
assertTruerJ   s        r   %test_handle_read_event_no_data_closesz<POutputDispatcherTests.test_handle_read_event_no_data_closese   s    . #gz?69;v&]]7+
**+557>1137
))*r   c                 $   t               }t        |dd      }t        |      }| j                  |      }	 t	        d      #  |j                          Y nxY w|j                  j                  d   }| j                  |j                  d      |       y Ntest/testfoor   z,uncaptured python exception, closing channel
r   r   r   r"   
ValueErrorhandle_errorloggerdatarj   
startswithr   rK   rL   r   rM   results         r   test_handle_errorz(POutputDispatcherTests.test_handle_errorq       .gvw7v&]]7+
	&U##	&##%$$Q')):<<B	D   A   Ac                     t               }t        |dddd      }t        |      }d|_        | j	                  |      }d|_        d |j                  _        g fd	}d
dlm	} |j                  |j                  j                  |       |j                          | j                  t              d       d
   }| j                  |j                   |       | j                  |j                  d       | j                  |j"                  d       y )NrG   rH   /tmp/fooi  stdout_logfilerc   i  Tc                       y)Nhallooor7   r7   r   r   <lambda>zLPOutputDispatcherTests.test_toggle_capturemode_sends_event.<locals>.<lambda>   s    r   c                 (    j                  |        y r   appendeventLs    r   doitzHPOutputDispatcherTests.test_toggle_capturemode_sends_event.<locals>.doit       HHUOr   r   r?      r   )r   r   r   pidr"   capturemode
captureloggetvaluerB   r@   	subscribe
EventTypesPROCESS_COMMUNICATIONtoggle_capturemoder/   lenr   ru   	r   rK   rL   r   rM   r   r@   r   r   s	           @r   #test_toggle_capturemode_sends_eventz:POutputDispatcherTests.test_toggle_capturemode_sends_event~   s    .gz?-769; v&]]7+
!%
):
&	%**@@$G%%'Q#!0D)Y/r   c                 &   t               }t        |ddd      }t        |      }| j                  |      }|j	                          | j                  |j                  j                  d   j                  d       | j                  |j                  j                  d   j                  d       | j                  |j                  j                  d   j                  d       | j                  |j                  j                  d   j                  d       y NrG   rH   r}   r   r   T)r   r   r   r"   
removelogsr/   	normalloghandlersreopenedremovedchildlogrJ   s        r   test_removelogsz&POutputDispatcherTests.test_removelogs   s    .gz?-79v&]]7+
--66q9BBDI--66q9AA4H,,55a8AA4H,,55a8@@$Gr   c                 Z   t               }t        |ddd      }t        |      }| j                  |      }|j	                          | j                  |j                  j                  d   j                  d       | j                  |j                  j                  d   j                  d       y r   )
r   r   r   r"   
reopenlogsr/   r   r   r   r   rJ   s        r   test_reopenlogsz&POutputDispatcherTests.test_reopenlogs   s    .gz?-79v&]]7+
,,55a8AA4H--66q9BBDIr   c                    t               }ddlm} |j                  j                  |_        t        |ddd      }t        |      }| j                  |      }d|_	        |j                          | j                  |j                  j                  dg       | j                  |j                  j                  d   d       | j                  |j                  d	       y )
Nr   loggersrG   rH   r}   r   az'process1' stdout output:
ar   r   rB   r   LevelsByNameTRACloglevelr   r   r"   rf   record_outputr/   r   ru   rt   r   rK   r   rL   r   rM   s         r   &test_record_output_log_non_capturemodez=POutputDispatcherTests.test_record_output_log_non_capturemode   s     .&"//44gz?-79v&]]7+
#&
   ",,11C59,,Q/+	-1137r   c                    t               }t        |ddd      }t        |      }| j                  |d      }d|_        g fd}dd	lm} |j                  |j                  j                  |       |j                          | j                  t              d
       d   }| j                  |j                  |       | j                  |j                  d       y )NrG   rH   Tstdout_events_enabledr3      hello from stdoutc                 (    j                  |        y r   r   r   s    r   r   zWPOutputDispatcherTests.test_record_output_emits_stdout_event_when_enabled.<locals>.doit   r   r   r   r?   r   )r   r   r   r"   rf   rB   r@   r   r   PROCESS_LOG_STDOUTr   r/   r   r   ru   r   s	           @r   2test_record_output_emits_stdout_event_when_enabledzIPOutputDispatcherTests.test_record_output_emits_stdout_event_when_enabled       .gz?48:v&]]7H5
#7
 	%**==tD  "Q#!0%9:r   c                 <   t               }t        |ddd      }t        |      }| j                  |d      }d|_        g fd}dd	lm} |j                  |j                  j                  |       |j                          | j                  t              d       y )
NrG   rH   Fr   r3   r   c                 (    j                  |        y r   r   r   s    r   r   z`POutputDispatcherTests.test_record_output_does_not_emit_stdout_event_when_disabled.<locals>.doit   r   r   r   r?   )r   r   r   r"   rf   rB   r@   r   r   r   r   r/   r   r   rK   rL   r   rM   r   r@   r   s          @r   ;test_record_output_does_not_emit_stdout_event_when_disabledzRPOutputDispatcherTests.test_record_output_does_not_emit_stdout_event_when_disabled       .gz?49;v&]]7H5
#7
 	%**==tD  "Q#r   c                    t               }t        |ddd      }t        |      }| j                  |d      }d|_        g fd}dd	lm} |j                  |j                  j                  |       |j                          | j                  t              d
       d   }| j                  |j                  |       | j                  |j                  d       y )NrG   rH   Tstderr_events_enabledrA      hello from stderrc                 (    j                  |        y r   r   r   s    r   r   zWPOutputDispatcherTests.test_record_output_emits_stderr_event_when_enabled.<locals>.doit   r   r   r   r?   r   )r   r   r   r"   rf   rB   r@   r   r   PROCESS_LOG_STDERRr   r/   r   r   ru   r   s	           @r   2test_record_output_emits_stderr_event_when_enabledzIPOutputDispatcherTests.test_record_output_emits_stderr_event_when_enabled   r   r   c                 <   t               }t        |ddd      }t        |      }| j                  |d      }d|_        g fd}dd	lm} |j                  |j                  j                  |       |j                          | j                  t              d       y )
NrG   rH   Fr   rA   r   c                 (    j                  |        y r   r   r   s    r   r   z`POutputDispatcherTests.test_record_output_does_not_emit_stderr_event_when_disabled.<locals>.doit   r   r   r   r?   )r   r   r   r"   rf   rB   r@   r   r   r   r   r/   r   r   s          @r   ;test_record_output_does_not_emit_stderr_event_when_disabledzRPOutputDispatcherTests.test_record_output_does_not_emit_stderr_event_when_disabled   r   r   c                    t               }ddlm} |j                  j                  |_        t        |dddd      }t        |      }| j                  |      }d|_	        |j                          | j                  |j                  j                  dg       | j                  |j                  j                  d   d	       y )
Nr   r   rG   rH   r}   ra   r~   s!   stdout string longer than a tokenz;'process1' stdout output:
stdout string longer than a tokenr   r   s         r   7test_record_output_capturemode_string_longer_than_tokenzNPOutputDispatcherTests.test_record_output_capturemode_string_longer_than_token  s     .&"//44gz?-769; v&]]7+
#G
   ",,11>?	A,,Q/K	Mr   c                 "   t               }t        |dddd      }t        |      }| j                  |      }d|_        |j                          | j                  |j                  j                  g        | j                  |j                  d       y )NrG   rH   r}   ra   r~   r   )	r   r   r   r"   rf   r   r/   r   ru   rJ   s        r   ;test_record_output_capturemode_string_not_longer_than_tokenzRPOutputDispatcherTests.test_record_output_capturemode_string_not_longer_than_token  s     .gz?-769; v&]]7+
#&
   ",,11261137r   c                    ddl m} ddl m} g fd} |||       |j                  }|j                  }|dz   |z   }t               }ddlm} ||_        d}	t        |dd	|	d
      }
t        |
      }| j                  |      }	 ||_        |j                          | j                  t        j                  j!                  |	      d       | j                  t#        |j                        d       | j                  t#              d       d   }ddl m} | j                  |j&                  |       | j                  |j(                  |       | j                  |j*                  d       | j                  |j,                  d       	 |j.                  j1                          |j2                  j1                          t        j4                  |	       y # t6        t8        f$ r Y y w xY w# 	 |j.                  j1                          |j2                  j1                          t        j4                  |	       w # t6        t8        f$ r Y w w xY wxY w)Nr   ProcessCommunicationEventr   c                 (    j                  |        y r   r   r   r@   s    r   r   zJPOutputDispatcherTests.test_stdout_capturemode_single_buffer.<locals>.doit-      MM% r   s   hello	getLogger/tmp/logrG   rH   i  r~   r   rC   r3   )r   r   r   BEGIN_TOKEN	END_TOKENr   supervisor.loggersr   r   r   r"   rf   r   r/   ospathgetsizer   rC   	__class__r   r    ru   r   closer   removeOSErrorIOError)r   r   r   r   r   r   ru   rK   r   logfilerL   r   rM   r   rC   r@   s                  @r   %test_stdout_capturemode_single_bufferz<POutputDispatcherTests.test_stdout_capturemode_single_buffer'  s    	@/	!+T2/;;-77	X%	1.0%gz?-46:< v&]]7+
	'+J$$$&RWW__W5q9S!9!9:A>S[!,1IEIU__.MNU]]G4U]]H5UZZ2%%++-##))+		'"W% 	%%++-##))+		'"W% sE   DG% A	G G"!G"%I'A	H10I1I IIIc                 p	   ddl m} ddl m} g fd} |||       dd l}t	        t        |d|j                              }t	        |j                        dz  }|j                  }|j                  }||z   |z   |z   |z   }	d}
|	j                  |
      }|d   |
z   }|d   |
z   }|d	   }t               }dd
lm} ||_        d}t        |dd|d      }t        |      }| j!                  |      }	 ||_        |j%                          |j&                  j(                  D cg c]  }|j+                          c} t-        |d      5 }| j/                  |j1                         |       d d d        | j/                  |j"                  |t3        |      d         | j/                  t3              d       |xj"                  |z  c_        |j%                          | j/                  t3              d       |j&                  j(                  D cg c]  }|j+                          c} t-        |d      5 }| j/                  |j1                         |       d d d        | j/                  |j"                  |t3        |      d         | j/                  t3              d       |xj"                  |z  c_        |j%                          |j&                  j(                  D cg c]  }|j+                          c} t-        |d      5 }| j/                  |j1                         |d	z         d d d        | j/                  t3              d       d   }ddl m} | j/                  |j6                  |       | j/                  |j8                  |       | j/                  |j:                  d       | j/                  |j<                  |       	 |j>                  jA                          |j&                  jA                          tC        jD                  |       y c c}w # 1 sw Y   xY wc c}w # 1 sw Y   xY wc c}w # 1 sw Y   xY w# tF        tH        f$ r Y y w xY w# 	 |j>                  jA                          |j&                  jA                          tC        jD                  |       w # tF        tH        f$ r Y w w xY wxY w)Nr   r   r   c                 (    j                  |        y r   r   r   s    r   r   zMPOutputDispatcherTests.test_stdout_capturemode_multiple_buffers.<locals>.doitW  r   r   letters      :r      r   r   rG   rH   i'  r~   rbr   r3   )%r   r   r   stringr   getattrascii_lettersdigitsr   r   splitr   r   r   r   r   r"   rf   r   r   r   r0   openr/   readr   rC   r   r   r    ru   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   ru   colonbrokenfirstsecondthirdrK   r   r   rL   r   rM   xfr   rC   r@   s                            @r   (test_stdout_capturemode_multiple_buffersz?POutputDispatcherTests.test_stdout_capturemode_multiple_buffersS  s   ?/	!+T2769f6J6JKL&--(1,/;;-77	;&/);gE E"q	E!U"q	.0%gz?-46;= v&]]7+
%	',J$$$&!+!4!4!=!=?Aaggi?gt$ 4  734Z55uS\]7KLS[!,$$.$$$&S[!,!+!4!4!=!=?Aaggi?gt$ 4  734Z55uS\]7KLS[!,$$-$$$&!+!4!4!=!=?Aaggi?gt$ 8  7Q;78S[!,1IEIU__.MNU]]G4U]]H5UZZ0%%++-##))+		'"A @4 4 @4 4 @8 8 W% 	%%++-##))+		'"W% s   ./Q P	4Q !P$B#Q PQ -!P BQ P--Q <$P2 BQ ?A	P? 	Q PQ  P*%Q 2P<7Q ?QQR5A	R R5 R2/R51R22R5c                 N   t               }d|_        t        |ddd      }t        |      }| j	                  |      }d}d}||_        |j                          | j                  t        |j                  j                        d       | j                  |j                  j                  d	   |       d
|_        ||_        |j                          | j                  t        |j                  j                        d       | j                  |j                  j                  d   |       y NTrG   rH   r}   r   4   [34mHello world... this is longer than a token![0m+   Hello world... this is longer than a token!r   r   Fr   )r   
strip_ansir   r   r"   rf   r   r/   r   r   ru   r   rK   rL   r   rM   ansinoansis          r   test_strip_ansiz&POutputDispatcherTests.test_strip_ansi  s    .!gz?-79v&]]7+
L?#'
   "Z00556:,,11!4f="#'
   "Z00556:,,11!4d;r   c                    t               }t        |dd      }t        |      }| j                  |      }| j	                  |j
                  |       | j	                  |j                  d       | j	                  |j                  d       | j	                  |j                  d        | j	                  |j                  d        | j	                  |j                  d        y NrG   rH   r3   r   )r   r   r   r"   r/   r   r    r!   r   r   r   rJ   s        r   test_ctor_no_logfilesz,POutputDispatcherTests.test_ctor_no_logfiles  s    .gz?Cv&]]7+
++W5++X6*..5--t4,,d3r   c                    t               }t        |ddd      }t        |      }| j                  |      }| j	                  |j
                  |       | j	                  |j                  d       | j	                  |j                  d       | j	                  |j                  d        | j	                  |j                  j                  t               | j	                  |j                  |j                         y NrG   rH   r}   r   r3   r   )r   r   r   r"   r/   r   r    r!   r   r   r   r   r   rJ   s        r   test_ctor_logfile_onlyz-POutputDispatcherTests.test_ctor_logfile_only  s    .gz?-79v&]]7+
++W5++X6*..5--77E,,j.B.BCr   c                    t               }t        |ddd      }t        |      }| j                  |      }| j	                  |j
                  |       | j	                  |j                  d       | j	                  |j                  d       | j	                  |j                  j                  t               | j	                  |j                  d        | j	                  |j                  d        y )NrG   rH   i,  rb   r3   r   )r   r   r   r"   r/   r   r    r!   r   r   r   r   r   rJ   s        r   test_ctor_capturelog_onlyz0POutputDispatcherTests.test_ctor_capturelog_only  s    .gz?69;v&]]7+
++W5++X6*..88+F--t4,,d3r   c                 f   ddl m} t               }t        |dd |d            }t	        |      }| j                  |      }| j                  |j                  |       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d        y )Nr   )logfile_namerG   rH    r   r3   )supervisor.datatypesr
  r   r   r   r"   r/   r   r    r!   r   )r   r
  rK   rL   r   rM   s         r   (test_ctor_stdout_logfile_is_empty_stringz?POutputDispatcherTests.test_ctor_stdout_logfile_is_empty_string  s    5.gz?-9"-=?v&]]7+
++W5++X6*--t4r   c           	      x   ddl m}m} t               }t	        |dd |d       |d            }t        |      }| j                  |      }| j                  |j                  |       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d        y )	Nr   booleanr
  rG   rH   NONEfalser   stdout_syslogr3   )r  r  r
  r   r   r   r"   r/   r   r    r!   r   )r   r  r
  rK   rL   r   rM   s          r   5test_ctor_stdout_logfile_none_and_stdout_syslog_falsezLPOutputDispatcherTests.test_ctor_stdout_logfile_none_and_stdout_syslog_false  s    >.gz?-9&-A,3G,<> v&]]7+
++W5++X6*--t4r   c           	      <   ddl m}m} ddlm}m} ddlm}  |       }|j                  |_	        t        |dd |d       |d      	      }t        |      }| j                  |      }	| j                  |	j                  |       | j                  |	j                  d
       | j                  |	j                   d       | j                  t#        |	j$                  j&                        d       | j                  |	j$                  j&                  d   j(                  |       y )Nr   r  )r   SyslogHandlerServerOptionsrG   rH   r  truer  r3   r   )r  r  r
  r   r   r  supervisor.optionsr  r   r   r   r   r"   r/   r   r    r!   r   r   r   r   )
r   r  r
  r   r  r  rK   rL   r   rM   s
             r   4test_ctor_stdout_logfile_none_and_stdout_syslog_truezKPOutputDispatcherTests.test_ctor_stdout_logfile_none_and_stdout_syslog_true  s    >B4/',,gz?-9&-A,3FO= v&]]7+
++W5++X6*Z11::;Q?--66q9CC	r   c           	      p   ddl m}m} ddlm}m} ddlm}  |       }|j                  |_	        t        |dd |d       |d      	      }t        |      }| j                  |      }	| j                  |	j                  |       | j                  |	j                  d
       | j                  |	j                   d       | j                  t#        |	j$                  j&                        d       | j                  |	j$                  j&                  d   j(                  |       |	j$                  j+                          y )Nr   r  )FileHandlerr   r  rG   rH   r}   r  r  r3   r   )r  r  r
  r   r  r   r  r  r   r   r   r   r"   r/   r   r    r!   r   r   r   r   r   )
r   r  r
  r  r   r  rK   rL   r   rM   s
             r   4test_ctor_stdout_logfile_str_and_stdout_syslog_falsezKPOutputDispatcherTests.test_ctor_stdout_logfile_str_and_stdout_syslog_false   s    >@4/',,gz?-9*-E,3G,<> v&]]7+
++W5++X6*Z11::;Q?--66q9CC[Q""$r   c           	        	
 ddl m}m} ddlm	m}m
 ddlm}  |       }|j                  |_
        t        |dd |d       |d      	      }t        |      }| j                  |      }| j                  |j                  |       | j                  |j                   d
       | j                  |j"                  d       | j                  t%        |j&                  j(                        d       | j+                  t-        	fd|j&                  j(                  D                     | j+                  t-        
fd|j&                  j(                  D                     |j&                  j/                          y )Nr   r  )r  r   r  r  rG   rH   r}   r  r  r3   r   c              3   6   K   | ]  }t        |        y wr   
isinstance).0hr  s     r   	<genexpr>z]POutputDispatcherTests.test_ctor_stdout_logfile_str_and_stdout_syslog_true.<locals>.<genexpr>!  s      +1Jq+6 +   c              3   6   K   | ]  }t        |        y wr   r"  )r$  r%  r  s     r   r&  z]POutputDispatcherTests.test_ctor_stdout_logfile_str_and_stdout_syslog_true.<locals>.<genexpr>#  s      +QJq-8 +r'  )r  r  r
  r   r  r   r  r  r  r   r   r   r   r"   r/   r   r    r!   r   r   r   rj   anyr   )r   r  r
  r   r  rK   rL   r   rM   r  r  s            @@r   3test_ctor_stdout_logfile_str_and_stdout_syslog_truezJPOutputDispatcherTests.test_ctor_stdout_logfile_str_and_stdout_syslog_true  s(   >OO4/',,gz?-9*-E,3FO= v&]]7+
++W5++X6*Z11::;Q? +  ))+ + 	, +  ))+ + 	,""$r   c                 *   t               }t        |dd      }t        |      }| j                  |      }t	        |      }| j                  d|v        | j                  |j                  d      d       | j                  |j                  d      |       y )NrG   rH   r=   "supervisor.tests.base.DummyProcess	(stdout)>	r   r   r   r"   reprrj   assertNotEqualfindendswithr   rK   rL   r   rM   dreprs         r   	test_reprz POutputDispatcherTests.test_repr'  s    .gz?Cv&]]7+
Z +u45JJ;<	 	{3U;r   c                    t               }t        |dd      }t        |      }| j                  |      }|j	                          | j                  |j                  d       |j	                          | j                  |j                  d       y NrG   rH   Tr   r   r   r"   r   r/   rR   rJ   s        r   
test_closez!POutputDispatcherTests.test_close3  s    .gz?Cv&]]7+
**D1**D1r   N)r3   )%r4   r5   r6   r   r   r   r"   r-   rS   rW   r]   rg   rk   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r*  r6  r:  r7   r   r   r9   r9   )   s    !C767N;
+D0,
HJ8";($";($"M&8*XDL<,
4D4
55$%$%*
<2r   r9   c                   l    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)PInputDispatcherTestsc                     ddl m} |S )Nr   )PInputDispatcher)r   r?  )r   r?  s     r   r   z%PInputDispatcherTests._getTargetClass?  s    ;r   c                 6    d} | j                         ||d      S )Nstdinr   r   r   r   r    s      r   r"   zPInputDispatcherTests._makeOneC  s!    %t##%gw::r   c                     t        d       }| j                  |      }d|_        d|_        | j	                  |j                         d       y )Nr   FTr   r"   input_bufferrR   r/   r,   r   r   rM   s      r   test_writable_open_nodataz/PInputDispatcherTests.test_writable_open_nodataG  sC    t$]]7+
"%
!
,,.5r   c                     t        d       }| j                  |      }d|_        d|_        | j	                  |j                         d       y )Nr  FrD  rF  s      r   test_writable_open_withdataz1PInputDispatcherTests.test_writable_open_withdataN  sC    t$]]7+
"$
!
,,.6r   c                     t        d       }| j                  |      }d|_        d|_        | j	                  |j                         d       y )Nr   TFrD  rF  s      r   test_writable_closed_nodataz1PInputDispatcherTests.test_writable_closed_nodataU  sC    t$]]7+
"%
 
,,.6r   c                     t        d       }| j                  |      }d|_        d|_        | j	                  |j                         d       y )Nr  TFrD  rF  s      r   test_writable_closed_withdataz3PInputDispatcherTests.test_writable_closed_withdata\  sC    t$]]7+
"$
 
,,.6r   c                 |    t        d       }| j                  |      }| j                  |j                         d       y )NF)r   r"   r/   r&   rF  s      r   r)   z#PInputDispatcherTests.test_readablec  s3    t$]]7+
,,.6r   c                     t               }t        |dd      }t        |      }| j                  |      }d|_        | j                  |j                         d        | j                  |j                  d   d       y )NrG   rH   halloooor   )r   r   r   r"   rE  r/   r\   writtenrJ   s        r   r]   z-PInputDispatcherTests.test_handle_write_eventh  si    .gz?Cv&]]7+
",
668$?+Z8r   c                 2   t               }t        |dd      }t        |      }| j                  |      }| j	                  |j
                  d       |j                          | j	                  |j
                  d       | j	                  |j                  i        y )Nrn   ro   r   )r   r   r   r"   r/   rE  r\   rQ  rJ   s        r   test_handle_write_event_nodataz4PInputDispatcherTests.test_handle_write_event_nodataq  s{    .gvw7v&]]7+
00#6%%'00#6"-r   c                 $   t               }t        |dd      }t        |      }| j                  |      }d|_        dd l}t        |j                  t        j                  |j                              |_
        |j                          | j                  |j                  d       | j                  |j                  j                  d   j!                  d             | j                  |j                  j                  d   j#                  d             y )Nrn   ro   rP  r   r   zfd 0 closed, stopped monitoring(stdin)>)r   r   r   r"   rE  errnor   EPIPEr   strerrorwrite_exceptionr\   r/   rj   rt   ru   rv   r3  r   rK   rL   r   rM   rV  s         r   $test_handle_write_event_epipe_raisedz:PInputDispatcherTests.test_handle_write_event_epipe_raised{  s    .gvw7v&]]7+
",
")%++*,++ekk*B#D%%'00#6++A.99-/ 	0++A.77
CDr   c                 0   t               }t        |dd      }t        |      }| j                  |      }d|_        dd l}t        |j                  t        j                  |j                              |_
        | j                  t        |j                         y )Nrn   ro   rP  r   )r   r   r   r"   rE  rV  r   EBADFr   rX  rY  r$   r\   rZ  s         r   'test_handle_write_event_uncaught_raisedz=PInputDispatcherTests.test_handle_write_event_uncaught_raised  st    .gvw7v&]]7+
",
")%++*,++ekk*B#D':#@#@Ar   c                 .   t               }t        |dd      }t        |      }| j                  |      }d|_        d|_        |j                          | j                  t        |j
                        d       | j                  |j                  d   d       y )Nrn   ro   r   2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1   r   r   )
r   r   r   r"   write_acceptrE  r\   r/   r   rQ  rJ   s        r   %test_handle_write_event_over_os_limitz;PInputDispatcherTests.test_handle_write_event_over_os_limit  s    .gvw7v&]]7+
 "*
%%'Z445r:+S1r   c                 |    t        d       }| j                  |      }| j                  t        |j                         y r   )r   r"   r$   r%   re   rF  s      r   rg   z,PInputDispatcherTests.test_handle_read_event  s1    t$]]7+
-z/K/KLr   c                 $   t               }t        |dd      }t        |      }| j                  |      }	 t	        d      #  |j                          Y nxY w|j                  j                  d   }| j                  |j                  d      |       y rm   rq   rw   s         r   ry   z'PInputDispatcherTests.test_handle_error  rz   r{   c                 *   t               }t        |dd      }t        |      }| j                  |      }t	        |      }| j                  d|v        | j                  |j                  d      d       | j                  |j                  d      |       y )NrG   rH   r?  r,  r-  rU  r/  r4  s         r   r6  zPInputDispatcherTests.test_repr  s    .gz?Cv&]]7+
Z *e34JJ;<	 	z2E:r   c                    t               }t        |dd      }t        |      }| j                  |      }|j	                          | j                  |j                  d       |j	                          | j                  |j                  d       y r8  r9  rJ   s        r   r:  z PInputDispatcherTests.test_close  r;  r   N)r4   r5   r6   r   r"   rG  rI  rK  rM  r)   r]   rS  r[  r^  rc  rg   ry   r6  r:  r7   r   r   r=  r=  >  sV     ;67777
9.E	B	2M
D
;2r   r=  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$y#)$PEventListenerDispatcherTestsc                     ddl m}  |        y r   r   r   s     r   r   z#PEventListenerDispatcherTests.setUp  r   r   c                     ddl m}  |        y r   r   r   s     r   r   z&PEventListenerDispatcherTests.tearDown  r   r   c                     ddl m} |S )Nr   )PEventListenerDispatcher)r   rm  )r   rm  s     r   r   z-PEventListenerDispatcherTests._getTargetClass  s    C''r   c                 6    d} | j                         ||d      S r2   r   rB  s      r   r"   z&PEventListenerDispatcherTests._makeOne  s!    %t##%gw::r   c                     t               }t        |dd      }t        |      }| j                  |      }| j	                  |j                         d       y rF   rI   rJ   s        r   r-   z+PEventListenerDispatcherTests.test_writable  rN   r   c                     t               }t        |dd      }t        |      }| j                  |      }d|_        | j                  |j                         d       y rP   rQ   rJ   s        r   rS   z0PEventListenerDispatcherTests.test_readable_open  rT   r   c                     t               }t        |dd      }t        |      }| j                  |      }d|_        | j                  |j                         d       y rV   rQ   rJ   s        r   rW   z2PEventListenerDispatcherTests.test_readable_closed  rX   r   c                     t               }t        |dd      }t        |      }| j                  |      }| j	                  t
        |j                         y rZ   r[   rJ   s        r   r]   z5PEventListenerDispatcherTests.test_handle_write_event  r^   r   c                 F   t               }t        |ddd      }t        |      }ddlm} |j
                  |_        | j                  |      }|j                  |_	        | j                  |j                         d        | j                  |j                  |j                         | j                  |j                  d       | j                  t        |j                  j                         d       | j                  |j                  j                   d   |j                         y )	NrG   rH   r}   r   r   EventListenerStatesr   r   )r   r   r   r   ru  ACKNOWLEDGEDlistener_stater"   READY_FOR_EVENTS_TOKENrd   r/   re   READYstate_bufferr   r   ru   r   rK   rL   r   ru  rM   s         r   9test_handle_read_event_calls_handle_listener_state_changezWPEventListenerDispatcherTests.test_handle_read_event_calls_handle_listener_state_change  s    .gz?-79v&>!4!A!A]]7+
 * A A557>//1D1J1JK00#6Z00556:,,11!4#::	<r   c                 \   t               }d|_        t        |dd      }t        |      }| j	                  |      }| j                  |j                         d        | j                  |j                  d       ddlm	} | j                  |j                  j                  |j                         y )Nr  rG   rH   r   r   rt  )r   rd   r   r   r"   r/   re   rz  r   ru  r   rw  rv  )r   rK   rL   r   rM   ru  s         r   test_handle_read_event_nodataz;PEventListenerDispatcherTests.test_handle_read_event_nodata  s    . "gz?Cv&]]7+
557>00#6>++::,99	;r   c                     t               }d|_        t        |dd      }t        |      }| j	                  |      }| j                  |j                         d        | j                  |j                  d        y )N"   supercalifragilisticexpialidociousrG   rH   )r   rd   r   r   r"   r/   re   r   rJ   s        r   %test_handle_read_event_logging_nologszCPEventListenerDispatcherTests.test_handle_read_event_logging_nologs  sh    . Egz?Cv&]]7+
 	557>,,d3r   c                 l   t               }d|_        t        |ddd      }t        |      }| j	                  |      }| j                  |j                         d        | j                  t        |j                  j                        d       | j                  |j                  j                  d   d       y )Nr  rG   rH   r}   r   r   r   )
r   rd   r   r   r"   r/   re   r   r   ru   rJ   s        r   'test_handle_read_event_logging_childlogzEPEventListenerDispatcherTests.test_handle_read_event_logging_childlog  s    . Egz?-79v&]]7+
557>Z00556:,,11!4>	@r   c                    t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_        d|_        | j                  |j                         d        | j                  |j                  d       | j                  |j                  j                  g        | j                  |j                  |j                         y )NrG   rH   r   rt  s   whateverr   )r   r   r   r   ru  r"   UNKNOWNrw  rz  r/   handle_listener_state_changert   ru   r{  s         r   .test_handle_listener_state_change_from_unknownzLPEventListenerDispatcherTests.test_handle_listener_state_change_from_unknown*  s    .gz?Cv&>]]7+
!4!<!<"-
@@BDI00#6,,b1//1D1L1LMr   c                    t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_        d|_        | j                  |j                         d        | j                  |j                  d       | j                  |j                  j                  d   d       | j                  |j                  |j                         y )NrG   rH   r   rt  s   READY
r   process1: ACKNOWLEDGED -> READY)r   r   r   r   ru  r"   rv  rw  rz  r/   r  rt   ru   ry  r{  s         r   7test_handle_listener_state_change_acknowledged_to_readyzUPEventListenerDispatcherTests.test_handle_listener_state_change_acknowledged_to_ready7  s    .gz?Cv&>]]7+
!4!A!A",
@@BDI00#6,,Q/:	<//1D1J1JKr   c                    t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_        d|_        | j                  |j                         d        | j                  |j                  d       | j                  |j                  j                  d   d       | j                  |j                  j                  d   d	       | j                  |j                  |j                         y )
NrG   rH   r   rt  s   READY
garbage
r   r  r   process1: READY -> UNKNOWNr   r   r   r   ru  r"   rv  rw  rz  r/   r  rt   ru   r  r{  s         r   6test_handle_listener_state_change_acknowledged_gobbleszTPEventListenerDispatcherTests.test_handle_listener_state_change_acknowledged_gobblesE  s    .gz?Cv&>]]7+
!4!A!A"5
@@BDI00#6,,Q/:	<,,Q/5	7//1D1L1LMr   c                    t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_        d|_        | j                  |j                         d        | j                  |j                  d       | j                  |j                  j                  g        | j                  |j                  |j                         y )NrG   rH   r   rt  s   RE)r   r   r   r   ru  r"   rv  rw  rz  r/   r  rt   ru   r{  s         r   >test_handle_listener_state_change_acknowledged_to_insufficientz\PEventListenerDispatcherTests.test_handle_listener_state_change_acknowledged_to_insufficientU  s    .gz?Cv&>]]7+
!4!A!A"'
@@BDI00%8,,b1//,99	;r   c                    t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_        d|_        | j                  |j                         d        | j                  |j                  d       | j                  |j                  j                  d   d       | j                  |j                  j                  d   d	       | j                  |j                  |j                         y )
NrG   rH   r   rt     bogus data yor   !process1: ACKNOWLEDGED -> UNKNOWNr   process1: has entered the UNKNOWN state and will no longer receive events, this usually indicates the process violated the eventlistener protocolr  r{  s         r   9test_handle_listener_state_change_acknowledged_to_unknownzWPEventListenerDispatcherTests.test_handle_listener_state_change_acknowledged_to_unknownc  s    .gz?Cv&>]]7+
!4!A!A"2
@@BDI00#6,,Q/<	>,,Q/K	L 	//1D1L1LMr   c                    t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_        d|_        | j                  |j                         d        | j                  |j                  d       | j                  |j                  j                  d   d       | j                  |j                  j                  d   d	       | j                  |j                  |j                         y )
NrG   rH   r   rt  r  r   r  r   r  )r   r   r   r   ru  r"   ry  rw  rz  r/   r  rt   ru   r  r{  s         r   2test_handle_listener_state_change_ready_to_unknownzPPEventListenerDispatcherTests.test_handle_listener_state_change_ready_to_unknownu  s    .gz?Cv&>]]7+
!4!:!:"2
@@BDI00#6,,Q/5	7,,Q/K	L 	//1D1L1LMr   c                 j   t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_        d|_        | j                  |j                         d        | j                  |j                  d       | j                  |j                  |j                         y )NrG   rH   r   rt  r  )r   r   r   r   ru  r"   BUSYrw  rz  r/   r  r{  s         r   6test_handle_listener_state_change_busy_to_insufficientzTPEventListenerDispatcherTests.test_handle_listener_state_change_busy_to_insufficient  s    .gz?Cv&>]]7+
!4!9!9"2
@@BDI002BC//1D1I1IJr   c                    t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_         G d d      } |       |_         |       |j                  _	        ddlm
} ||j                  j                  _        d|_        | j                  |j                         d        | j                  |j                  d	       | j                  |j                  j                   d   d
       | j                  |j                  j                   d   d       | j                  |j                  |j"                         y )NrG   rH   r   rt  c                       e Zd Zy)iPEventListenerDispatcherTests.test_handle_listener_state_change_busy_to_acknowledged_procd.<locals>.DummyNr4   r5   r6   r7   r   r   Dummyr        r   r  default_handlers   RESULT 2
OKabcr`   process1: event was processedr   process1: BUSY -> ACKNOWLEDGEDr   r   r   r   ru  r"   r  rw  grouprL   r  result_handlerrz  r/   r  rt   ru   rv  r   rK   rL   r   ru  rM   r  r  s           r   <test_handle_listener_state_change_busy_to_acknowledged_procdzZPEventListenerDispatcherTests.test_handle_listener_state_change_busy_to_acknowledged_procd  s   .gz?Cv&>]]7+
!4!9!9	 	$w:.=+"4
@@BDI00&9,,Q/8	:,,Q/9	;//,99	;r   c                    t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_         G d d      } |       |_         |       |j                  _	        ddlm
} ||j                  j                  _        d|_        | j                  |j                         d        | j                  |j                  d	       | j                  |j                  j                   d   d
       | j                  |j                  j                   d   d       | j                  |j                  |j"                         y )NrG   rH   r   rt  c                       e Zd Zy)lPEventListenerDispatcherTests.test_handle_listener_state_change_busy_to_acknowledged_rejected.<locals>.DummyNr  r7   r   r   r  r    r  r   r  r  s   RESULT 4
FAILabcr`   process1: event was rejectedr   r  r  r  s           r   ?test_handle_listener_state_change_busy_to_acknowledged_rejectedz]PEventListenerDispatcherTests.test_handle_listener_state_change_busy_to_acknowledged_rejected  s   .gz?Cv&>]]7+
!4!9!9	 	$w:.=+"6
@@BDI00&9,,Q/7	9,,Q/9	;//,99	;r   c                 8  
 ddl m} ddl m} g 

fd} |||       t               }t	        |dd      }t        |      }ddlm} | j                  |      }|j                  |_
        t               }	|	|_        d|_        | j                  |j                         d        | j                  |j                  d	       | j                  |j                   j"                  d   d
       | j                  |j                   j"                  d   d       | j                  |j                   j"                  d   d       | j                  |j                  |j$                         | j                  
d   j&                  |       | j                  
d   j                  |	       y )Nr   )EventRejectedEventr   c                 (    j                  |        y r   r   r   s    r   r   z]PEventListenerDispatcherTests.test_handle_listener_state_change_busy_to_unknown.<locals>.doit  r   r   rG   rH   rt  s   bogus data
r   z'process1: bad result line: 'bogus data'r   process1: BUSY -> UNKNOWNr   r  )r   r  r   r   r   r   r   ru  r"   r  rw  r   r   rz  r/   r  rt   ru   r  r   )r   r  r   r   rK   rL   r   ru  rM   current_eventr@   s             @r   1test_handle_listener_state_change_busy_to_unknownzOPEventListenerDispatcherTests.test_handle_listener_state_change_busy_to_unknown  s^   8/	!$d+.gz?Cv&>]]7+
!4!9!9"%"1
@@BDI00#6,,Q/9	;,,Q/+	-,,Q/K	L 	//,44	6**G4-8r   c                 L   t               }t        |dd      }t        |      }ddlm} | j                  |      }|j                  |_         G d d      } |       |_         |       |j                  _	        ddlm
} ||j                  j                  _        d|_        | j                  |j                         d        | j                  |j                  d	       | j                  |j                  j                   d   d
       | j                  |j                  j                   d   d       | j                  |j                  j                   d   d       | j                  |j                  j                   d   d       | j                  |j                  |j"                         y )NrG   rH   r   rt  c                       e Zd Zy)TPEventListenerDispatcherTests.test_handle_listener_state_busy_gobbles.<locals>.DummyNr  r7   r   r   r  r    r  r   r  r  s   RESULT 2
OKbogus data
r   r  r   r  r   r     r  )r   r   r   r   ru  r"   r  rw  r  rL   r  r  rz  r/   r  rt   ru   r  r  s           r   'test_handle_listener_state_busy_gobbleszEPEventListenerDispatcherTests.test_handle_listener_state_busy_gobbles  sZ   .gz?Cv&>]]7+
!4!9!9	 	$w:.=+"=
@@BDI00#6,,Q/8	:,,Q/9	;,,Q/<	>,,Q/K	L 	//,44	6r   c                    ddl m} t               }t        |dd      }t	        |      }g fd}ddlm}  ||j                  |       ddlm	} | j                  |      }d }	 G d	 d
      }
 |
       |_         |
       |j                  _        |	|j                  j                  _        |j                  |_        |j!                  d       | j#                  t%              d       | j#                  |j                  |j&                         | j#                  |j(                  j*                  d   d       | j#                  |j(                  j*                  d   d       y )Nr   r   rG   rH   c                 (    j                  |        y r   r   r   s    r   r   zEPEventListenerDispatcherTests.test_handle_result_accept.<locals>.doit  r   r   r?   rt  c                      y r   r7   r   rx   s     r   handlezGPEventListenerDispatcherTests.test_handle_result_accept.<locals>.handle	  s    r   c                       e Zd Zy)FPEventListenerDispatcherTests.test_handle_result_accept.<locals>.DummyNr  r7   r   r   r  r    r  r   r  rp   r  r   r  )r   r   r   r   r   rB   r@   r  r   ru  r"   r  rL   r  r  rw  handle_resultr/   r   rv  rt   ru   )r   r   rK   rL   r   r   r@   ru  rM   r  r  r   s              @r   test_handle_result_acceptz7PEventListenerDispatcherTests.test_handle_result_accept  s   /.gz?Cv&	%&++T2>]]7+
		 	$w.4+!4!9!9  'Q#//,99	;,,Q/8	:,,Q/9	;r   c                    ddl m} t               }t        |dd      }t	        |      }g fd}ddlm}  ||j                  |       ddlm	} | j                  |      }d }	 G d	 d
      }
 |
       |_         |
       |j                  _        |	|j                  j                  _        |j                  |_        |j!                  d       | j#                  t%              d       | j#                  d   j&                  |j                         | j#                  |j                  |j(                         | j#                  |j*                  j,                  d   d       | j#                  |j*                  j,                  d   d       y )Nr   r   rG   rH   c                 (    j                  |        y r   r   r   s    r   r   zJPEventListenerDispatcherTests.test_handle_result_rejectevent.<locals>.doit   r   r   r?   rt  c                     ddl m}  ||      )Nr   )RejectEvent)r   r  )r   rx   r  s      r   rejectedzNPEventListenerDispatcherTests.test_handle_result_rejectevent.<locals>.rejected&  s    :f%%r   c                       e Zd Zy)KPEventListenerDispatcherTests.test_handle_result_rejectevent.<locals>.DummyNr  r7   r   r   r  r  )  r  r   r  rp   r   r  r  )r   r   r   r   r   rB   r@   r  r   ru  r"   r  rL   r  r  rw  r  r/   r   r   rv  rt   ru   )r   r   rK   rL   r   r   r@   ru  rM   r  r  r   s              @r   test_handle_result_rejecteventz<PEventListenerDispatcherTests.test_handle_result_rejectevent  s<   /.gz?Cv&	%&++T2>]]7+
	&	 	$w.6+!4!9!9  'Q#1)B)BC//,99	;,,Q/7	9,,Q/9	;r   c                    ddl m} t               }t        |dd      }t	        |      }g fd}ddlm}  ||j                  |       ddlm	} | j                  |      }d }	 G d	 d
      }
 |
       |_         |
       |j                  _        |	|j                  j                  _        |	|j                  _        |j                  |_        |j!                  d       | j#                  t%              d       | j#                  d   j&                  |j                         | j#                  |j                  |j(                         | j#                  |j*                  j,                  d   d       | j#                  |j*                  j,                  d   d       | j#                  |j*                  j,                  d   d       y )Nr   r   rG   rH   c                 (    j                  |        y r   r   r   s    r   r   zHPEventListenerDispatcherTests.test_handle_result_exception.<locals>.doit?  r   r   r?   rt  c                     t         r   )rr   r  s     r   	exceptionzMPEventListenerDispatcherTests.test_handle_result_exception.<locals>.exceptionE  s    r   c                       e Zd Zy)IPEventListenerDispatcherTests.test_handle_result_exception.<locals>.DummyNr  r7   r   r   r  r  G  r  r   r  rp   r   zprocess1: event caused an errorr  r   r  )r   r   r   r   r   rB   r@   r  r   ru  r"   r  rL   r  r  rw  r  r/   r   r   r  rt   ru   )r   r   rK   rL   r   r   r@   ru  rM   r  r  r   s              @r   test_handle_result_exceptionz:PEventListenerDispatcherTests.test_handle_result_exception9  sn   /.gz?Cv&	%&++T2>]]7+
		 	$w.7+'0$!4!9!9  'Q#1)B)BC//,44	6,,Q/:	<,,Q/4	6,,Q/K	Lr   c                 $   t               }t        |dd      }t        |      }| j                  |      }	 t	        d      #  |j                          Y nxY w|j                  j                  d   }| j                  |j                  d      |       y rm   rq   rw   s         r   ry   z/PEventListenerDispatcherTests.test_handle_error\  rz   r{   c                 Z   t               }t        |ddd      }t        |      }| j                  |      }|j	                          | j                  |j                  j                  d   j                  d       | j                  |j                  j                  d   j                  d       y r   )
r   r   r   r"   r   r/   r   r   r   r   rJ   s        r   r   z-PEventListenerDispatcherTests.test_removelogsi  s    .gz?-79v&]]7+
,,55a8AA4H,,55a8@@$Gr   c                     t               }t        |ddd      }t        |      }| j                  |      }|j	                          | j                  |j                  j                  d   j                  d       y r   )	r   r   r   r"   r   r/   r   r   r   rJ   s        r   r   z-PEventListenerDispatcherTests.test_reopenlogss  sg    .gz?-79v&]]7+
,,55a8AA4Hr   c                 N   t               }d|_        t        |ddd      }t        |      }| j	                  |      }d}d}||_        |j                          | j                  t        |j                  j                        d       | j                  |j                  j                  d	   |       d
|_        ||_        |j                          | j                  t        |j                  j                        d       | j                  |j                  j                  d   |       y r   )r   r   r   r   r"   rd   re   r/   r   r   ru   r   s          r   r   z-PEventListenerDispatcherTests.test_strip_ansi|  s    .!gz?-79v&]]7+
L? $$$&Z00556:,,11!4f=" $$$&Z00556:,,11!4d;r   c                 J   t               }t        |dd      }t        |      }| j                  |      }| j	                  |j
                  |       | j	                  |j                  d       | j	                  |j                  d       | j	                  |j                  d        y r  )	r   r   r   r"   r/   r   r    r!   r   rJ   s        r   test_ctor_nologfilesz2PEventListenerDispatcherTests.test_ctor_nologfiles  s    .gz?Cv&]]7+
++W5++X6*,,d3r   c                 j   t               }t        |ddd      }t        |      }| j                  |      }| j	                  |j
                  |       | j	                  |j                  d       | j	                  |j                  d       | j	                  |j                  j                  t               y r  )r   r   r   r"   r/   r   r    r!   r   r   r   rJ   s        r   r  z4PEventListenerDispatcherTests.test_ctor_logfile_only  s    .gz?-79v&]]7+
++W5++X6*,,66Dr   c                 *   t               }t        |dd      }t        |      }| j                  |      }t	        |      }| j                  d|v        | j                  |j                  d      d       | j                  |j                  d      |       y )NrG   rH   rm  r,  r-  r.  r/  r4  s         r   r6  z'PEventListenerDispatcherTests.test_repr  s    .gz?Cv&]]7+
Z 2e;<JJ;<	 	{3U;r   c                    t               }t        |dd      }t        |      }| j                  |      }|j	                          | j                  |j                  d       |j	                          | j                  |j                  d       y r8  r9  rJ   s        r   r:  z(PEventListenerDispatcherTests.test_close  r;  r   N)%r4   r5   r6   r   r   r   r"   r-   rS   rW   r]   r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ry   r   r   r   r  r  r6  r:  r7   r   r   ri  ri    s    (;767N< 
;	4
@NLN ;N$N$
K;.;.9>6:;:;>!LFDHI<,4	E
<2r   ri  c                   $    e Zd Zd Zd Zd Zd Zy)stripEscapeTestsc                     ddl m}  ||      S )Nr   )stripEscapes)r   r  )r   sr  s      r   _callFUTzstripEscapeTests._callFUT  s    7Ar   c                 F    | j                  | j                  d      d       y )Nr   r/   r  )r   s    r   test_zero_length_stringz(stripEscapeTests.test_zero_length_string  s    s+S1r   c                 N    d}d}| j                  | j                  |      |       y )Nr   r   r  )r   r   r   s      r   	test_ansizstripEscapeTests.test_ansi  s%    L?t,f5r   c                 J    d}| j                  | j                  |      |       y )Nr   r  )r   r   s     r   test_noansizstripEscapeTests.test_noansi  s     ?v.7r   N)r4   r5   r6   r  r  r  r  r7   r   r   r  r    s    26
8r   r  c                  V    t        j                  t        j                  t                 S r   )unittestfindTestCasessysmodulesr4   r7   r   r   
test_suiter    s    !!#++h"788r   __main__r  )defaultTest)r  r   r  supervisor.compatr   supervisor.tests.baser   r   r   r   r   TestCaser
   r9   r=  ri  r  r  r4   mainr7   r   r   <module>r     s     	 
 & . . . - ,-x(( -8R2X.. R2jH2H-- H2Ts2H$5$5 s2l8x(( 8"9 zHMMl+ r   