
    Cad\(                     0   d Z ddlm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Zdd	gZ G d
 de      Z G d de      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y)zTests for stevedore.extension
    N)mock)	exception)	extension)utils)e1t1t2r   r	   c                       e Zd Zd Zd Zy)FauxExtensionc                      || _         || _        y Nargskwdsselfr   r   s      @/usr/lib/python3/dist-packages/stevedore/tests/test_extension.py__init__zFauxExtension.__init__   s    		    c                 4    | j                   | j                  |fS r   r   )r   datas     r   get_args_and_datazFauxExtension.get_args_and_data"   s    yy$))T))r   N)__name__
__module____qualname__r   r    r   r   r   r      s    *r   r   c                       e Zd Zd Zy)BrokenExtensionc                     t        d      )NzDid not create)IOErrorr   s      r   r   zBrokenExtension.__init__'   s    &''r   N)r   r   r   r   r   r   r   r   r   &   s    (r   r   c                   x    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y)TestCallbackc                     t        j                  d      }t        |j                               }| j	                  |t
               y Nstevedore.test.extension)r   ExtensionManagersortednamesassertEqual	ALL_NAMESr   emr(   s      r   test_detect_pluginsz TestCallback.test_detect_plugins,   s3    ''(BCrxxz"	*r   c                 p    t        j                  d      }|d   }| j                  |j                  d       y )Nr%   r   )r   r&   r)   namer   r,   es      r   test_get_by_namezTestCallback.test_get_by_name1   s0    ''(BCtH&r   c           
      
   t        j                  d      }|j                         }| j                  t	        g d      t	        t        t        j                  d      |                   | j                  dt        |             y )Nr%   r   e2r   r	   r/      )	r   r&   list_entry_pointsr)   setmapoperator
attrgetterlen)r   r,   ns      r   test_list_entry_pointsz#TestCallback.test_list_entry_points6   sf    ''(BC  "56S!4!4V!<a@A	CCF#r   c                     t        j                  d      }|j                         }| j                  t	        g d      t	        |             | j                  dt        |             y )Nr%   r4   r6   )r   r&   entry_points_namesr)   r8   r<   r+   s      r   test_list_entry_points_namesz)TestCallback.test_list_entry_points_names=   sO    ''(BC%%'56E
CCJ'r   c                 V    t        j                  d      }| j                  d|v d       y )Nr%   r   T)r   r&   r)   r   r,   s     r   test_contains_by_namez"TestCallback.test_contains_by_nameC   s'    ''(BCT*r   c                 d    t        j                  d      }	 |d    J d       # t        $ r Y y w xY w)Nr%   t3zFailed to raise KeyError)r   r&   KeyErrorrC   s     r   test_get_by_name_missingz%TestCallback.test_get_by_name_missingG   s@    ''(BC	5tH 5445  		s   # 	//c                     t        j                  d      }|D cg c]  }|j                   }}t        j                  d      }|D cg c]  }|j                   }}| j                  |d   |d          y c c}w c c}w Nr%   r   )r   r&   entry_pointassertIs)r   em1exteps1em2eps2s         r   %test_load_multiple_times_entry_pointsz2TestCallback.test_load_multiple_times_entry_pointsP   sr     (()CD+./C//(()CD+./C//d1gtAw' 0/   A6A;c                     t        j                  d      }|D cg c]  }|j                   }}t        j                  d      }|D cg c]  }|j                   }}| j                  |d   |d          y c c}w c c}w rJ   )r   r&   pluginrL   )r   rM   rN   plugins1rP   plugins2s         r    test_load_multiple_times_pluginsz-TestCallback.test_load_multiple_times_pluginsY   sr     (()CD*-.3CJJ..(()CD*-.3CJJ..hqk8A;/ /.rS   c                    t         j                  j                  }g |d<   t        j                  dt        d            5  t        j                  d      }|j                         }d d d        | j                  g        y # 1 sw Y   xY w)Nzstevedore.test.fauxzstevedore._cache.get_group_allzcalled get_group_all)side_effect)r   r&   ENTRY_POINT_CACHEr   patchAssertionErrorr(   r)   )r   cacher,   r(   s       r   test_use_cachezTestCallback.test_use_cacheb   s~     **<<')#$ZZ8&'=>@ 	 ++,ABBHHJE		
 	#	 	s    &BB
c                 ~    t        j                  d      }t        d |D              }| j                  |t               y )Nr%   c              3   4   K   | ]  }|j                     y wr   r/   ).0r1   s     r   	<genexpr>z-TestCallback.test_iterable.<locals>.<genexpr>q   s     *!qvv*s   )r   r&   r'   r)   r*   r+   s      r   test_iterablezTestCallback.test_iterableo   s3    ''(BC*r**	*r   c                 B   t        j                  dddddi      }| j                  t        |j                        d       |j                  D ]P  }| j                  |j
                  j                  d       | j                  |j
                  j                  ddi       R y )Nr%   T)abB)invoke_on_loadinvoke_argsinvoke_kwds   )r   r&   r)   r<   
extensionsobjr   r   r0   s      r   test_invoke_on_loadz TestCallback.test_invoke_on_loadt   s    ''(B7;4:58#J*
 	R]]+Q/ 	5AQUUZZ0QUUZZ#s4	5r   c                     d }t        j                  dd      }|j                  |      }| j                  t	        |      t
               y )Nc                     | j                   S r   rb   rN   r   r   s      r   mappedz3TestCallback.test_map_return_values.<locals>.mapped   s    88Or   r%   Trj   )r   r&   r9   r)   r'   WORKING_NAMESr   rt   r,   resultss       r   test_map_return_valuesz#TestCallback.test_map_return_values   sB    	 ''(B7;* &&.-8r   c                    g fd}t        j                  dd      }|j                  |dddd	       | j                  t	              d       t        D cg c]  }|d
   j                   c}      }| j                  |t               D ]/  }| j                  |d   d       | j                  |d   ddd	       1 y c c}w )Nc                 .    j                  | ||f       y r   )append)rN   r   r   objss      r   rt   z/TestCallback.test_map_arguments.<locals>.mapped   s    KKdD)*r   r%   Tru      rm   Ari   rg   rh   r   )r~   rm   )r   r&   r9   r)   r<   r'   r/   rv   )r   rt   r,   or(   r}   s        @r   test_map_argumentszTestCallback.test_map_arguments   s    	+ ''(B7;* 	vq!sc*TA&40a!		01. 	9AQqT6*QqT3#78	9 1s   Cc                     d }t        j                  dd      }|j                  |dddd	      }| j                  |g        y )
Nc                     t        d      Nzhard coded errorRuntimeErrorrs   s      r   rt   z1TestCallback.test_map_eats_errors.<locals>.mapped       122r   r%   Tru   r~   rm   r   ri   r   )r   r&   r9   r)   rw   s       r   test_map_eats_errorsz!TestCallback.test_map_eats_errors   sI    	3 ''(B7;* &&A&4"%r   c                     d }t        j                  ddd      }	 |j                  |dddd	       J # t        $ r Y y w xY w)
Nc                     t        d      r   r   rs   s      r   rt   z:TestCallback.test_map_propagate_exceptions.<locals>.mapped   r   r   r%   T)rj   propagate_map_exceptionsr~   rm   r   ri   r   )r   r&   r9   r   )r   rt   r,   s      r   test_map_propagate_exceptionsz*TestCallback.test_map_propagate_exceptions   sT    	3 ''(B7;AE*
	FF61a3#F.5 		s   5 	A Ac                     d}d }t        j                  dd      }	 |j                  |dddd	
       y # t        j                  $ r%}| j                  |t        |             Y d }~y d }~ww xY w)Nz1No stevedore.test.extension.none extensions foundc                      y r   r   rs   s      r   rt   z<TestCallback.test_map_errors_when_no_plugins.<locals>.mapped   s    r   zstevedore.test.extension.noneTru   r~   rm   r   ri   r   )r   r&   r9   r   	NoMatchesr)   str)r   expected_strrt   r,   errs        r   test_map_errors_when_no_pluginsz,TestCallback.test_map_errors_when_no_plugins   sl    J	 ''(G7;*	5FF61a3#F."" 	5\3s844	5s   5 A-A((A-c                     t        j                  dd      }|j                  dd      }| j                  t	        d |D              t	        dg             y )Nr%   Tru   r   *   c              3   &   K   | ]	  }|d      yw)rm   Nr   )rc   rs     r   rd   z/TestCallback.test_map_method.<locals>.<genexpr>   s     2aQqT2s   )r   r&   
map_methodr)   r8   )r   r,   results      r   test_map_methodzTestCallback.test_map_method   sL    ''(B7;* 2B72622CI>r   c                     t        j                  d      }t        t        D cg c]	  }|||   f c}      }| j	                  |t        |j                                      y c c}w r$   )r   r&   r8   r*   r)   items)r   r,   r/   expected_outputs       r   
test_itemszTestCallback.test_items   sQ    ''(BCIFDbh/FG#bhhj/: Gs   A"N)r   r   r   r-   r2   r>   rA   rD   rH   rR   rX   r_   re   rp   ry   r   r   r   r   r   r   r   r   r   r"   r"   +   s\    +
'
$(+5(0$+
	599"&5?;r   r"   c                   *     e Zd Z fdZd Zd Z xZS )!TestLoadRequirementsNewSetuptoolsc                     t         t        |           t        j                  g d      | _        t        j                  j                  g       | _	        y )N)requireresolveloadr/   spec)
superr   setUpr   Mockmock_epr   r&   make_test_instancer,   r   	__class__s    r   r   z'TestLoadRequirementsNewSetuptools.setUp   s:    /<>yy&LM,,??Cr   c                     | j                   j                  | j                  ddi d       | j                  j                  j	                          | j                  j
                  j	                          y NFr   Tverify_requirements)r,   _load_one_pluginr   r   assert_called_once_withr   r   s    r   test_verify_requirementsz:TestLoadRequirementsNewSetuptools.test_verify_requirements   sT      ub"59 	! 	;446446r   c                     | j                   j                  | j                  ddi d       | j                  d| j                  j                  j
                         | j                  j                  j                          y )NFr   r   r   )r,   r   r   r)   r   
call_countr   r   r   s    r   test_no_verify_requirementsz=TestLoadRequirementsNewSetuptools.test_no_verify_requirements   s^      ub"5: 	! 	<DLL00;;<446r   r   r   r   r   r   r   __classcell__r   s   @r   r   r      s    D
77r   r   c                   *     e Zd Z fdZd Zd Z xZS )!TestLoadRequirementsOldSetuptoolsc                     t         t        |           t        j                  ddg      | _        t        j                  j                  g       | _	        y )Nr   r/   r   )
r   r   r   r   r   r   r   r&   r   r,   r   s    r   r   z'TestLoadRequirementsOldSetuptools.setUp   s>    /<>yyvv&67,,??Cr   c                     | j                   j                  | j                  ddi d       | j                  j                  j	                          y r   r,   r   r   r   r   r   s    r   r   z:TestLoadRequirementsOldSetuptools.test_verify_requirements   s>      ub"59 	! 	;113r   c                     | j                   j                  | j                  ddi d       | j                  j                  j	                          y )NFr   r   r   r   s    r   r   z=TestLoadRequirementsOldSetuptools.test_no_verify_requirements   s>      ub"5: 	! 	<113r   r   r   s   @r   r   r      s    D
4
4r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestExtensionPropertiesc                    t        j                  dt        j                  ddd      t	        j
                         d       | _        t        j                  dt        j                  ddd      t	        j
                         d       | _        y )Nr/   "module.name:attribute.name [extra]
group_namemodule:attribute)r   	Extensionimportlib_metadata
EntryPointr   r   ext1ext2r   s    r   r   zTestExtensionProperties.setUp   sv    ''))<l IIK
	 ''))*L IIK
	r   c                     | j                  d| j                  j                         | j                  d| j                  j                         y )Nzmodule.namemodule)r)   r   module_namer   r   s    r   test_module_namez(TestExtensionProperties.test_module_name  s6    		(=(=>499#8#89r   c                     | j                  d| j                  j                         | j                  d| j                  j                         y )Nzattribute.name	attribute)r)   r   attrr   r   s    r   	test_attrz!TestExtensionProperties.test_attr  s3    )499>>:diinn5r   c                     | j                  d| j                  j                         | j                  d| j                  j                         y )Nr   r   )r)   r   entry_point_targetr   r   s    r   test_entry_point_targetz/TestExtensionProperties.test_entry_point_target  s>    =55	7+55	7r   N)r   r   r   r   r   r   r   r   r   r   r   r      s    
$:67r   r   )__doc__importlib.metadatametadatar   r:   unittestr   	stevedorer   r   stevedore.testsr   r*   rv   objectr   r   TestCaser"   r   r   r   r   r   r   <module>r      s    0     ! 	t*F *(f (
a;5>> a;H7 7*4 4& 7enn  7r   