U
    [e(                     @   s   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 ddd	gZdd	gZG d
d deZG dd deZG dd dejZG dd dejZG dd dejZG dd dejZdS )zTests for stevedore.extension
    N)mock)	exception)	extension)utilse1t1t2c                   @   s   e Zd Zdd Zdd ZdS )FauxExtensionc                 O   s   || _ || _d S Nargskwdsselfr   r    r   `/var/www/html/services/stratfitenv/lib/python3.8/site-packages/stevedore/tests/test_extension.py__init__   s    zFauxExtension.__init__c                 C   s   | j | j|fS r
   r   )r   datar   r   r   get_args_and_data"   s    zFauxExtension.get_args_and_dataN)__name__
__module____qualname__r   r   r   r   r   r   r	      s   r	   c                   @   s   e Zd Zdd ZdS )BrokenExtensionc                 O   s   t dd S )NzDid not create)IOErrorr   r   r   r   r   '   s    zBrokenExtension.__init__N)r   r   r   r   r   r   r   r   r   &   s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%S )&TestCallbackc                 C   s&   t d}t| }| |t d S )Nstevedore.test.extension)r   ExtensionManagersortednamesassertEqual	ALL_NAMESr   emr   r   r   r   test_detect_plugins,   s    
z TestCallback.test_detect_pluginsc                 C   s$   t d}|d }| |jd d S )Nr   r   )r   r   r   namer   r"   er   r   r   test_get_by_name1   s    
zTestCallback.test_get_by_namec                 C   sN   t d}| }| tddddgtttd| | dt| d S )Nr   r   e2r   r   r$      )	r   r   Zlist_entry_pointsr   setmapoperator
attrgetterlen)r   r"   nr   r   r   test_list_entry_points6   s    
z#TestCallback.test_list_entry_pointsc                 C   sB   t d}| }| tddddgt| | dt| d S )Nr   r   r(   r   r   r)   )r   r   Zentry_points_namesr   r*   r.   r!   r   r   r   test_list_entry_points_names=   s    
z)TestCallback.test_list_entry_points_namesc                 C   s   t d}| d|kd d S )Nr   r   T)r   r   r   r   r"   r   r   r   test_contains_by_nameC   s    
z"TestCallback.test_contains_by_namec                 C   s<   t d}z|d  W n tk
r*   Y nX ds8tdd S )Nr   t3FzFailed to raise KeyError)r   r   KeyErrorAssertionErrorr2   r   r   r   test_get_by_name_missingG   s    
z%TestCallback.test_get_by_name_missingc                 C   sH   t d}dd |D }t d}dd |D }| |d |d  d S )Nr   c                 S   s   g | ]
}|j qS r   entry_point.0extr   r   r   
<listcomp>T   s     zFTestCallback.test_load_multiple_times_entry_points.<locals>.<listcomp>c                 S   s   g | ]
}|j qS r   r8   r:   r   r   r   r=   V   s     r   r   r   ZassertIs)r   em1Zeps1em2Zeps2r   r   r   %test_load_multiple_times_entry_pointsP   s
    

z2TestCallback.test_load_multiple_times_entry_pointsc                 C   sH   t d}dd |D }t d}dd |D }| |d |d  d S )Nr   c                 S   s   g | ]
}|j qS r   pluginr:   r   r   r   r=   ]   s     zATestCallback.test_load_multiple_times_plugins.<locals>.<listcomp>c                 S   s   g | ]
}|j qS r   rB   r:   r   r   r   r=   _   s     r   r>   )r   r?   Zplugins1r@   Zplugins2r   r   r    test_load_multiple_times_pluginsY   s
    

z-TestCallback.test_load_multiple_times_pluginsc              	   C   sP   t jj}g |d< tjdtdd t d}| }W 5 Q R X | |g  d S )Nzstevedore.test.fauxzstevedore._cache.get_group_allzcalled get_group_all)Zside_effect)r   r   ZENTRY_POINT_CACHEr   patchr6   r   r   )r   cacher"   r   r   r   r   test_use_cacheb   s    
zTestCallback.test_use_cachec                 C   s,   t d}tdd |D }| |t d S )Nr   c                 s   s   | ]}|j V  qd S r
   r$   )r;   r&   r   r   r   	<genexpr>q   s     z-TestCallback.test_iterable.<locals>.<genexpr>)r   r   r   r   r    r!   r   r   r   test_iterableo   s    
zTestCallback.test_iterablec                 C   s\   t jdddddid}| t|jd |jD ](}| |jjd | |jjddi q.d S )Nr   T)abB)invoke_on_loadZinvoke_argsZinvoke_kwds   )r   r   r   r.   
extensionsobjr   r   r%   r   r   r   test_invoke_on_loadt   s    
z TestCallback.test_invoke_on_loadc                 C   s4   dd }t jddd}||}| t|t d S )Nc                 _   s   | j S r
   rH   r<   r   r   r   r   r   mapped   s    z3TestCallback.test_map_return_values.<locals>.mappedr   TrN   )r   r   r+   r   r   WORKING_NAMESr   rT   r"   resultsr   r   r   test_map_return_values   s    
z#TestCallback.test_map_return_valuesc                    s   g   fdd}t jddd}|j|dddd	d
 | t d tdd  D }| |t  D ]*}| |d d | |d dd	d
 qdd S )Nc                    s     | ||f d S r
   )appendrS   Zobjsr   r   rT      s    z/TestCallback.test_map_arguments.<locals>.mappedr   TrU      rO   ArM   rK   rL   c                 S   s   g | ]}|d  j qS )r   rH   )r;   or   r   r   r=      s     z3TestCallback.test_map_arguments.<locals>.<listcomp>)r\   rO   )r   r   r+   r   r.   r   rV   )r   rT   r"   r   r_   r   r[   r   test_map_arguments   s    zTestCallback.test_map_argumentsc                 C   s:   dd }t jddd}|j|dddd	d
}| |g  d S )Nc                 _   s   t dd S Nzhard coded errorRuntimeErrorrS   r   r   r   rT      s    z1TestCallback.test_map_eats_errors.<locals>.mappedr   TrU   r\   rO   r]   rM   r^   )r   r   r+   r   rW   r   r   r   test_map_eats_errors   s    z!TestCallback.test_map_eats_errorsc                 C   sR   dd }t jdddd}z |j|dddd	d
 ds6tW n tk
rL   Y nX d S )Nc                 _   s   t dd S ra   rb   rS   r   r   r   rT      s    z:TestCallback.test_map_propagate_exceptions.<locals>.mappedr   T)rN   Zpropagate_map_exceptionsr\   rO   r]   rM   r^   F)r   r   r+   r6   rc   )r   rT   r"   r   r   r   test_map_propagate_exceptions   s    z*TestCallback.test_map_propagate_exceptionsc              
   C   sl   d}dd }t jddd}z|j|ddd	d
d W n4 tjk
rf } z| |t| W 5 d }~X Y nX d S )Nz1No stevedore.test.extension.none extensions foundc                 _   s   d S r
   r   rS   r   r   r   rT      s    z<TestCallback.test_map_errors_when_no_plugins.<locals>.mappedzstevedore.test.extension.noneTrU   r\   rO   r]   rM   r^   )r   r   r+   r   Z	NoMatchesr   str)r   Zexpected_strrT   r"   errr   r   r   test_map_errors_when_no_plugins   s    z,TestCallback.test_map_errors_when_no_pluginsc                 C   s>   t jddd}|dd}| tdd |D tdg d S )Nr   TrU   r   *   c                 s   s   | ]}|d  V  qdS )rO   Nr   )r;   rr   r   r   rI      s     z/TestCallback.test_map_method.<locals>.<genexpr>)r   r   Z
map_methodr   r*   )r   r"   resultr   r   r   test_map_method   s
    zTestCallback.test_map_methodc                    s8   t d t fddtD }| |t   d S )Nr   c                    s   g | ]}| | fqS r   r   )r;   r$   r"   r   r   r=      s     z+TestCallback.test_items.<locals>.<listcomp>)r   r   r*   r    r   items)r   Zexpected_outputr   rm   r   
test_items   s    
zTestCallback.test_itemsN)r   r   r   r#   r'   r0   r1   r3   r7   rA   rD   rG   rJ   rR   rY   r`   rd   re   rh   rl   ro   r   r   r   r   r   +   s$   			

r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )!TestLoadRequirementsNewSetuptoolsc                    s6   t t|   tjddddgd| _tjg | _	d S )Nrequireresolveloadr$   spec)
superrp   setUpr   Mockmock_epr   r   make_test_instancer"   r   	__class__r   r   rw      s    z'TestLoadRequirementsNewSetuptools.setUpc                 C   s4   | j j| jddi dd | jj  | jj  d S NFr   TZverify_requirements)r"   _load_one_pluginry   rq   assert_called_once_withrr   r{   r   r   r   test_verify_requirements   s
    z:TestLoadRequirementsNewSetuptools.test_verify_requirementsc                 C   s:   | j j| jddi dd | d| jjj | jj  d S )NFr   r   r   )r"   r   ry   r   rq   Z
call_countrr   r   r{   r   r   r   test_no_verify_requirements   s
    z=TestLoadRequirementsNewSetuptools.test_no_verify_requirementsr   r   r   rw   r   r   __classcell__r   r   r|   r   rp      s   rp   c                       s,   e Zd Z fddZdd Zdd Z  ZS )!TestLoadRequirementsOldSetuptoolsc                    s2   t t|   tjddgd| _tjg | _	d S )Nrs   r$   rt   )
rv   r   rw   r   rx   ry   r   r   rz   r"   r{   r|   r   r   rw      s    z'TestLoadRequirementsOldSetuptools.setUpc                 C   s(   | j j| jddi dd | jj  d S r~   r"   r   ry   rs   r   r{   r   r   r   r      s    z:TestLoadRequirementsOldSetuptools.test_verify_requirementsc                 C   s(   | j j| jddi dd | jj  d S )NFr   r   r   r{   r   r   r   r      s    z=TestLoadRequirementsOldSetuptools.test_no_verify_requirementsr   r   r   r|   r   r      s   r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestExtensionPropertiesc                 C   sD   t dtdddt d | _t dtdddt d | _d S )Nr$   "module.name:attribute.name [extra]
group_namemodule:attribute)r   	Extensionimportlib_metadata
EntryPointr   rx   ext1ext2r{   r   r   r   rw      s(        zTestExtensionProperties.setUpc                 C   s$   |  d| jj |  d| jj d S )Nzmodule.namemodule)r   r   module_namer   r{   r   r   r   test_module_name  s    z(TestExtensionProperties.test_module_namec                 C   s&   |  dg| jj |  g | jj d S )Nz[extra])r   r   extrasr   r{   r   r   r   test_extras  s    z#TestExtensionProperties.test_extrasc                 C   s$   |  d| jj |  d| jj d S )Nzattribute.name	attribute)r   r   attrr   r{   r   r   r   	test_attr  s    z!TestExtensionProperties.test_attrc                 C   s$   |  d| jj |  d| jj d S )Nr   r   )r   r   Zentry_point_targetr   r{   r   r   r   test_entry_point_target  s    z/TestExtensionProperties.test_entry_point_targetN)r   r   r   rw   r   r   r   r   r   r   r   r   r      s
   r   )__doc__importlib.metadatametadatar   r,   Zunittestr   Z	stevedorer   r   Zstevedore.testsr   r    rV   objectr	   r   ZTestCaser   rp   r   r   r   r   r   r   <module>   s   
	 %