U
    [e                     @   sb   d 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	 d	e
jZdS )
zTests for stevedore.extension
    N)driver)	exception)	extension)test_extension)utilsc                   @   sD   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S )TestCallbackc                 C   s*   t dd}t| }| |dg d S )Nstevedore.test.extensiont1)r   DriverManagersortednamesassertEqual)selfemr    r   ]/var/www/html/services/stratfitenv/lib/python3.8/site-packages/stevedore/tests/test_driver.pytest_detect_plugins   s    z TestCallback.test_detect_pluginsc                 C   s<   dd }t dd}||ddd}| |ddd	dif d S )
Nc                 _   s   | j ||fS )N)name)extargskwdsr   r   r   invoke    s    z&TestCallback.test_call.<locals>.invoker   r	   aC)b)r   r   )r   r
   r   )r   r   r   resultr   r   r   	test_call   s    zTestCallback.test_callc                 C   s(   t jdddd}|j }| |tj d S )Nr   r	   FZinvoke_on_load)r   r
   ZassertIsr   FauxExtensionr   r   dr   r   r   (test_driver_property_not_invoked_on_load&   s
    z5TestCallback.test_driver_property_not_invoked_on_loadc                 C   s(   t jdddd}|j }| |tj d S )Nr   r	   Tr   )r   r
   ZassertIsInstancer   r   r   r   r   r   $test_driver_property_invoked_on_load,   s
    z1TestCallback.test_driver_property_invoked_on_loadc              
   C   sJ   zt dd W n4 tjk
rD } z| dt| W 5 d }~X Y nX d S )Nzstevedore.test.extension.noner	   z/No 'stevedore.test.extension.none' driver found)r   r
   r   Z	NoMatchesassertInstr)r   errr   r   r   test_no_drivers2   s    zTestCallback.test_no_driversc                 C   s6   zt dd W n tk
r$   Y nX | dd d S )Nr   e2FzNo error raised)r   r
   ImportErrorr   )r   r   r   r   test_bad_driver9   s
    zTestCallback.test_bad_driverc              
   C   s   t dtddddd t dtddddd g}ztj|d }|| W n4 tj	k
r } z| 
dt| W 5 d }~X Y nX | d d S )Nbackendzpkg1:driverzpkg backendzpkg2:driverr   ZMultiplezShould have had an error)r   	Extensionimportlib_metadata
EntryPointr   r
   Zmake_test_instanceZ_init_pluginsr   ZMultipleMatchesr#   r$   Zfail)r   
extensionsdmr%   r   r   r   test_multiple_driversA   s6        "z"TestCallback.test_multiple_driversN)
__name__
__module____qualname__r   r   r!   r"   r&   r)   r0   r   r   r   r   r      s   r   )__doc__importlib.metadatametadatar,   Z	stevedorer   r   r   Zstevedore.testsr   r   ZTestCaser   r   r   r   r   <module>   s   