B
    ÐH/\Ñ  ã               @   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 )é    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krt jd | _t jd= d S )NÚGEVENT_RESOLVER)ÚosÚenvironÚold_resolver)Úself© r	   ú9lib/python3.7/site-packages/gevent/tests/test___config.pyÚsetUp   s    
zTestResolver.setUpc             C   s   | j r| j tjd< d S )Nr   )r   r   r   )r   r	   r	   r
   ÚtearDown   s    zTestResolver.tearDownc             C   s   |   tjjd¡ d S )Nr   )ÚassertEqualr   ÚResolverZenvironment_key)r   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   sp   ddl m} dtjd< t ¡ }|  | ¡ |¡ dtjd< |  | ¡ |¡ t ¡ }ddlm} |  | ¡ |¡ d S )Nr   )r   zfoo,bar,block,dnspythonr   Z	dnspython)Úgevent.resolver.blockingr   r   r   r   r   r   Zgevent.resolver.dnspython)r   r   r   Z	DResolverr	   r	   r
   Útest_env   s    

zTestResolver.test_envc             C   s2   ddl m} t ¡ }| d¡ |  | ¡ |¡ d S )Nr   )r   z!gevent.resolver.blocking.Resolver)r   r   r   Úsetr   r   )r   r   r   r	   r	   r
   Útest_set_str_long1   s    
zTestResolver.test_set_str_longc             C   s2   ddl m} t ¡ }| d¡ |  | ¡ |¡ d S )Nr   )r   Úblock)r   r   r   r   r   r   )r   r   r   r	   r	   r
   Útest_set_str_short8   s    
zTestResolver.test_set_str_shortc             C   s2   ddl m} t ¡ }| |¡ |  | ¡ |¡ d S )Nr   )r   )r   r   r   r   r   r   )r   r   r   r	   r	   r
   Útest_set_class?   s    
zTestResolver.test_set_classc             C   sF   ddl m} ddlm} t ¡ }|  |j|¡ d|_|  |j|¡ d S )Nr   )r   r   )r   r   r   r   ZConfigr   Úresolver)r   ZDefaultr   r   r	   r	   r
   Útest_set_through_configG   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   st   |   t d¡¡ |   t d¡¡ |  t d¡¡ |  t d¡¡ |  t d¡¡ |  t¡ t d¡ W d Q R X d S )NZonÚ1ZoffÚ0Ú z hmm )Z
assertTruer   Zvalidate_boolZassertFalseÚassertRaisesÚ
ValueError)r   r	   r	   r
   Útest_validate_boolS   s    z TestFunctions.test_validate_boolc          	   C   s$   |   t¡ t | ¡ W d Q R X d S )N)r$   r%   r   Zvalidate_invalid)r   r	   r	   r
   Útest_validate_invalid]   s    z#TestFunctions.test_validate_invalidN)r   r   r   r&   r'   r	   r	   r	   r
   r    Q   s   
r    c               @   s,   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 )N)r   Úsortedr   ÚconfigZsettingsÚdir)r   r	   r	   r
   Útest__dir__c   s    zTestConfig.test__dir__c             C   s   |   tj d¡¡ d S )Nr   )ZassertIsNotNoner   r*   Ú__getattr__)r   r	   r	   r
   Útest_getattrg   s    zTestConfig.test_getattrc          	   C   s&   |   t¡ ttjdƒ W d Q R X d S )NZno_such_setting)r$   ÚAttributeErrorÚgetattrr   r*   )r   r	   r	   r
   Útest__getattr__invalidk   s    z!TestConfig.test__getattr__invalidc          	   C   s(   |   t¡ tj dd¡ W d Q R X d S )Nzno such settingT)r$   r/   r   r*   r   )r   r	   r	   r
   Útest_set_invalido   s    zTestConfig.test_set_invalidN)r   r   r   r,   r.   r1   r2   r	   r	   r	   r
   r(   a   s   r(   c               @   s>   e Zd ZeejdejjƒZdd„ Zdd„ Z	dd„ Z
dd	„ Zd
S )ÚTestImportableSettingÚassertRaisesRegexc          	   C   s.   t  ¡ }|  td¡ | g ¡ W d Q R X d S )NzCannot import from empty list)r   ÚImportableSettingr4   ÚImportErrorZ_import_one_of)r   Úir	   r	   r
   Útest_empty_listw   s    z%TestImportableSetting.test_empty_listc          
   C   s€   dd l }t ¡ }ttjƒ}|jdd2}| d¡ |  t	d¡ | 
d¡ W d Q R X W d Q R X |  |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)Úwarningsr   r5   ÚlistÚsysÚpathÚcatch_warningsÚsimplefilterr4   r6   Ú_import_oner   Úlen)r   r;   r7   r>   Úwr	   r	   r
   Útest_path_not_supported}   s    

z-TestImportableSetting.test_path_not_supportedc             C   s   t  ¡ }|  | | ¡| ¡ d S )N)r   r5   ZassertIsrA   )r   r7   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   r5   r   Zget_optionsZshortname_mapZassertIn)r   r7   Zoptionsr	   r	   r
   Útest_get_options‘   s
    
z&TestImportableSetting.test_get_optionsN)r   r   r   r0   ÚunittestÚTestCaseZassertRaisesRegexpr4   r8   rD   rE   rF   r	   r	   r	   r
   r3   s   s   
r3   Ú__main__)r   rG   r=   Zgeventr   rH   r   r    r(   r3   r   Úmainr	   r	   r	   r
   Ú<module>   s   H&