
    z	i'                     ,   S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	  SSK
Jr  / SQrSS	/r " S
 S5      r " S S5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      rg)zTests for stevedore.extension
    N)mock)	exception)	extension)utils)e1t1t2r   r	   c                        \ rS rSrS rS rSrg)FauxExtension   c                     Xl         X l        g Nargskwdsselfr   r   s      X/home/james-whalen/.local/lib/python3.13/site-packages/stevedore/tests/test_extension.py__init__FauxExtension.__init__   s    		    c                 4    U R                   U R                  U4$ r   r   )r   datas     r   get_args_and_dataFauxExtension.get_args_and_data"   s    yy$))T))r   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    *r   r   c                       \ rS rSrS rSrg)BrokenExtension&   c                     [        S5      e)NzDid not create)OSErrorr   s      r   r   BrokenExtension.__init__'   s    &''r   r!   N)r   r   r   r   r   r    r!   r   r   r#   r#   &   s    (r   r#   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)TestCallback+   c                     [         R                  " S5      n[        UR                  5       5      nU R	                  U[
        5        g Nstevedore.test.extension)r   ExtensionManagersortednamesassertEqual	ALL_NAMESr   emr0   s      r   test_detect_plugins TestCallback.test_detect_plugins,   s3    ''(BCrxxz"	*r   c                 r    [         R                  " S5      nUS   nU R                  UR                  S5        g )Nr-   r   )r   r.   r1   namer   r4   es      r   test_get_by_nameTestCallback.test_get_by_name1   s0    ''(BCtH&r   c           
          [         R                  " S5      nUR                  5       nU R                  1 Sk[	        [        [        R                  " S5      U5      5      5        U R                  S[        U5      5        g )Nr-   >   r   e2r   r	   r8      )	r   r.   list_entry_pointsr1   setmapoperator
attrgetterlen)r   r4   ns      r   test_list_entry_points#TestCallback.test_list_entry_points6   sa    ''(BC  "1S!4!4V!<a@A	CCF#r   c                     [         R                  " S5      nUR                  5       nU R                  1 Sk[	        U5      5        U R                  S[        U5      5        g )Nr-   >   r   r>   r   r	   r?   )r   r.   entry_points_namesr1   rA   rE   r3   s      r   test_list_entry_points_names)TestCallback.test_list_entry_points_names=   sJ    ''(BC%%'13u:>CJ'r   c                 V    [         R                  " S5      nU R                  SUS5        g )Nr-   r   T)r   r.   assertInr   r4   s     r   test_contains_by_name"TestCallback.test_contains_by_nameC   s#    ''(BCdB%r   c                 h    [         R                  " S5      n US      S5       e! [         a     g f = f)Nr-   t3zFailed to raise KeyError)r   r.   KeyErrorrO   s     r   test_get_by_name_missing%TestCallback.test_get_by_name_missingG   s@    ''(BC	5tH 5445  		s   $ 
11c                    [         R                  " S5      nU Vs/ s H  o"R                  PM     nn[         R                  " S5      nU Vs/ s H  o"R                  PM     nnU R                  US   US   5        g s  snf s  snf Nr-   r   )r   r.   entry_pointassertIs)r   em1exteps1em2eps2s         r   %test_load_multiple_times_entry_points2TestCallback.test_load_multiple_times_entry_pointsP   sp     (()CD+./3C3/(()CD+./3C3/d1gtAw' 0/   A<Bc                    [         R                  " S5      nU Vs/ s H  o"R                  PM     nn[         R                  " S5      nU Vs/ s H  o"R                  PM     nnU R                  US   US   5        g s  snf s  snf rX   )r   r.   pluginrZ   )r   r[   r\   plugins1r^   plugins2s         r    test_load_multiple_times_plugins-TestCallback.test_load_multiple_times_pluginsY   sp     (()CD*-.#3JJ#.(()CD*-.#3JJ#.hqk8A;/ /.rb   c                 "   [         R                  R                  n/ US'   [        R                  " S[        S5      S9   [         R                  " S5      nUR                  5       nS S S 5        U R                  W/ 5        g ! , (       d  f       N!= f)Nzstevedore.test.fauxzstevedore._cache.get_group_allzcalled get_group_all)side_effect)r   r.   ENTRY_POINT_CACHEr   patchAssertionErrorr0   r1   )r   cacher4   r0   s       r   test_use_cacheTestCallback.test_use_cacheb   s|     **<<')#$ZZ8&'=>@ ++,ABBHHJE	@
 	#@ @s   'B  
Bc                     [         R                  " S5      n[        S U 5       5      nU R                  U[        5        g )Nr-   c              3   8   #    U  H  oR                   v   M     g 7fr   r8   ).0r:   s     r   	<genexpr>-TestCallback.test_iterable.<locals>.<genexpr>q   s     *r!vvrs   )r   r.   r/   r1   r2   r3   s      r   test_iterableTestCallback.test_iterableo   s3    ''(BC*r**	*r   c                 B   [         R                  " SSSSS0S9nU R                  [        UR                  5      S5        UR                   HQ  nU R                  UR
                  R                  S5        U R                  UR
                  R                  SS05        MS     g )Nr-   T)abB)invoke_on_loadinvoke_argsinvoke_kwds   )r   r.   r1   rE   
extensionsobjr   r   r9   s      r   test_invoke_on_load TestCallback.test_invoke_on_loadt   s    ''(B7;4:58#J*
 	R]]+Q/AQUUZZ0QUUZZ#s4 r   c                     S n[         R                  " SSS9nUR                  U5      nU R                  [	        U5      [
        5        g )Nc                     U R                   $ r   rs   r\   r   r   s      r   mapped3TestCallback.test_map_return_values.<locals>.mapped   s    88Or   r-   Tr}   )r   r.   rB   r1   r/   WORKING_NAMESr   r   r4   resultss       r   test_map_return_values#TestCallback.test_map_return_values   sB    	 ''(B7;* &&.-8r   c                   ^ / mU4S jn[         R                  " SSS9nUR                  USSSSS	9  U R                  [	        T5      S5        [        T Vs/ s H  o3S
   R                  PM     sn5      nU R                  U[        5        T H0  nU R                  US   S5        U R                  US   SSS	.5        M2     g s  snf )Nc                 ,   > TR                  XU45        g r   )append)r\   r   r   objss      r   r   /TestCallback.test_map_arguments.<locals>.mapped   s    KKD)*r   r-   Tr      r   Ar|   rz   r{   r   )r   r   )r   r.   rB   r1   rE   r/   r8   r   )r   r   r4   or0   r   s        @r   test_map_argumentsTestCallback.test_map_arguments   s    	+ ''(B7;* 	vq!sc*TA&404a!		401.AQqT6*QqT3#78  1s   Cc                 ~    S n[         R                  " SSS9nUR                  USSSSS	9nU R                  U/ 5        g )
Nc                     [        S5      eNzhard coded errorRuntimeErrorr   s      r   r   1TestCallback.test_map_eats_errors.<locals>.mapped       122r   r-   Tr   r   r   r   r|   r   )r   r.   rB   r1   r   s       r   test_map_eats_errors!TestCallback.test_map_eats_errors   sI    	3 ''(B7;* &&A&4"%r   c                     S n[         R                  " SSSS9n UR                  USSSSS	9   e! [         a     g f = f)
Nc                     [        S5      er   r   r   s      r   r   :TestCallback.test_map_propagate_exceptions.<locals>.mapped   r   r   r-   T)r}   propagate_map_exceptionsr   r   r   r|   r   )r   r.   rB   r   )r   r   r4   s      r   test_map_propagate_exceptions*TestCallback.test_map_propagate_exceptions   sT    	3 ''(B7;AE*
	FF61a3#F.5 		s   0 
==c                     SnS n[         R                  " SSS9n UR                  USSSS	S
9  g ! [        R                   a%  nU R                  U[        U5      5         S nAg S nAff = f)Nz1No stevedore.test.extension.none extensions foundc                     g r   r!   r   s      r   r   <TestCallback.test_map_errors_when_no_plugins.<locals>.mapped   s    r   zstevedore.test.extension.noneTr   r   r   r   r|   r   )r   r.   rB   r   	NoMatchesr1   str)r   expected_strr   r4   errs        r   test_map_errors_when_no_plugins,TestCallback.test_map_errors_when_no_plugins   sl    J	 ''(G7;*	5FF61a3#F."" 	5\3s844	5s   0 A)A$$A)c                     [         R                  " SSS9nUR                  SS5      nU R                  U Vs1 s H  o3S   iM	     snS15        g s  snf )Nr-   Tr   r   *   r   )r   r.   
map_methodr1   )r   r4   resultrs       r   test_map_methodTestCallback.test_map_method   sQ    ''(B7;* 2B7/1A$/"6/s   Ac                     [         R                  " S5      n[         Vs1 s H  o"X   4iM
     nnU R                  U[	        UR                  5       5      5        g s  snf r,   )r   r.   r2   r1   rA   items)r   r4   r8   expected_outputs       r   
test_itemsTestCallback.test_items   sL    ''(BC8AB	"(+	B#bhhj/: Cs   Ar!   N)r   r   r   r   r5   r;   rG   rK   rP   rU   r`   rg   ro   rw   r   r   r   r   r   r   r   r   r    r!   r   r   r)   r)   +   s\    +
'
$(&5(0$+
	599"&57;r   r)   c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )!TestLoadRequirementsNewSetuptools   c                    > [         TU ]  5         [        R                  " / SQS9U l        [
        R                  R                  / 5      U l        g )N)requireresolveloadr8   spec	supersetUpr   Mockmock_epr   r.   make_test_instancer4   r   	__class__s    r   r   'TestLoadRequirementsNewSetuptools.setUp   s5    yy&LM,,??Cr   c                     U R                   R                  U R                  SS0 SS9  U R                  R                  R	                  5         U R                  R
                  R	                  5         g NFr!   Tverify_requirements)r4   _load_one_pluginr   r   assert_called_once_withr   r   s    r   test_verify_requirements:TestLoadRequirementsNewSetuptools.test_verify_requirements   sT      ub"59 	! 	;446446r   c                     U R                   R                  U R                  SS0 SS9  U R                  SU R                  R                  R
                  5        U R                  R                  R                  5         g )NFr!   r   r   )r4   r   r   r1   r   
call_countr   r   r   s    r   test_no_verify_requirements=TestLoadRequirementsNewSetuptools.test_no_verify_requirements   s^      ub"5: 	! 	<DLL00;;<446r   r4   r   	r   r   r   r   r   r   r   r    __classcell__r   s   @r   r   r      s    D
77 7r   r   c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )!TestLoadRequirementsOldSetuptools   c                    > [         TU ]  5         [        R                  " SS/S9U l        [
        R                  R                  / 5      U l        g )Nr   r8   r   r   r   s    r   r   'TestLoadRequirementsOldSetuptools.setUp   s9    yyvv&67,,??Cr   c                     U R                   R                  U R                  SS0 SS9  U R                  R                  R	                  5         g r   r4   r   r   r   r   r   s    r   r   :TestLoadRequirementsOldSetuptools.test_verify_requirements   s>      ub"59 	! 	;113r   c                     U R                   R                  U R                  SS0 SS9  U R                  R                  R	                  5         g )NFr!   r   r   r   s    r   r   =TestLoadRequirementsOldSetuptools.test_no_verify_requirements   s>      ub"5: 	! 	<113r   r   r   r   s   @r   r   r      s    D
4
4 4r   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestExtensionProperties   c                     [         R                  " S[        R                  " SSS5      [        R
                  " 5       S 5      U l        [         R                  " S[        R                  " SSS5      [        R
                  " 5       S 5      U l        g )Nr8   "module.name:attribute.name [extra]
group_namemodule:attribute)r   	Extensionimportlib_metadata
EntryPointr   r   ext1ext2r   s    r   r   TestExtensionProperties.setUp   sv    ''))<l IIK
	 ''))*L IIK
	r   c                     U R                  SU R                  R                  5        U R                  SU R                  R                  5        g )Nzmodule.namemodule)r1   r   module_namer   r   s    r   test_module_name(TestExtensionProperties.test_module_name  s6    		(=(=>499#8#89r   c                     U R                  SU R                  R                  5        U R                  SU R                  R                  5        g )Nzattribute.name	attribute)r1   r   attrr   r   s    r   	test_attr!TestExtensionProperties.test_attr  s3    )499>>:diinn5r   c                     U R                  SU R                  R                  5        U R                  SU R                  R                  5        g )Nr   r   )r1   r   entry_point_targetr   r   s    r   test_entry_point_target/TestExtensionProperties.test_entry_point_target  s>    =55	7+55	7r   )r   r   N)	r   r   r   r   r   r   r  r  r    r!   r   r   r   r      s    
$:67r   r   )__doc__importlib.metadatametadatar   rC   unittestr   	stevedorer   r   stevedore.testsr   r2   r   r   r#   TestCaser)   r   r   r   r!   r   r   <module>r     s    0     ! 	t* *( (
a;5>> a;H7 7*4 4& 7enn  7r   