
    AcQ                     $   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  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)DummyOptions)DummyPConfig)DummyProcess)
DummyEventc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
"EventSubscriptionNotificationTestsc                 .    ddl m} g |j                  d d  y Nr   events
supervisorr   	callbacksselfr   s     >/usr/lib/python3/dist-packages/supervisor/tests/test_events.pysetUpz(EventSubscriptionNotificationTests.setUp
       %     c                 .    ddl m} g |j                  d d  y r
   r   r   s     r   tearDownz+EventSubscriptionNotificationTests.tearDown   r   r   c                 n    ddl m} |j                  d d        | j                  |j                  dg       y Nr   r   )NN)r   r   	subscribeassertEqualr   r   s     r   test_subscribez1EventSubscriptionNotificationTests.test_subscribe   s-    %t$))L>:r   c                     ddl m} g d|j                  d d  |j                  dd       | j	                  |j                  ddg       y )Nr   r   )   r   )   r       r"   r    r   r!   )r   r   r   unsubscriber   r   s     r   test_unsubscribez3EventSubscriptionNotificationTests.test_unsubscribe   s@    %61a ))FF+;<r   c                     ddl m} dg|j                  d d  |j                          | j	                  |j                  g        y r   )r   r   r   clearr   r   s     r   
test_clearz-EventSubscriptionNotificationTests.test_clear   s6    %+n))2.r   c                     ddl m} g fd}t        |fg|j                  d d  |j	                  t                      | j                  dg       y )Nr   r   c                 (    j                  d       y Nr   appendeventLs    r   callbackzEEventSubscriptionNotificationTests.test_notify_true.<locals>.callback&       HHQKr   r   r   r   r   r   notifyr   )r   r   r0   r/   s      @r   test_notify_truez3EventSubscriptionNotificationTests.test_notify_true#   sH    %	 *H56jl#QC r   c                     ddl m} g fd} G d d      }||fg|j                  d d  |j                  t	                      | j                  g        y )Nr   r   c                 (    j                  d       y r*   r+   r-   s    r   r0   zFEventSubscriptionNotificationTests.test_notify_false.<locals>.callback/   r1   r   c                       e Zd Zy)JEventSubscriptionNotificationTests.test_notify_false.<locals>.AnotherEventN__name__
__module____qualname__ r   r   AnotherEventr8   1       r   r>   )r   r   r   r3   r   r   )r   r   r0   r>   r/   s       @r   test_notify_falsez4EventSubscriptionNotificationTests.test_notify_false,   sP    %		 	 ,h78jl#Br   c                     ddl m} g fd} G d dt              }t        |fg|j                  d d  |j	                   |              | j                  dg       y )Nr   r   c                 (    j                  d       y r*   r+   r-   s    r   r0   zMEventSubscriptionNotificationTests.test_notify_via_subclass.<locals>.callback:   r1   r   c                       e Zd Zy)SEventSubscriptionNotificationTests.test_notify_via_subclass.<locals>.ASubclassEventNr9   r=   r   r   ASubclassEventrD   <   r?   r   rE   r   r2   )r   r   r0   rE   r/   s       @r   test_notify_via_subclassz;EventSubscriptionNotificationTests.test_notify_via_subclass7   sU    %		Z 	 *H56n&'QC r   N)r:   r;   r<   r   r   r   r$   r'   r4   r@   rF   r=   r   r   r   r   	   s*    !!;
=/!	 	!r   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y)TestEventTypesc                     ddl m}  |ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )Nr   ProcessLogEventr   r    r"   )supervisor.eventsrK   r   processpiddata)r   rK   insts      r   test_ProcessLogEvent_attributesz.TestEventTypes.test_ProcessLogEvent_attributesD   sO    5q!Q'q)1%A&r   c                 R    ddl m} ddl m} | j                  t	        ||             y )Nr   rJ   Event)rL   rK   rT   
assertTrue
issubclass)r   rK   rT   s      r    test_ProcessLogEvent_inheritancez/TestEventTypes.test_ProcessLogEvent_inheritanceK   s    5+.	
r   c                    ddl m}  |ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y )Nr   ProcessLogStdoutEventr   r    r"   stdout)rL   rZ   r   rM   rN   rO   channel)r   rZ   rP   s      r   %test_ProcessLogStdoutEvent_attributesz4TestEventTypes.test_ProcessLogStdoutEvent_attributesR   c    ;$Q1-q)1%A&x0r   c                 R    ddl m} ddl m} | j                  t	        ||             y )Nr   rY   rJ   )rL   rZ   rK   rU   rV   )r   rZ   rK   s      r   &test_ProcessLogStdoutEvent_inheritancez5TestEventTypes.test_ProcessLogStdoutEvent_inheritanceZ       ;5,o>	
r   c                    ddl m}  |ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y )Nr   ProcessLogStderrEventr   r    r"   stderr)rL   rd   r   rM   rN   rO   r\   )r   rd   rP   s      r   %test_ProcessLogStderrEvent_attributesz4TestEventTypes.test_ProcessLogStderrEvent_attributesa   r^   r   c                 R    ddl m} ddl m} | j                  t	        ||             y )Nr   rc   rJ   )rL   rd   rK   rU   rV   )r   rd   rK   s      r   &test_ProcessLogStderrEvent_inheritancez5TestEventTypes.test_ProcessLogStderrEvent_inheritancei   ra   r   c                     ddl m}  |ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )Nr   ProcessCommunicationEventr   r    r"   )rL   rk   r   rM   rN   rO   )r   rk   rP   s      r   )test_ProcessCommunicationEvent_attributesz8TestEventTypes.test_ProcessCommunicationEvent_attributesp   sO    ?(Aq1q)1%A&r   c                 R    ddl m} ddl m} | j                  t	        ||             y )Nr   rj   rS   )rL   rk   rT   rU   rV   )r   rk   rT   s      r   *test_ProcessCommunicationEvent_inheritancez9TestEventTypes.test_ProcessCommunicationEvent_inheritancew   s    ?+0%8	
r   c                    ddl m}  |ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y )Nr   ProcessCommunicationStdoutEventr   r    r"   r[   )rL   rq   r   rM   rN   rO   r\   )r   rq   rP   s      r   /test_ProcessCommunicationStdoutEvent_attributesz>TestEventTypes.test_ProcessCommunicationStdoutEvent_attributes~   c    E.q!Q7q)1%A&x0r   c                 R    ddl m} ddl m} | j                  t	        ||             y )Nr   rp   rj   )rL   rq   rk   rU   rV   )r   rq   rk   s      r   0test_ProcessCommunicationStdoutEvent_inheritancez?TestEventTypes.test_ProcessCommunicationStdoutEvent_inheritance   "    E?602	
r   c                    ddl m}  |ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y )Nr   ProcessCommunicationStderrEventr   r    r"   re   )rL   ry   r   rM   rN   rO   r\   )r   ry   rP   s      r   /test_ProcessCommunicationStderrEvent_attributesz>TestEventTypes.test_ProcessCommunicationStderrEvent_attributes   rs   r   c                 R    ddl m} ddl m} | j                  t	        ||             y )Nr   rx   rj   )rL   ry   rk   rU   rV   )r   ry   rk   s      r   0test_ProcessCommunicationStderrEvent_inheritancez?TestEventTypes.test_ProcessCommunicationStderrEvent_inheritance   rv   r   c                     ddl m}  |dd      }| j                  |j                  d       | j                  |j                  d       y )Nr   RemoteCommunicationEventr   r    )rL   r   r   typerO   )r   r   rP   s      r   (test_RemoteCommunicationEvent_attributesz7TestEventTypes.test_RemoteCommunicationEvent_attributes   s9    >'1-A&A&r   c                 R    ddl m} ddl m} | j                  t	        ||             y )Nr   r~   rS   )rL   r   rT   rU   rV   )r   r   rT   s      r   )test_RemoteCommunicationEvent_inheritancez8TestEventTypes.test_RemoteCommunicationEvent_inheritance   s    >+/7	
r   c                     ddl m} t               }t        |ddd      }t	        |      }t               } |||      }| j                  |j                  |       | j                  |j                  |       y )Nr   EventRejectedEventprocess1/bin/process1)	rL   r   r   r   r   r   r   rM   r.   )r   r   optionspconfig1rM   rejected_eventr.   s          r   "test_EventRejectedEvent_attributesz1TestEventTypes.test_EventRejectedEvent_attributes   sa    8.ZPx(#"7N;0n5r   c                 R    ddl m} ddl m} | j                  t	        ||             y )Nr   r   rS   )rL   r   rT   assertFalserV   )r   r   rT   s      r   3test_EventRejectedEvent_does_not_inherit_from_eventzBTestEventTypes.test_EventRejectedEvent_does_not_inherit_from_event   s!    8+)51	
r   c                     ddl m} |j                  |j                  |j                  fD ]  }| j                  |        y r
   )r   r   SupervisorStateChangeEventSupervisorRunningEventSupervisorStoppingEvent$_test_one_SupervisorStateChangeEventr   r   klasss      r   $test_all_SupervisorStateChangeEventsz3TestEventTypes.test_all_SupervisorStateChangeEvents   sA    %--))** 	=E
 55e<	=r   c                 F    ddl m} | j                  t        ||             y )Nr   )r   )rL   r   rU   rV   )r   r   r   s      r   r   z3TestEventTypes._test_one_SupervisorStateChangeEvent   s    @
5*DEFr   c           	         ddl m} |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  f	D ]  }| j                  |        y r
   )r   r   ProcessStateEventProcessStateStoppedEventProcessStateExitedEventProcessStateFatalEventProcessStateBackoffEventProcessStateRunningEventProcessStateUnknownEventProcessStateStoppingEventProcessStateStartingEvent_test_one_ProcessStateEventr   s      r   test_all_ProcessStateEventsz*TestEventTypes.test_all_ProcessStateEvents   sw    %$$++**))++++++,,,,
 	4E ,,U3	4r   c                 z   ddl m} ddlm} | j	                  t        ||             t               }t        |ddd      }t        |      } |||j                        }| j                  |j                  |       | j                  |j                  |j                         | j                  |j                  d       y )Nr   ProcessStates)r   r   r   T)supervisor.statesr   rL   r   rU   rV   r   r   r   STARTINGr   rM   
from_stateexpected)r   r   r   r   r   r   rM   rP   s           r   r   z*TestEventTypes._test_one_ProcessStateEvent   s    37
5*;<=.ZPx(Wm445w/-*@*@A-r   c                     ddl m} |j                  |j                  |j                  |j
                  fD ]  }| j                  |        y r
   )r   r   	TickEvent
Tick5EventTick60EventTick3600Event_test_one_TickEventr   s      r   test_all_TickEventsz"TestEventTypes.test_all_TickEvents   sJ    %	 	+E ##E*	+r   c                     ddl m} | j                  t        ||              |dd      }| j	                  |j
                  d       | j	                  |j                  d       y )Nr   )r   r   r    )rL   r   rU   rV   r   whensupervisord)r   r   r   rP   s       r   r   z"TestEventTypes._test_one_TickEvent   sM    /
5)45Q{A&))1-r   c                 X    ddl m}  |d      }| j                  |j                  d       y )Nr   ProcessGroupAddedEvent	myprocess)rL   r   r   group)r   r   rP   s      r   &test_ProcessGroupAddedEvent_attributesz5TestEventTypes.test_ProcessGroupAddedEvent_attributes   s#    <%k2[1r   c                 X    ddl m}  |d      }| j                  |j                  d       y )Nr   ProcessGroupRemovedEventr   )rL   r   r   r   )r   r   rP   s      r   (test_ProcessGroupRemovedEvent_attributesz7TestEventTypes.test_ProcessGroupRemovedEvent_attributes   s#    >'4[1r   N)r:   r;   r<   rQ   rW   r]   r`   rf   rh   rl   rn   rr   ru   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r=   r   r   rH   rH   C   s{    '
1
1
'
1
1
'
6
=G4
.+.2
2r   rH   c                   f    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y)TestSerializationsc           	          |j                  d      }|d   }d}i }t        |      dkD  r|d   }|r<	 t        |j                         D cg c]  }|j                  dd       c}      }||fS ||fS c c}w # t        $ r t	        d|z        w xY w)N
r    r   :z'headerdata %r could not be deserialized)splitlendict
ValueErrorAssertionError)r   serializationrO   
headerdatapayloadheadersxs          r   _deserializezTestSerializations._deserialize  s    ""4(!W
t9q=1gG1","2"2"4!6Q!''#a. !6 8
 w!6 1$%N%/&0 1 11s   A5 A0!A5 0A5 5Bc                 ~   t               }t        |ddd      t              }ddlm}  G fdd      }||_         ||dd      }| j                  |j                               \  }}| j                  |d	   d|       | j                  |d
   d|       | j                  |d   d|       | j                  |d       y )Nr   r   r   rY   c                       e Zd ZW  Zy)=TestSerializations.test_plog_stdout_event.<locals>.DummyGroupNr:   r;   r<   configr   s   r   
DummyGroupr         Fr   r   r   yoprocessname	groupnamerN   1)	r   r   r   rL   rZ   r   r   r   r   )	r   r   r   rZ   r   r.   r   r   r   s	           @r   test_plog_stdout_eventz)TestSerializations.test_plog_stdout_event      .ZP);	 	#%h48,,U]]_=/WE-z7Cg6$'r   c                 ~   t               }t        |ddd      t              }ddlm}  G fdd      }||_         ||dd      }| j                  |j                               \  }}| j                  |d	   d|       | j                  |d
   d|       | j                  |d   d|       | j                  |d       y )Nr   r   r   rc   c                       e Zd ZW  Zy)=TestSerializations.test_plog_stderr_event.<locals>.DummyGroupNr   r   s   r   r   r   %  r   r   r   r   r   r   r   rN   r   )	r   r   r   rL   rd   r   r   r   r   )	r   r   r   rd   r   r.   r   r   r   s	           @r   test_plog_stderr_eventz)TestSerializations.test_plog_stderr_event   r   r   c                 ~   t               }t        |ddd      t              }ddlm}  G fdd      }||_         ||dd      }| j                  |j                               \  }}| j                  |d	   d|       | j                  |d
   d|       | j                  |d   d|       | j                  |d       y )Nr   r   r   rp   c                       e Zd ZW  Zy)>TestSerializations.test_pcomm_stdout_event.<locals>.DummyGroupNr   r   s   r   r   r   4  r   r   r   r   r   r   r   rN   r   )	r   r   r   rL   rq   r   r   r   r   )	r   r   r   rq   r   r.   r   r   r   s	           @r   test_pcomm_stdout_eventz*TestSerializations.test_pcomm_stdout_event/  s    .ZP)E	 	#/!TB,,U]]_=/WE-z7Cg6$'r   c                 ~   t               }t        |ddd      t              } G fdd      }||_        ddlm}  ||dd      }| j                  |j                               \  }}| j                  |d	   d|       | j                  |d
   d|       | j                  |d   d|       | j                  |d       y )Nr   r   c                       e Zd ZW  Zy)>TestSerializations.test_pcomm_stderr_event.<locals>.DummyGroupNr   r   s   r   r   r   B  r   r   r   r   rx   r   r   r   r   rN   r   )	r   r   r   r   rL   ry   r   r   r   )	r   r   r   r   ry   r.   r   r   r   s	           @r   test_pcomm_stderr_eventz*TestSerializations.test_pcomm_stderr_event>  s    .ZP)	 	#E/!TB,,U]]_=/WE-z7Cg6$'r   c                     ddl m}  |dd      }| j                  |j                               \  }}| j	                  |d   d|       | j	                  |d       y )Nr   r~   foobarr   )rL   r   r   r   r   )r   r   r.   r   r   s        r   test_remote_comm_eventz)TestSerializations.test_remote_comm_eventM  sR    >(6,,U]]_=%9%(r   c                     ddl m}  |d      }| j                  |j                               \  }}| j	                  |d   d       | j	                  |d       y )Nr   r   r   r   r   )rL   r   r   r   r   )r   r   r.   r   r   s        r   test_process_group_added_eventz1TestSerializations.test_process_group_added_eventT  sO    <&u-,,U]]_=-u5"%r   c                     ddl m}  |d      }| j                  |j                               \  }}| j	                  |d   d       | j	                  |d       y )Nr   r   r   r   r   )rL   r   r   r   r   )r   r   r.   r   r   s        r    test_process_group_removed_eventz3TestSerializations.test_process_group_removed_event[  sO    >(/,,U]]_=-u5"%r   c                   
 ddl m} ddlm} |j                  |j
                  fD ]  }t               }t        |ddd      
 G 
fdd      }t        
      }||_	         |||j                        }| j                  |j                               \  }}	| j                  t        |      d       | j                  |d	   d       | j                  |d
   d       | j                  |d   d       | j                  |	d        y )Nr   r   r   r   r   c                       e Zd ZW  Zy)UTestSerializations.test_process_state_events_without_extra_values.<locals>.DummyGroupNr   r   s   r   r   r   l      !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   r   r.   r   r   r   s             @r   .test_process_state_events_without_extra_valueszATestSerializations.test_process_state_events_without_extra_valuesb  s    3%))++ 	*E #nG#GZ$35H" "#H-H'HN(M$:$:;E#00AGWS\1-W]3Z@W[1:>W\2J?Wb)#	*r   c                 T  
 ddl m} ddlm} |j                  |j
                  |j                  fD ]  }t               }t        |ddd      
 G 
fdd      }t        
      }||_
        d|_         |||j                        }| j                  |j                               \  }}	| j                  t!        |      d	       | j                  |d
   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |	d        y )Nr   r   r   r   r   c                       e Zd ZW  Zy)ITestSerializations.test_process_state_events_with_pid.<locals>.DummyGroupNr   r   s   r   r   r     r   r   r   r      r   r   r   r   rN   r   r   )r   r   r   r   r   r   r   r   r   r   r   rN   r   r   r   r   r   r   s             @r   "test_process_state_events_with_pidz5TestSerializations.test_process_state_events_with_pidx  s   3%++++,, 	*E
 #nG#GZ$35H" "#H-H'HNHL(M$:$:;E#00AGWS\1-W]3Z@W[1:>W\2J?WU^S1Wb))	*r   c                 x  
 ddl m} ddlm} |j                  |j
                  fD ]  }t               }t        |ddd      
 G 
fdd      }t        
      }||_	         |||j                        }| j                  |j                               \  }}	| j                  t        |      d       | j                  |d	   d       | j                  |d
   d       | j                  |d   d       | j                  |d   d       | j                  |	d       d|_         |||j                        }| j                  |j                               \  }}	| j                  |d   d       d|_         |||j                        }| j                  |j                               \  }}	| j                  |d   d        y )Nr   r   r   r   r   c                       e Zd ZW  Zy)UTestSerializations.test_process_state_events_starting_and_backoff.<locals>.DummyGroupNr   r   s   r   r   r     r   r   r   r   r   r   r   r   tries0r   r   r   r    2)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   backoffr   s             @r   .test_process_state_events_starting_and_backoffzATestSerializations.test_process_state_events_starting_and_backoff  s   3%,,++ 	4E #nG#GZ$35H" "#H-H'HN(M$:$:;E#00AGWS\1-W]3Z@W[1:>W\2J?WW-s3Wb) H(M$:$:;E#00AGWWW-s3 H(M$:$:;E#00AGWWW-s35	4r   c                 D  	 ddl m} ddlm} t	               }t        |ddd      	t        	      } G 	fdd      }||_        d|_        |j                  ||j                  d	
      }| j                  |j                               \  }}| j                  t        |      d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d       y )Nr   r   r   r   r   c                       e Zd ZW  Zy)OTestSerializations.test_process_state_exited_event_expected.<locals>.DummyGroupNr   r   s   r   r   r    r   r   r   r   Tr      r   r   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   r   r   r   r   r   r   
r   r   r   r   r   r   r.   r   r   r   s
            @r   (test_process_state_exited_event_expectedz;TestSerializations.test_process_state_exited_event_expected  s   %3.ZP)	 	#..x/</E/E8< / >  ,,U]]_=Wq)/<-z:-.
;,c2"%r   c                 D  	 ddl m} ddlm} t	               }t        |ddd      	t        	      } G 	fdd      }||_        d|_        |j                  ||j                  d	
      }| j                  |j                               \  }}| j                  t        |      d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d       y )Nr   r   r   r   r   c                       e Zd ZW  Zy)QTestSerializations.test_process_state_exited_event_unexpected.<locals>.DummyGroupNr   r   s   r   r   r    r   r   r   r   Fr	  r
  r   r   rN   r   r   r   r   r  r   r  r  s
            @r   *test_process_state_exited_event_unexpectedz=TestSerializations.test_process_state_exited_event_unexpected  s   %3.ZP)	 	#..x/</E/E8= / ?  ,,U]]_=Wq)/<-z:-.
;,c2"%r   c                     ddl m} |j                         }| j                  |j	                               \  }}| j                  |i        | j                  |d       y )Nr   r   r   )r   r   r   r   r   r   )r   r   r.   r   r   s        r   test_supervisor_sc_eventz+TestSerializations.test_supervisor_sc_event  sN    %--/,,U]]_="%"%r   c                    ddl m} |j                  |j                  |j                  fD ]S  } |dd      }| j                  |j                               \  }}| j                  |ddi       | j                  |d       U y )Nr   r   r   r    r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r.   r   r   s         r   test_tick_eventsz#TestSerializations.test_tick_events  s}    %   	*E
 !QKE#00AGWWvcl3Wb)	*r   N)r:   r;   r<   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r=   r   r   r   r      sM      (((()&&*,*24>&,&,&
*r   r   c                       e Zd Zd Zd Zy)TestUtilityFunctionsc                     ddl m} |j                  j                  j	                         D ]&  \  }}| j                  |j                  |      |       ( y r
   )r   r   
EventTypes__dict__itemsr   getEventNameByType)r   r   namevalues       r   test_getEventNameByTypez,TestUtilityFunctions.test_getEventNameByType  sJ    %!,,55;;= 	EKD%V66u=tD	Er   c                 2   ddl m} | j                  t        |j                  d              G d d|j
                        }	 |j                  d|       | j                  |j                  j                  |u        |j                  `y # |j                  `w xY w)Nr   r   FOOc                       e Zd Zy)4TestUtilityFunctions.test_register.<locals>.FooEventNr9   r=   r   r   FooEventr#    r?   r   r$  )	r   r   r   hasattrr  rT   registerrU   r!  )r   r   r$  s      r   test_registerz"TestUtilityFunctions.test_register  sy    %!2!2E:;	v|| 		&OOE8,OOF--11X=>!!%!!%s   9B BN)r:   r;   r<   r  r'  r=   r   r   r  r    s    E
	&r   r  c                  V    t        j                  t        j                  t                 S )N)unittestfindTestCasessysmodulesr:   r=   r   r   
test_suiter-     s    !!#++h"788r   __main__r-  )defaultTest)r+  r)  supervisor.tests.baser   r   r   r   TestCaser   rH   r   r  r-  r:   mainr=   r   r   <module>r3     s    
  . . . ,7!):): 7!t{2X&& {2zm*** m*^&8,, &"9 zHMMl+ r   