
xR\-                 @   s   d  d l  Z  d  d l Z d  d l m Z d d l m Z m Z m Z m Z m	 Z	 m
 Z
 m Z d  d l Z Gd d   d e j  Z Gd d   d e  Z Gd	 d
   d
 e j  Z Gd d   d e j  Z d d   Z e d k r e j   n  d S)    N)Popen   )unittestskip_before_pythonskip_before_postgresConnectingTestCaseskip_copy_if_greenscript_to_py3slowc               @   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 S)ConnectTestCasec                s:   d    _  d  d   f d d  } t j   _ | t _ d  S)NFc                s   |  | | f   _  d  S)N)args)dsnconnection_factoryasync_)self O/var/www/dbchiro/venv/lib/python3.4/site-packages/psycopg2/tests/test_module.pyconnect_stub'   s    z+ConnectTestCase.setUp.<locals>.connect_stub)r   psycopg2_connect_connect_orig)r   r   r   )r   r   setUp$   s    	zConnectTestCase.setUpc             C   s   |  j  t _ d  S)N)r   r   r   )r   r   r   r   tearDown-   s    zConnectTestCase.tearDownc             C   sR   |  j  t t j  |  j  t t j d d d d  |  j  t t j d d d  S)Nr   Fc             S   s   d  S)Nr   )r   r   r   r   r   <lambda>3   s    z@ConnectTestCase.test_there_has_to_be_something.<locals>.<lambda>r   T)assertRaises	TypeErrorr   connect)r   r   r   r   test_there_has_to_be_something0   s
    z.ConnectTestCase.test_there_has_to_be_somethingc             C   sV   t  j d  |  j |  j d d  |  j |  j d d   |  j |  j d d  d  S)N r   r      F)r   r   assertEqualr   )r   r   r   r   test_no_keywords7   s    z ConnectTestCase.test_no_keywordsc             C   sV   t  j d  |  j |  j d d  |  j |  j d d   |  j |  j d d  d  S)Nzdbname=blah host=yr   r   r   F)r   r   r    r   )r   r   r   r   test_dsn=   s    zConnectTestCase.test_dsnc          	   C   st  t  j d d  |  j |  j d d  t  j d d  |  j |  j d d  t  j d d	  |  j |  j d d
  t  j d d  |  j |  j d d  t  j d d  |  j |  j d d  t  j d d d d d d	 d d  |  j d |  j d k  |  j d |  j d k  |  j d
 |  j d k  |  j d |  j d k  |  j t |  j d j    d  d  S)Ndatabasefoor   z
dbname=foouserpostgreszuser=postgrespasswordZsecretzpassword=secretporti8  z	port=5432Zsslmoderequirezsslmode=require   )r   r   r    r   
assertTruelensplit)r   r   r   r   test_supported_keywordsC   s"    z'ConnectTestCase.test_supported_keywordsc             C   s+   t  j d d  |  j |  j d d  d  S)Noptionsstuffr   zoptions=stuff)r   r   r    r   )r   r   r   r   test_generic_keywordsW   s    z%ConnectTestCase.test_generic_keywordsc             C   s   d d d  } t  j d d d d d |  |  j |  j d	 d
  |  j |  j d |  |  j |  j d d  t  j d
 d | |  j |  j d	 d
  |  j |  j d |  |  j |  j d d  d  S)NFc             S   s   d  S)Nr   )r   r   r   r   r   f\   s    z'ConnectTestCase.test_factory.<locals>.fr#   r$   hostbazr   r   zdbname=foo host=bazr   r   )r   r   assertDsnEqualr   r    )r   r2   r   r   r   test_factory[   s    zConnectTestCase.test_factoryc             C   s   t  j d d d d d d  |  j |  j d d  |  j |  j d d   |  j |  j d	  t  j d d d
 |  j |  j d d  |  j |  j d d   |  j |  j d	  d  S)Nr#   r$   r3   r4   r   r   r   zdbname=foo host=bazr   T)r   r   r5   r   r    r+   )r   r   r   r   
test_asynci   s    zConnectTestCase.test_asyncc             C   sW   t  j d d d d  d |  j d } |  j d | k |  |  j d | k |  d  S)	Nr#   sonyr(   i  z %s r   z dbname=sony z port=6543 )r   r   r   r+   )r   r   r   r   r   test_int_port_paramt   s    z#ConnectTestCase.test_int_port_paramc             C   s1   t  j d d d d  |  j |  j d d  d  S)Nr#   r8   r'   r   r   zdbname=sony password='')r   r   r5   r   )r   r   r   r   test_empty_paramz   s    z ConnectTestCase.test_empty_paramc             C   s   t  j d d  |  j |  j d d  t  j d d  |  j |  j d d  t  j d d  |  j |  j d d  t  j d d	  |  j |  j d d
  t  j d d  |  j |  j d d  d  S)Nr#   zhello worldr   zdbname='hello world'z
back\slashzdbname=back\\slashzquo'tezdbname=quo\'tezwith	tabzdbname='with	tab'z\every thing'zdbname='\\every thing\'')r   r   r    r   )r   r   r   r   test_escape~   s    zConnectTestCase.test_escapec             C   sX   t  j d d d |  j |  j d d  t  j d d d |  j |  j d d  d  S)	Nz
dbname=foor#   Zbarr   z
dbname=barr%   r&   zdbname=foo user=postgres)r   r   r    r   r5   )r   r   r   r   test_params_merging   s    z#ConnectTestCase.test_params_mergingN)__name__
__module____qualname__r   r   r   r!   r"   r.   r1   r6   r7   r9   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 e d	 d
    Z d d   Z	 d d   Z
 e d d  d d    Z e d d  d d    Z e d d  d d    Z d S)ExceptionsTestCasec             C   s   |  j  j   } y | j d  Wn. t j k
 rP } z | } WYd  d  } ~ Xn X|  j | j d  |  j | j  |  j | j | k  d  S)Nzselect * from nonexist42P01)	conncursorexecuter   Errorr    pgcoder+   pgerror)r   curexcer   r   r   test_attributes   s    z"ExceptionsTestCase.test_attributesc             C   s   |  j  j   } y | j d  Wn. t j k
 rP } z | } WYd  d  } ~ Xn X| j } |  j t | t j j	   xu d d d d d d d d	 d
 d d d d d d d d g D]: } t
 | |  } | d  k	 r |  j t | t   q q Wd  S)Nzselect * from nonexistcolumn_nameconstraint_namecontextdatatype_nameZinternal_positionZinternal_queryZmessage_detailZmessage_hintZmessage_primaryschema_nameseverityZsource_fileZsource_functionZsource_linesqlstateZstatement_position
table_name)rB   rC   rD   r   rE   diagr+   
isinstance
extensionsZDiagnosticsgetattrstr)r   rH   rI   rJ   rT   attrvr   r   r   test_diagnostics_attributes   s     		z.ExceptionsTestCase.test_diagnostics_attributesc             C   s   |  j  j   } y | j d  Wn. t j k
 rP } z | } WYd  d  } ~ Xn X|  j | j j d  |  j | j j d  d  S)Nzselect * from nonexistrA   ERROR)	rB   rC   rD   r   rE   r    rT   rR   rQ   )r   rH   rI   rJ   r   r   r   test_diagnostics_values   s    z*ExceptionsTestCase.test_diagnostics_valuesc                s   d d  l  } d d l m }   f d d   } |   \ } } | j } | |  } ~ ~ | j   |   d  k	 sw t    j | j d  ~ | j   | j   |   d  k s t  d  S)Nr   )refc                 sY     j  j   }  y |  j d  Wn2 t j k
 rT } z |  | f SWYd  d  } ~ Xn Xd  S)Nzselect * from nonexist)rB   rC   rD   r   rE   )rH   rI   )r   r   r   tmp   s
    z5ExceptionsTestCase.test_diagnostics_life.<locals>.tmprA   )gcweakrefr^   rT   ZcollectAssertionErrorr    rR   )r   r`   r^   r_   rH   rJ   rT   wr   )r   r   test_diagnostics_life   s    	


z(ExceptionsTestCase.test_diagnostics_lifec             C   s   d d l  m } |   } |  j j   } y | j | d  Wn1 t j k
 ro } z | j } WYd  d  } ~ Xn X|  j | j	 d  d  S)Nr   )StringIOZnonexistrA   )
iore   rB   rC   Zcopy_tor   rE   rT   r    rR   )r   re   r2   rH   rI   rT   r   r   r   test_diagnostics_copy   s    	z(ExceptionsTestCase.test_diagnostics_copyc             C   s   |  j  j   } y | j d  Wn. t k
 rP } z | j } WYd  d  } ~ Xn X|  j  j   y | j d  Wn1 t j k
 r } z | j } WYd  d  } ~ Xn X|  j | j	 d  |  j | j	 d  d  S)Nz)l'acqua e' poca e 'a papera nun galleggiaz'select level from water where ducks > 1Z42601rA   )
rB   rC   rD   	ExceptionrT   Zrollbackr   rE   r    rR   )r   rH   rI   Zdiag1Zdiag2r   r   r   test_diagnostics_independent   s    z/ExceptionsTestCase.test_diagnostics_independentc             C   s   |  j  j   } | j d  | j d  y |  j  j   Wn. t j k
 rj } z | } WYd  d  } ~ Xn X|  j | j j d  d  S)Nz
            create temp table test_deferred (
               data int primary key,
               ref int references test_deferred (data)
                   deferrable initially deferred)
        z&insert into test_deferred values (1,2)Z23503)	rB   rC   rD   Zcommitr   rE   r    rT   rR   )r   rH   rI   rJ   r   r   r   test_diagnostics_from_commit   s    z/ExceptionsTestCase.test_diagnostics_from_commit	      c             C   s   |  j  j   } | j d  y | j d  Wn. t j k
 r] } z | } WYd  d  } ~ Xn X|  j | j d  |  j | j j d  d  d  |  j | j j	 d  |  j | j j
 d   |  j | j j d  |  j | j j d   d  S)Nzt
            create temp table test_exc (
                data int constraint chk_eq1 check (data = 1)
            )zinsert into test_exc values(2)Z23514   Zpg_tempZtest_excZchk_eq1)rB   rC   rD   r   rE   r    rF   rT   rP   rS   rL   rM   rO   )r   rH   rI   rJ   r   r   r   test_9_3_diagnostics  s     z'ExceptionsTestCase.test_9_3_diagnosticsr      c             C   s   d d  l  } |  j j   } y | j d  Wn. t j k
 r\ } z | } WYd  d  } ~ Xn X| j | j |   } |  j | j	 | j	  |  j | j
 | j
  |  j | j d  k  d  S)Nr   zselect * from nonexist)picklerB   rC   rD   r   rE   loadsdumpsr    rG   rF   r+   )r   rp   rH   rI   rJ   e1r   r   r   test_pickle  s    zExceptionsTestCase.test_picklec             C   s   d d  l  } y t j d  Wn. t j k
 rM } z | } WYd  d  } ~ Xn X| j | j |   } |  j | j | j  |  j | j | j  |  j	 | j
 d  k  d  S)Nr   zdbname=nosuchdatabasemate)rp   r   r   rE   rq   rr   r    rG   rF   r+   rC   )r   rp   rI   rJ   rs   r   r   r   test_pickle_connection_error&  s    z/ExceptionsTestCase.test_pickle_connection_errorN)r=   r>   r?   rK   r[   r]   rd   r   rg   ri   rj   r   rn   r   rt   ru   r   r   r   r   r@      s   
r@   c               @   s"   e  Z d  Z e d d    Z d S)TestExtensionModulec             C   s   t  j j t j  } t  j j |  } |  j | t j k  d | | f } t t j d t	 |  g  } | j
   |  j d | j  d  S)NzG
import sys
sys.path.remove(%r)
sys.path.insert(0, %r)
import _psycopg
z-cr   )ospathdirnamer   __file__r+   sysr   
executabler	   communicater    
returncode)r   pkgdirpardirscriptprocr   r   r   test_import_internal7  s    
z(TestExtensionModule.test_import_internalN)r=   r>   r?   r
   r   r   r   r   r   rv   6  s   rv   c               @   s   e  Z d  Z d d   Z d S)TestVersionDiscoveryc             C   st   |  j  t t j  t k  y& |  j  t t j j    t k  Wn+ t j k
 ro |  j  t j d k   Yn Xd  S)Ni_ )r+   typer   Z__libpq_version__intrV   Zlibpq_versionZNotSupportedError)r   r   r   r   test_libpq_versionM  s
    &z'TestVersionDiscovery.test_libpq_versionN)r=   r>   r?   r   r   r   r   r   r   L  s   r   c               C   s   t  j   j t  S)N)r   Z
TestLoaderZloadTestsFromNamer=   r   r   r   r   
test_suiteU  s    r   __main__)rw   r{   
subprocessr   Z	testutilsr   r   r   r   r   r	   r
   r   ZTestCaser   r@   rv   r   r   r=   mainr   r   r   r   <module>   s   4s	