o
    ‡e  ã                   @   s„   d dl Z d dlZd dlZd dlm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	e
dkr@e ¡  dS dS )é    N)Ú_configc                   @   sX   e Zd 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S )ÚTestResolverNc                 C   s&   dt jv rt jd | _t jd= d S d S ©NÚGEVENT_RESOLVER)ÚosÚenvironÚold_resolver©Úself© r   úJD:\Projects\ConvertPro\env\Lib\site-packages\gevent/tests/test___config.pyÚsetUp   s   
þzTestResolver.setUpc                 C   s   | j r| j tjd< d S d S r   )r   r   r   r	   r   r   r   ÚtearDown   s   ÿzTestResolver.tearDownc                 C   s   |   tjjd¡ d S r   )ÚassertEqualr   ÚResolverZenvironment_keyr	   r   r   r   Útest_key   s   zTestResolver.test_keyc                 C   s(   ddl m} t ¡ }|  | ¡ |¡ d S ©Nr   ©r   )Úgevent.resolver.threadr   r   r   Úget©r
   r   Úconfr   r   r   Útest_default   s   zTestResolver.test_defaultc                 C   sœ   ddl m} dtjd< t ¡ }|  | ¡ |¡ dtjd< |  | ¡ |¡ zddlm} W n ty?   dd l	}| 
d¡ Y d S w t ¡ }|  | ¡ |¡ d S )Nr   r   zfoo,bar,block,dnspythonr   Z	dnspythonzdnspython not installed)Úgevent.resolver.blockingr   r   r   r   r   r   Zgevent.resolver.dnspythonÚImportErrorÚwarningsÚwarn)r
   r   r   Z	DResolverr   r   r   r   Útest_env   s   

ýzTestResolver.test_envc                 C   ó2   ddl m} t ¡ }| d¡ |  | ¡ |¡ d S )Nr   r   z!gevent.resolver.blocking.Resolver©r   r   r   Úsetr   r   r   r   r   r   Útest_set_str_long8   ó   
zTestResolver.test_set_str_longc                 C   r   ©Nr   r   Úblockr   r   r   r   r   Útest_set_str_short?   r"   zTestResolver.test_set_str_shortc                 C   s2   ddl m} t ¡ }| |¡ |  | ¡ |¡ d S r   r   r   r   r   r   Útest_set_classF   r"   zTestResolver.test_set_classc                 C   sF   ddl m} ddlm} t ¡ }|  |j|¡ d|_|  |j|¡ d S r#   )r   r   r   r   ZConfigr   Úresolver)r
   ZDefaultr   r   r   r   r   Útest_set_through_configN   s   z$TestResolver.test_set_through_config)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r!   r%   r&   r(   r   r   r   r   r   	   s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestFunctionsc                 C   sŠ   |   t d¡¡ |   t d¡¡ |  t d¡¡ |  t d¡¡ |  t d¡¡ |  t¡ t d¡ W d   ƒ d S 1 s>w   Y  d S )NÚonÚ1ÚoffÚ0Ú z hmm )Ú
assertTruer   Zvalidate_boolZassertFalseÚassertRaisesÚ
ValueErrorr	   r   r   r   Útest_validate_boolZ   s   "ÿz TestFunctions.test_validate_boolc                 C   s:   |   t¡ t | ¡ W d   ƒ d S 1 sw   Y  d S ©N)r3   r4   r   Zvalidate_invalidr	   r   r   r   Útest_validate_invalidd   s   "ÿz#TestFunctions.test_validate_invalidN)r)   r*   r+   r5   r7   r   r   r   r   r,   X   s    
r,   c                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
TestConfigc                 C   s"   |   ttjjƒtttjƒƒ¡ d S r6   )r   Úsortedr   ÚconfigÚsettingsÚdirr	   r   r   r   Útest__dir__j   s   ÿzTestConfig.test__dir__c                 C   s   |   tj d¡¡ d S )Nr'   )ZassertIsNotNoner   r;   Ú__getattr__r	   r   r   r   Útest_getattrn   s   zTestConfig.test_getattrc                 C   s<   |   t¡ ttjdƒ W d   ƒ d S 1 sw   Y  d S )NZno_such_setting)r3   ÚAttributeErrorÚgetattrr   r;   r	   r   r   r   Útest__getattr__invalidr   s   "ÿz!TestConfig.test__getattr__invalidc                 C   s>   |   t¡ tj dd¡ W d   ƒ d S 1 sw   Y  d S )Nzno such settingT)r3   rA   r   r;   r    r	   r   r   r   Útest_set_invalidv   s   "ÿzTestConfig.test_set_invalidN)r)   r*   r+   r>   r@   rC   rD   r   r   r   r   r9   h   s
    r9   c                   @   r8   )
ÚTestImportableSettingc                 C   sD   t  ¡ }|  td¡ | g ¡ W d   ƒ d S 1 sw   Y  d S )NzCannot import from empty list)r   ÚImportableSettingÚassertRaisesRegexr   Z_import_one_of©r
   Úir   r   r   Útest_empty_list|   s   ÿ"þz%TestImportableSetting.test_empty_listc              	   C   s¨   dd l }t ¡ }ttjƒ}|jdd(}| d¡ |  t	d¡ | 
d¡ W d   ƒ n1 s/w   Y  W d   ƒ n1 s>w   Y  |  |tj¡ |  t|ƒd¡ d S )Nr   T)ÚrecordÚalwaysz-Cannot import 'foo/bar/gevent.no_such_module'zfoo/bar/gevent.no_such_module)r   r   rF   ÚlistÚsysÚpathÚcatch_warningsÚsimplefilterrG   r   Ú_import_oner   Úlen)r
   r   rI   rO   Úwr   r   r   Útest_path_not_supported‚   s   

ÿþ€þz-TestImportableSetting.test_path_not_supportedc                 C   s   t  ¡ }|  | | ¡| ¡ d S r6   )r   rF   ZassertIsrR   rH   r   r   r   Útest_non_string’   s   z%TestImportableSetting.test_non_stringc                 C   s:   t  ¡ }|  i | ¡ ¡ ddi|_| ¡ }|  d|¡ d S )NZfoozbad/path)r   rF   r   Zget_optionsZshortname_mapZassertIn)r
   rI   Úoptionsr   r   r   Útest_get_options–   s
   
z&TestImportableSetting.test_get_optionsN)r)   r*   r+   rJ   rU   rV   rX   r   r   r   r   rE   z   s
    rE   Ú__main__)r   ZunittestrN   Zgeventr   ZTestCaser   r,   r9   rE   r)   Úmainr   r   r   r   Ú<module>   s   O$ÿ