o
    Zœc¤  ã                   @   s€  d dl mZ d dlZd dlZd dlZd dlZddlmZmZm	Z	m
Z
mZ d dlmZmZ G dd„ dejƒZG dd	„ d	eƒZG d
d„ deƒ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G dd„ dejƒZdd„ Zedkr¾z ejd dkr©e ¡  ¡ D ]\ZZ e!d "ee ¡ƒ q˜e #¡  W n	 e$y³   Y nw e %¡  &eƒ ¡ dS dS )é    )Úprint_functionNé   )ÚjsonÚDJANGO_POSTGRESÚImproperlyConfiguredÚREDIS_DRIVERÚquote)ÚEnvÚPathc                   @   s‚   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eddddZedddZdZdZedd„ ƒZdd„ Zdd„ Zdd„ ZdS )Ú	BaseTestszhttp://www.google.com/zSpostgres://uf07k1:wegauwhg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722zMmysql://bea6eb0:69772142@us-cdbr-east.cleardb.com/heroku_97681?reconnect=truez0mysqlgis://user:password@127.0.0.1/some_databasez1sqlite:////full/path/to/your/database/file.sqlitezoracle://user:password@sid/z$oracle://user:password@host:1521/sidz8custom.backend://user:password@example.com:5430/databasez^redshift://user:password@examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/devúmemcache://127.0.0.1:11211ú\rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient&password=secretú5smtps://user@domain.com:password@smtp.example.com:587Úbaré   g¸…ëQ¸@@)ÚoneÚtwoÚthreeÚon)ÚfooÚtestú	/home/devzexported varc                 C   sî   t d2i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#| j“d$| j“d%| j“d&| j“d'| j“d(| j“d)| j“d*| j“d+| j	“d,| j
“d-| j“d.| j“d/t | j¡“d0| j“d1| j“ŽS )3NÚSTR_VARr   ÚMULTILINE_STR_VARúfoo\nbarÚINT_VARÚ42Ú	FLOAT_VARz33.3ÚFLOAT_COMMA_VARz33,3ÚFLOAT_STRANGE_VAR1z123,420,333.3ÚFLOAT_STRANGE_VAR2z123.420.333,3ÚBOOL_TRUE_VARÚ1ÚBOOL_TRUE_VAR2ÚTrueÚBOOL_FALSE_VARÚ0ÚBOOL_FALSE_VAR2ÚFalseÚPROXIED_VARz$STR_VARÚINT_LISTz42,33Ú	INT_TUPLEz(42,33)ÚSTR_LIST_WITH_SPACESz
 foo,  barÚ
EMPTY_LISTÚ ÚDICT_VARzfoo=bar,test=onÚDATABASE_URLÚDATABASE_MYSQL_URLÚDATABASE_MYSQL_GIS_URLÚDATABASE_SQLITE_URLÚDATABASE_ORACLE_URLÚDATABASE_ORACLE_TNS_URLÚDATABASE_REDSHIFT_URLÚDATABASE_CUSTOM_BACKEND_URLÚ	CACHE_URLÚCACHE_REDISÚ	EMAIL_URLÚURL_VARÚJSON_VARÚPATH_VARÚEXPORTED_VAR© )ÚdictÚPOSTGRESÚMYSQLÚMYSQLGISÚSQLITEÚORACLEÚ
ORACLE_TNSÚREDSHIFTÚCUSTOM_BACKENDÚMEMCACHEÚREDISÚEMAILÚURLr   ÚdumpsÚJSONÚPATHÚEXPORTED)Úclsr?   r?   úB/var/www/chikooza/env/lib/python3.10/site-packages/environ/test.pyÚgenerateData!   s~   ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâázBaseTests.generateDatac                 C   s$   t j| _|  ¡  t _t_tƒ | _d S ©N)ÚosÚenvironÚ_old_environrS   r	   ÚENVIRONÚenv©Úselfr?   r?   rR   ÚsetUpD   s   zBaseTests.setUpc                 C   s   | j t_d S rT   )rW   rU   rV   rZ   r?   r?   rR   ÚtearDownI   s   zBaseTests.tearDownc                 C   s    |   |t|ƒ¡ |   ||¡ d S rT   )ÚassertEqualÚtype)r[   Útype_ÚexpectedÚactualr?   r?   rR   ÚassertTypeAndValueL   s   zBaseTests.assertTypeAndValueN)Ú__name__Ú
__module__Ú__qualname__rL   rA   rB   rC   rD   rF   rE   rH   rG   rI   rJ   rK   r@   rN   ÚDICTrO   rP   ÚclassmethodrS   r\   r]   rc   r?   r?   r?   rR   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%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5S )6ÚEnvTestsc                 C   s   |   d| jddd¡ d S )Né   Únot_present©Údefault©r^   rY   rZ   r?   r?   rR   Útest_not_present_with_defaultS   ó   z&EnvTests.test_not_present_with_defaultc                 C   s   |   t| jd¡ d S )Nrk   )ÚassertRaisesr   rY   rZ   r?   r?   rR   Ú test_not_present_without_defaultV   s   z)EnvTests.test_not_present_without_defaultc                 C   s4   |   d| jv ¡ |   d| jv ¡ |  d| jv ¡ d S )Nr   r-   ÚI_AM_NOT_A_VAR)Ú
assertTruerY   ÚassertFalserZ   r?   r?   rR   Útest_containsY   s   zEnvTests.test_containsc                 C   s^   |   td|  d¡¡ |   td| j d¡¡ |   td| j d¡¡ |   td| jjddd¡ d S )Nr   r   r   r   zfoo
barT)Ú	multiline)rc   ÚstrrY   rZ   r?   r?   rR   Útest_str^   s   zEnvTests.test_strc                 C   s   |   td| j d¡¡ d S )Ns   barr   )rc   ÚbytesrY   rZ   r?   r?   rR   Ú
test_bytesd   rp   zEnvTests.test_bytesc                 C   s2   |   td| jdtd¡ |   td| j d¡¡ d S )Né*   r   ©Úcast)rc   ÚintrY   rZ   r?   r?   rR   Útest_intg   s   zEnvTests.test_intc                 C   s   |   | jdtd dd u ¡ d S )NÚNOT_PRESENT_VAR)r~   rm   )rt   rY   r   rZ   r?   r?   rR   Útest_int_with_none_defaultk   ó   z#EnvTests.test_int_with_none_defaultc                 C   sz   |   td| jdtd¡ |   td| j d¡¡ |   td| jdtd¡ |   td| jdtd¡ |   td| jdtd¡ d S )Nçfffff¦@@r   r}   r   g333µúlAr   r    )rc   ÚfloatrY   rZ   r?   r?   rR   Ú
test_floatn   s
   zEnvTests.test_floatc                 C   óJ   |   td| jdtd¡ |   td| jdtd¡ |   td| j d¡¡ d S )NTr!   r}   r#   ©rc   ÚboolrY   rZ   r?   r?   rR   Útest_bool_truev   ó   zEnvTests.test_bool_truec                 C   r‡   )NFr%   r}   r'   rˆ   rZ   r?   r?   rR   Útest_bool_false{   r‹   zEnvTests.test_bool_falsec                 C   s   |   d|  d¡¡ d S )Nr   r)   rn   rZ   r?   r?   rR   Útest_proxied_value€   s   zEnvTests.test_proxied_valuec                 C   s>   |   tddg| jdtgd¡ |   tddg| j dt¡¡ d S )Nr|   é!   r*   r}   ©rc   ÚlistrY   r   rZ   r?   r?   rR   Útest_int_listƒ   s    zEnvTests.test_int_listc                 C   sL   |   td| jdtfd¡ |   td| j dt¡¡ |   td| j d¡¡ d S )N)r|   rŽ   r*   r}   )r   Ú33)rc   ÚtuplerY   r   rZ   r?   r?   rR   Útest_int_tuple‡   s   zEnvTests.test_int_tuplec                 C   s<   |   tddg| jdtgd¡ |   tddg| j d¡¡ d S )Nz fooz  barr,   r}   )rc   r   rY   rx   rZ   r?   r?   rR   Útest_str_list_with_spacesŒ   s   ÿ
ÿz"EnvTests.test_str_list_with_spacesc                 C   s   |   tg | jdtgd¡ d S )Nr-   r}   r   rZ   r?   r?   rR   Útest_empty_list’   rƒ   zEnvTests.test_empty_listc                 C   s   |   t| j| j d¡¡ d S )Nr/   )rc   r@   rg   rY   rZ   r?   r?   rR   Útest_dict_value•   s   zEnvTests.test_dict_valuec                 C   sè   |   ddi| j dt¡¡ |   ddi| j dttd¡¡ |   dg d¢i| j dttgd¡¡ |   dg d¢i| j dttgd¡¡ |   dd	d
gddœ| j dttttgdd¡¡ |   ddddœ| j dttttdd¡¡ d S )NÚar"   za=1r   )Úvalue)r"   Ú2Ú3za=1,2,3)r   r   rj   gš™™™™™ñ?gš™™™™™@rj   )r˜   ÚbÚcza=1;b=1.1,2.2;c=3)rœ   )r™   r~   Úunamezhttp://www.google.comT)r˜   r   rœ   z&a=uname;c=http://www.google.com;b=True)r^   rY   Úparse_valuer@   r   rx   r…   r‰   rZ   r?   r?   rR   Útest_dict_parsing˜   s    &&ÿÿzEnvTests.test_dict_parsingc                 C   sL   | j  d¡}|  |j| j j¡ |  | ¡ | j¡ |  d | j jdd d¡ d S )Nr;   Ú	OTHER_URLrl   )rY   Úurlr^   Ú	__class__Ú	URL_CLASSÚgeturlrL   ©r[   r¢   r?   r?   rR   Útest_url_value¤   s   zEnvTests.test_url_valuec                 C   s0   d}dt |ƒ }| j |¡}|  |d |¡ d S )Nz	#passwordz%mysql://user:%s@127.0.0.1:3306/dbnameÚPASSWORD)r   rY   Údb_url_configr^   )r[   Ú!password_with_unquoted_charactersÚencoded_urlÚ
parsed_urlr?   r?   rR   Útest_url_encoded_partsª   s   zEnvTests.test_url_encoded_partsc                 C   s   | j  ¡ }|  |d t¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d d	¡ |  |d
 d¡ | j  d¡}|  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d
 d¡ | j  d¡}|  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d
 d¡ | j  d¡}|  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  d
|v ¡ | j  d¡}|  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d
 d¡ | j  d¡}|  |d d ¡ |  |d d!¡ |  |d d"¡ |  |d d¡ |  |d d¡ |  |d
 d#¡ | j  d$¡}|  |d d%¡ |  |d d&¡ | j  d'¡}|  |d d(¡ |  |d d)¡ |  |d d*¡ |  |d d¡ |  |d d¡ |  |d
 d+¡ d S ),NÚENGINEÚNAMEÚd8r82722ÚHOSTú*ec2-107-21-253-135.compute-1.amazonaws.comÚUSERÚuf07k1r¨   ÚwegauwhgÚPORTé7  r1   údjango.db.backends.mysqlÚheroku_97681úus-cdbr-east.cleardb.comÚbea6eb0Ú69772142r.   r2   ú$django.contrib.gis.db.backends.mysqlÚsome_databasez	127.0.0.1ÚuserÚpasswordr5   zdjango.db.backends.oracleÚsidr4   ÚhostÚ1521r6   Údjango_redshift_backendÚdevz<examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.comi?  r3   údjango.db.backends.sqlite3z'/full/path/to/your/database/file.sqliter7   zcustom.backendÚdatabasezexample.comi6  )rY   Údbr^   r   ru   )r[   Ú	pg_configÚmysql_configÚmysql_gis_configÚoracle_configÚredshift_configÚsqlite_configÚcustom_backend_configr?   r?   rR   Útest_db_url_value°   sh   
zEnvTests.test_db_url_valuec                 C   sp   | j  ¡ }|  |d d¡ |  |d d¡ | j  d¡}|  |d d¡ |  |d d¡ |  |d d	d
dœ¡ d S )NÚBACKENDú3django.core.cache.backends.memcached.MemcachedCacheÚLOCATIONú127.0.0.1:11211r9   údjango_redis.cache.RedisCacheúredis://127.0.0.1:6379/1ÚOPTIONSú!django_redis.client.DefaultClientÚsecret©ÚCLIENT_CLASSr¨   )rY   Ú	cache_urlr^   )r[   Úcache_configÚredis_configr?   r?   rR   Útest_cache_url_valueí   s   

þzEnvTests.test_cache_url_valuec                 C   sn   | j  ¡ }|  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d	 d
¡ |  |d d¡ d S )NÚEMAIL_BACKENDú+django.core.mail.backends.smtp.EmailBackendÚ
EMAIL_HOSTúsmtp.example.comÚEMAIL_HOST_PASSWORDrÀ   ÚEMAIL_HOST_USERúuser@domain.comÚ
EMAIL_PORTéK  ÚEMAIL_USE_TLST)rY   Ú	email_urlr^   )r[   Úemail_configr?   r?   rR   Útest_email_url_valueû   s   
zEnvTests.test_email_url_valuec                 C   s   |   | j| j d¡¡ d S )Nr<   )r^   rN   rY   r   rZ   r?   r?   rR   Útest_json_value  rp   zEnvTests.test_json_valuec                 C   s$   | j  d¡}|  tt| jƒ|¡ d S )Nr=   )rY   Úpathrc   r
   rO   )r[   Úrootr?   r?   rR   Ú	test_path  s   zEnvTests.test_pathc                 C   s|   |   | jjdddd¡ |   | jjdddd¡ |   | jjdddd¡ |   | jjd	d
dd¡ |   | jjdddd¡ d S )Nr   Ústringrl   r   r!   Tr%   Fr   r   r|   r   g333333ó?r„   )r^   rY   Ú	get_valuerZ   r?   r?   rR   Útest_smart_cast  s
   zEnvTests.test_smart_castc                 C   s   |   | j|  d¡¡ d S )Nr>   )r^   rP   rY   rZ   r?   r?   rR   Útest_exported  ó   zEnvTests.test_exportedN)rd   re   rf   ro   rr   rv   ry   r{   r€   r‚   r†   rŠ   rŒ   r   r‘   r”   r•   r–   r—   r    r§   r­   rÐ   rß   rì   rí   rð   ró   rô   r?   r?   r?   rR   ri   Q   s6    =
ri   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚFileEnvTestsc                    sJ   t t| ƒ ¡  i t_tƒ | _ttdddƒ}| jj|ttddj	d d S )NT©Úis_fileztest_env.txt)r=   )
Úsuperrö   r\   r	   rX   rY   r
   Ú__file__Úread_envÚ__root__)r[   Ú	file_path©r£   r?   rR   r\     s
   zFileEnvTests.setUp)rd   re   rf   r\   Ú__classcell__r?   r?   rþ   rR   rö     s    rö   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚSubClassTestsc                    s8   t tˆ ƒ ¡  ˆ  ¡ ˆ _G ‡ fdd„dtƒ}|ƒ ˆ _d S )Nc                       s   e Zd Z” jZdS )z"SubClassTests.setUp.<locals>.MyEnvN)rd   re   rf   ÚCONFIGrX   r?   rZ   r?   rR   ÚMyEnv%  s    
r  )rù   r   r\   rS   r  r	   rY   )r[   r  rþ   rZ   rR   r\   "  s   
zSubClassTests.setUpc                 C   s   |   | j| jju ¡ d S rT   )rt   r  rY   rX   rZ   r?   r?   rR   Útest_singleton_environ)  rõ   z$SubClassTests.test_singleton_environ)rd   re   rf   r\   r  rÿ   r?   r?   rþ   rR   r      s    r   c                   @   ó   e Zd Zdd„ ZdS )ÚSchemaEnvTestsc                 C   s¬   t ttdfttgtgdgfd}|  td|dƒ¡ |  td|dƒ¡ |  d|dƒ¡ |  d	|d
d	d¡ |  tddg|dƒ¡ |  tdg|dƒ¡ |  td|dtd¡ d S )Nr„   r   )r   r   r   r*   ÚDEFAULT_LISTr|   r   r   r   r   r   ÚNOT_PRESENT2rl   rŽ   r*   r  r   r}   )r	   r   r…   rx   rc   r^   r   )r[   rY   r?   r?   rR   Útest_schema/  s   ÿzSchemaEnvTests.test_schemaN)rd   re   rf   r  r?   r?   r?   rR   r  -  ó    r  c                   @   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d„ Z
dd„ Zdd„ Zdd„ ZdS )ÚDatabaseTestSuitec                 C   sr   d}t  |¡}|  |d t¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d	 d
¡ |  |d d¡ d S )Nzhpostgres://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvnr®   r¯   Úd8r82722r2kuvnr±   r²   r³   Úuf07k1i6d8ia0vr¨   Úwegauwhgeuiowegr¶   r·   ©r	   r©   r^   r   r¦   r?   r?   rR   Útest_postgres_parsingB  ó   
z'DatabaseTestSuite.test_postgres_parsingc                 C   sB   d}t  |¡}|  |d t¡ |  |d d¡ |  |d d¡ d S )Nz"postgres:////var/run/postgresql/dbr®   r¯   rÈ   r±   z/var/run/postgresqlr  r¦   r?   r?   rR   Ú(test_postgres_parsing_unix_domain_socketM  s
   
z:DatabaseTestSuite.test_postgres_parsing_unix_domain_socketc                 C   ór   d}t  |¡}|  |d d¡ |  |d d¡ |  |d d¡ |  |d d	¡ |  |d
 d¡ |  |d d¡ d S )Nzgpostgis://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvnr®   z&django.contrib.gis.db.backends.postgisr¯   r  r±   r²   r³   r  r¨   r  r¶   r·   ©r	   r©   r^   r¦   r?   r?   rR   Útest_postgis_parsingU  r  z&DatabaseTestSuite.test_postgis_parsingc                 C   r  )Nzhmysqlgis://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvnr®   r½   r¯   r  r±   r²   r³   r  r¨   r  r¶   r·   r  r¦   r?   r?   rR   Útest_mysql_gis_parsing`  r  z(DatabaseTestSuite.test_mysql_gis_parsingc                 C   r  )Nz^mysql://bea6eb025ca0d8:69772142@us-cdbr-east.cleardb.com/heroku_97681db3eff7580?reconnect=truer®   r¸   r¯   Úheroku_97681db3eff7580r±   rº   r³   Úbea6eb025ca0d8r¨   r¼   r¶   r.   r  r¦   r?   r?   rR   Útest_cleardb_parsingk  r  z&DatabaseTestSuite.test_cleardb_parsingc                 C   sr   d}t  |¡}|  |d d¡ |  |d d¡ |  |d d¡ |  |d d	¡ |  |d
 d¡ |  |d d¡ d S )Nz mysql://travis@localhost/test_dbr®   r¸   r¯   Útest_dbr±   Ú	localhostr³   Útravisr¨   r.   r¶   r  r¦   r?   r?   rR   Útest_mysql_no_passwordv  r  z(DatabaseTestSuite.test_mysql_no_passwordc                 C   ó2   d}t  |¡}|  |d d¡ |  |d d¡ d S )Nz	sqlite://r®   rÆ   r¯   ú:memory:r  r¦   r?   r?   rR   Útest_empty_sqlite_url  ó   
z'DatabaseTestSuite.test_empty_sqlite_urlc                 C   r  )Nzsqlite://:memory:r®   rÆ   r¯   r  r  r¦   r?   r?   rR   Útest_memory_sqlite_urlˆ  r   z(DatabaseTestSuite.test_memory_sqlite_urlc                 C   s†   d}t jdd1}t |¡}|  |d d¡ |  |d d¡ |  t|ƒd¡ |  t|d	 jt	ƒ¡ W d   ƒ d S 1 s<w   Y  d S )
Nzsqlite://missing-slash-pathT)Úrecordr®   rÆ   r¯   r  r   r   )
ÚwarningsÚcatch_warningsr	   r©   r^   Úlenrt   Ú
issubclassÚcategoryÚUserWarning)r[   r¢   Úwr?   r?   rR   Ú)test_memory_sqlite_url_warns_about_netloc  s   
"ûz;DatabaseTestSuite.test_memory_sqlite_url_warns_about_netlocc                 C   s‚   d}t  |¡}|  |d d¡ d}t  |¡}|  |d d ¡ |  |d d¡ |  |d d¡ d	}t  |¡}|  |d
 ddi¡ d S )Nz6postgres://user:pass@host:1234/dbname?conn_max_age=600ÚCONN_MAX_AGEiX  z]postgres://user:pass@host:1234/dbname?conn_max_age=None&autocommit=True&atomic_requests=FalseÚ
AUTOCOMMITTÚATOMIC_REQUESTSFzImysql://user:pass@host:1234/dbname?init_command=SET storage_engine=INNODBr×   Úinit_commandzSET storage_engine=INNODBr  r¦   r?   r?   rR   Útest_database_options_parsing˜  s   




ÿz/DatabaseTestSuite.test_database_options_parsingc                 C   r  )NzJldap://cn=admin,dc=nodomain,dc=org:some_secret_password@ldap.nodomain.org/r®   zldapdb.backends.ldapr±   zldap.nodomain.orgr¶   r.   r¯   zldap://ldap.nodomain.orgr³   zcn=admin,dc=nodomain,dc=orgr¨   Úsome_secret_passwordr  r¦   r?   r?   rR   Útest_database_ldap_url©  r  z(DatabaseTestSuite.test_database_ldap_urlN)rd   re   rf   r  r  r  r  r  r  r  r!  r*  r/  r1  r?   r?   r?   rR   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 )&ÚCacheTestSuitec                 C   sp   d}t  |¡}|  |d d¡ |  |d d¡ |  |d d¡ |  |d d	¡ d
}t  |¡}|  |d d ¡ d S )NzZmemcache://127.0.0.1:11211/?timeout=0&key_prefix=cache_&key_function=foo.get_key&version=1Ú
KEY_PREFIXÚcache_ÚKEY_FUNCTIONzfoo.get_keyÚTIMEOUTr   ÚVERSIONr   z$redis://127.0.0.1:6379/?timeout=None©r	   Úcache_url_configr^   r¦   r?   r?   rR   Útest_base_options_parsing·  s   

z(CacheTestSuite.test_base_options_parsingc                 C   r  )Nr   rÑ   rÒ   rÓ   rÔ   r8  r¦   r?   r?   rR   Útest_memcache_parsingÅ  r   z$CacheTestSuite.test_memcache_parsingc                 C   r  )Nzpymemcache://127.0.0.1:11211rÑ   z1django.core.cache.backends.memcached.PyLibMCCacherÓ   rÔ   r8  r¦   r?   r?   rR   Útest_memcache_pylib_parsingÌ  r   z*CacheTestSuite.test_memcache_pylib_parsingc                 C   s6   d}t  |¡}|  |d d¡ |  |d ddg¡ d S )Nz2memcache://172.19.26.240:11211,172.19.26.242:11212rÑ   rÒ   rÓ   z172.19.26.240:11211z172.19.26.242:11212r8  r¦   r?   r?   rR   Útest_memcache_multiple_parsingÓ  ó   
z-CacheTestSuite.test_memcache_multiple_parsingc                 C   r  )Nzmemcache:///tmp/memcached.sockrÑ   rÒ   rÓ   zunix:/tmp/memcached.sockr8  r¦   r?   r?   rR   Útest_memcache_socket_parsingÚ  r   z+CacheTestSuite.test_memcache_socket_parsingc                 C   r  )Nzdbcache://my_cache_tablerÑ   z+django.core.cache.backends.db.DatabaseCacherÓ   Úmy_cache_tabler8  r¦   r?   r?   rR   Útest_dbcache_parsingá  r   z#CacheTestSuite.test_dbcache_parsingc                 C   r  )Nz!filecache:///var/tmp/django_cacherÑ   ú3django.core.cache.backends.filebased.FileBasedCacherÓ   ú/var/tmp/django_cacher8  r¦   r?   r?   rR   Útest_filecache_parsingè  r   z%CacheTestSuite.test_filecache_parsingc                 C   r  )Nzfilecache://C:/foo/barrÑ   rB  rÓ   z
C:/foo/barr8  r¦   r?   r?   rR   Útest_filecache_windows_parsingï  r   z-CacheTestSuite.test_filecache_windows_parsingc                 C   r  )Nzlocmemcache://rÑ   ú-django.core.cache.backends.locmem.LocMemCacherÓ   r.   r8  r¦   r?   r?   rR   Útest_locmem_parsingö  r   z"CacheTestSuite.test_locmem_parsingc                 C   r  )Nzlocmemcache://unique-snowflakerÑ   rF  rÓ   zunique-snowflaker8  r¦   r?   r?   rR   Útest_locmem_named_parsingý  r   z(CacheTestSuite.test_locmem_named_parsingc                 C   r  )Nzdummycache://rÑ   z+django.core.cache.backends.dummy.DummyCacherÓ   r.   r8  r¦   r?   r?   rR   Útest_dummycache_parsing  r   z&CacheTestSuite.test_dummycache_parsingc                 C   sH   d}t  |¡}|  |d t¡ |  |d d¡ |  |d dddœ¡ d S )	Nr   rÑ   rÓ   rÖ   r×   rØ   rÙ   rÚ   ©r	   r9  r^   r   r¦   r?   r?   rR   Útest_redis_parsing  s   

þz!CacheTestSuite.test_redis_parsingc                 C   r  )Nzrediscache:///path/to/socket:1rÑ   rÕ   rÓ   zunix:///path/to/socket:1r8  r¦   r?   r?   rR   Útest_redis_socket_parsing  ó   
z(CacheTestSuite.test_redis_socket_parsingc                 C   s2   d}t  |¡}|  t|d ¡ |  |d d¡ d S )Nz(rediscache://:redispass@127.0.0.1:6379/0rÑ   rÓ   z#redis://:redispass@127.0.0.1:6379/0rJ  r¦   r?   r?   rR   Ú test_redis_with_password_parsing  rM  z/CacheTestSuite.test_redis_with_password_parsingc                 C   s6   d}t  |¡}|  |d t¡ |  |d g d¢¡ d S )Nz/rediscache://host1:6379,host2:6379,host3:9999/1rÑ   rÓ   )zredis://host1:6379/1zredis://host2:6379/1zredis://host3:9999/1rJ  r¦   r?   r?   rR   Ú!test_redis_multi_location_parsing"  r>  z0CacheTestSuite.test_redis_multi_location_parsingc                 C   sF   d}t  |¡}|  t|d ¡ |  |d d¡ |  |d ddi¡ d S )Nz,redis://:redispass@/path/to/socket.sock?db=0rÑ   rÓ   z&unix://:redispass@/path/to/socket.sockr×   ÚDBr   rJ  r¦   r?   r?   rR   Útest_redis_socket_url-  s   


ÿz$CacheTestSuite.test_redis_socket_urlc                 C   sX   d}t  |¡}|  |d d¡ |  |d d¡ |  |d d¡ |  |d d	d
dœ¡ d S )NzNfilecache:///var/tmp/django_cache?timeout=60&max_entries=1000&cull_frequency=0rÑ   rB  rÓ   rC  r6  é<   r×   iè  r   )ÚMAX_ENTRIESÚCULL_FREQUENCYr8  r¦   r?   r?   rR   Útest_options_parsing6  s   

þz#CacheTestSuite.test_options_parsingc                 C   sN   d}d}t  ||¡}|  |d |¡ |  |d d¡ |  |d ddd	œ¡ d S )
Nz.memcache://127.0.0.1:5400?foo=option&bars=9001rÕ   rÑ   rÓ   z127.0.0.1:5400r×   Úoptioni)#  )ÚFOOÚBARSr8  )r[   r¢   Úbackendr?   r?   rR   Útest_custom_backendB  s   
þz"CacheTestSuite.test_custom_backendN)rd   re   rf   r:  r;  r<  r=  r?  rA  rD  rE  rG  rH  rI  rK  rL  rN  rO  rQ  rU  rZ  r?   r?   r?   rR   r2  µ  s&    	r2  c                   @   sX   e Zd ZdZdZd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S )ÚSearchTestSuitezsolr://127.0.0.1:8983/solrz$elasticsearch://127.0.0.1:9200/indexz"whoosh:///home/search/whoosh_indexz"xapian:///home/search/xapian_indexz
simple:///c                 C   s0   t  | j¡}|  |d d¡ |  |d d¡ d S )Nr®   ú)haystack.backends.solr_backend.SolrEnginerL   zhttp://127.0.0.1:8983/solr)r	   Úsearch_url_configÚsolr_urlr^   r¦   r?   r?   rR   Útest_solr_parsingW  s   z!SearchTestSuite.test_solr_parsingc                 C   sr   d}d}d| j ||f }t |¡}|  |d d¡ |  |d d¡ |  |d |¡ |  d	|v¡ |  d
|v¡ d S )Néh  Ú
solr_indexz%s/%s?TIMEOUT=%sr®   r\  rL   z%http://127.0.0.1:8983/solr/solr_indexr6  Ú
INDEX_NAMErO   )r^  r	   r]  r^   rt   )r[   ÚtimeoutÚindexr¢   r?   r?   rR   Útest_solr_multicore_parsing]  s   
z+SearchTestSuite.test_solr_multicore_parsingc                 C   ó‚   d}d| j |f }t |¡}|  |d d¡ |  d| ¡ v ¡ |  |d d¡ |  d| ¡ v ¡ |  |d |¡ |  d|v¡ d S )	Nr`  z%s?TIMEOUT=%sr®   zAhaystack.backends.elasticsearch_backend.ElasticsearchSearchEnginerb  rd  r6  rO   )Úelasticsearch_urlr	   r]  r^   rt   Úkeys)r[   rc  r¢   r?   r?   rR   Útest_elasticsearch_parsingi  ó   
z*SearchTestSuite.test_elasticsearch_parsingc                 C   sª   d}d}d| j ||f }t |¡}|  |d d¡ |  d| ¡ v ¡ |  |d d¡ |  d| ¡ v ¡ |  |d |¡ |  d	| ¡ v ¡ |  |d	 |¡ |  d
|v¡ d S )NÚfilei   z%s?STORAGE=%s&POST_LIMIT=%sr®   z-haystack.backends.whoosh_backend.WhooshEnginerO   z/home/search/whoosh_indexÚSTORAGEÚ
POST_LIMITrb  )Ú
whoosh_urlr	   r]  r^   rt   rh  )r[   ÚstorageÚ
post_limitr¢   r?   r?   rR   Útest_whoosh_parsingu  s   
z#SearchTestSuite.test_whoosh_parsingc                 C   rf  )	NÚmyflagsz%s?FLAGS=%sr®   z-haystack.backends.xapian_backend.XapianEnginerO   z/home/search/xapian_indexÚFLAGSrb  )Ú
xapian_urlr	   r]  r^   rt   rh  )r[   Úflagsr¢   r?   r?   rR   Útest_xapian_parsing„  rj  z#SearchTestSuite.test_xapian_parsingc                 C   s<   t  | j¡}|  |d d¡ |  d|v¡ |  d|v¡ d S )Nr®   z-haystack.backends.simple_backend.SimpleEnginerb  rO   )r	   r]  Ú
simple_urlr^   rt   r¦   r?   r?   rR   Útest_simple_parsing  s   z#SearchTestSuite.test_simple_parsingc                 C   sÌ   d}d}d}d|||f }| j | j| j| j| jfD ]J}d ||g¡}t |¡}|  d| 	¡ v ¡ |  d|d v ¡ |  d|d v ¡ |  d	| 	¡ v ¡ |  |d	 ¡ |  d
| 	¡ v ¡ |  
|d
 d¡ qd S )Nzmyapp.indexes.A,myapp.indexes.Br   éd   z5EXCLUDED_INDEXES=%s&INCLUDE_SPELLING=%s&BATCH_SIZE=%sú?ÚEXCLUDED_INDEXESzmyapp.indexes.Azmyapp.indexes.BÚINCLUDE_SPELLINGÚ
BATCH_SIZE)r^  rg  rn  rt  rw  Újoinr	   r]  rt   rh  r^   )r[   Úexcluded_indexesÚinclude_spellingÚ
batch_sizeÚparamsr¢   r?   r?   rR   Útest_common_args_parsing—  s0   ýû
ðz(SearchTestSuite.test_common_args_parsingN)rd   re   rf   r^  rg  rn  rt  rw  r_  re  ri  rq  rv  rx  rƒ  r?   r?   r?   rR   r[  O  s    r[  c                   @   r  )Ú
EmailTestsc                 C   r  )Nr   rà   rá   râ   rã   rä   rÀ   rå   ræ   rç   rè   ré   T)r	   Úemail_url_configr^   r¦   r?   r?   rR   Útest_smtp_parsingµ  r  zEmailTests.test_smtp_parsingN)rd   re   rf   r†  r?   r?   r?   rR   r„  ³  r	  r„  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	PathTestsc                 C   sŠ   t tddd}tj tj tj t¡d¡¡}|  |ƒ |¡ |  |j|¡ | d¡}|  |ƒ tj |d¡¡ |  |dƒtj |dd¡¡ d S )Nz..Tr÷   z../ÚpublicÚcss)	r
   rú   rU   rî   Úabspathr~  Údirnamer^   rü   )r[   rï   Ú	root_pathÚwebr?   r?   rR   Útest_path_classÃ  s   
 zPathTests.test_path_classc                 C   s,   | j ttddd | j tttƒddd d S )Nz/not/existing/path/T)ÚrequiredÚnot_existing_path)rq   r   r
   rú   rZ   r?   r?   rR   Útest_required_pathÎ  s   zPathTests.test_required_pathc                 C   sf  |   tdƒtdƒv ¡ |   tdƒtdƒv¡ |   tdƒtdƒk¡ |   tdƒtdƒk¡ |  tdƒ d¡ttdƒƒ d¡¡ |  tdƒ d¡ttdƒƒ d¡¡ |  tdƒd ttdƒƒd ¡ |  tdƒ ¡ ttdƒƒ¡ |  tdƒ tdƒ¡ |  tdƒd tdƒ¡ |  tdƒd	 td	ƒ¡ |  td
ƒd tdƒ¡ |  td
ƒd tdƒ¡ |  tdd„ ¡ d S )Nz/homeú/z
/other/dirr   z
/home/foo/z	/home/foor   Úhomez/home/publicz/home/dev/publicr   rˆ  c                 S   s   t dƒd S )Nz
/home/dev/znot int)r
   )Ú_r?   r?   rR   Ú<lambda>æ  s    z+PathTests.test_comparison.<locals>.<lambda>)	rt   r
   r^   Úrfindrx   ÚfindÚ
__fspath__rq   Ú	TypeErrorrZ   r?   r?   rR   Útest_comparisonÓ  s   $$ zPathTests.test_comparisonN)rd   re   rf   rŽ  r‘  rš  r?   r?   r?   rR   r‡  Á  s    r‡  c               	   C   s<   t  ¡ } tttttttt	t
g	}|D ]
}|  t  |¡¡ q| S rT   )ÚunittestÚ	TestSuiteri   rö   r   r  r‡  r
  r2  r„  r[  ÚaddTestÚ	makeSuite)Ú
test_suiteÚcasesÚcaser?   r?   rR   Ú
load_suiteé  s   
þr¢  Ú__main__z-oz{0}={1})'Ú
__future__r   rU   Úsysr›  r#  Úcompatr   r   r   r   r   rV   r	   r
   ÚTestCaser   ri   rö   r   r  r
  r2  r[  r„  r‡  r¢  rd   ÚargvrS   ÚitemsÚkeyr™   ÚprintÚformatÚexitÚ
IndexErrorÚTextTestRunnerÚrunr?   r?   r?   rR   Ú<module>   s@    C G	u d(€ÿö