ó
¦xxTc           @   si   d  d l  Z  d  d l Z d  d l Z d e j f d „  ƒ  YZ d „  Z d „  Z e d k re e ƒ  n  d S(   iÿÿÿÿNt   RegressionTestsc           B   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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j d ƒ |  _ d  S(   Ns   :memory:(   t   sqlitet   connectt   con(   t   self(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   setUp   s    c         C   s   |  j  j ƒ  d  S(   N(   R   t   close(   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   tearDown    s    c         C   s    |  j  j ƒ  } | j d ƒ d  S(   Ns   pragma user_version(   R   t   cursort   execute(   R   t   cur(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckPragmaUserVersion#   s    c         C   sT   t  j d d t  j ƒ} z  |  j j ƒ  } | j d ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Ns   :memory:t   detect_typess   pragma schema_version(   R   R   t   PARSE_COLNAMESR   R   R	   R   (   R   R   R
   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckPragmaSchemaVersion(   s    
c         C   sÐ   t  j d d d ƒ} g  t d ƒ D] } | j ƒ  ^ q" } | d j d ƒ xD t d ƒ D]6 } | d j d g  t d ƒ D] } | f ^ qx ƒ qX Wx- t d ƒ D] } | | j d | d	 ƒ qŸ W| j ƒ  d  S(
   Ns   :memory:t   cached_statementsi   i    s   create table test(x)i
   s   insert into test(x) values (?)t    s   select x from test(   R   R   t   xrangeR   R	   t   ranget   executemanyt   rollback(   R   R   t   xt   cursorst   i(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckStatementReset2   s    %4c         C   sc   |  j  j ƒ  } | j d ƒ |  j | j d d d ƒ | j d ƒ |  j | j d d d ƒ d  S(   Ns    select 1 as "foo bar [datetime]"i    s   foo bars   select 1 as "foo baz"s   foo baz(   R   R   R	   t   assertEqualt   description(   R   R
   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckColumnNameWithSpacesA   s
    c         C   sj   t  j d ƒ } g  } xD t d ƒ D]6 } | j ƒ  } | j | ƒ | j d t | ƒ ƒ q" W| j ƒ  d  S(   Ns   :memory:ii   s   select 1 x union select (   R   R   R   R   t   appendR	   t   strR   (   R   R   R   R   R
   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt#   CheckStatementFinalizationOnCloseDbI   s    c         C   s§   t  j d k  r d  St  j d ƒ } | j d ƒ | j d ƒ y | j d ƒ Wn t  j k
 rc n X| j d ƒ y | j ƒ  Wn! t  j k
 r¢ |  j d ƒ n Xd  S(	   Ni   i   s   :memory:s3   create table foo(x, unique(x) on conflict rollback)s   insert into foo(x) values (1)s   insert into foo(x) values (2)s1   pysqlite knew nothing about the implicit ROLLBACK(   i   i   i   (   R   t   sqlite_version_infoR   R	   t   DatabaseErrort   committ   OperationalErrort   fail(   R   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckOnConflictRollbackW   s    c         C   s4   |  j  j d ƒ |  j  j d ƒ |  j  j d ƒ d S(   sm   
        pysqlite would crash with older SQLite versions unless
        a workaround is implemented.
        s   create table foo(bar)s   drop table fooN(   R   R	   (   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt-   CheckWorkaroundForBuggySqliteTransferBindingsg   s    c         C   s   |  j  j d ƒ d S(   s   
        pysqlite used to segfault with SQLite versions 3.5.x. These return NULL
        for "no-operation" statements
        t    N(   R   R	   (   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckEmptyStatementp   s    c         C   s   t  j d ƒ } | j ƒ  d S(   s	  
        With pysqlite 2.4.0 you needed to use a string or a APSW connection
        object for opening database connections.

        Formerly, both bytestrings and unicode strings used to work.

        Let's make sure unicode strings work in the future.
        u   :memory:N(   R   R   R   (   R   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckUnicodeConnectw   s    	c         C   sŒ   d } t  j d d t  j ƒ} | j d ƒ | j d t j j ƒ  f ƒ | j | ƒ | j d ƒ | j d ƒ | j d ƒ | j | ƒ d	 S(
   s�   
        pysqlite until 2.4.1 did not rebuild the row_cast_map when recompiling
        a statement. This test exhibits the problem.
        s   select * from foos   :memory:R   s   create table foo(bar timestamp)s   insert into foo(bar) values (?)s   drop table foos   create table foo(bar integer)s   insert into foo(bar) values (5)N(   R   R   t   PARSE_DECLTYPESR	   t   datetimet   now(   R   t   SELECTR   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckTypeMapUsageƒ   s    c         C   s   |  j  t t j i  d ƒ d S(   s!   
        See issue 3312.
        N(   t   assertRaisest	   TypeErrorR   t   register_adaptert   None(   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckRegisterAdapter’   s    c         C   s,   t  j d ƒ } |  j t t | d d ƒ d S(   s!   
        See issue 3312.
        s   :memory:t   isolation_levelu   Ã©N(   R   R   R.   t   UnicodeEncodeErrort   setattr(   R   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckSetIsolationLevel˜   s    c         C   s†   d t  j f d „  ƒ  Y} t  j d ƒ } | | ƒ } y$ | j d ƒ j ƒ  |  j d ƒ Wn' t  j k
 rn n |  j d ƒ n Xd S(   sd   
        Verifies that cursor methods check whether base class __init__ was
        called.
        t   Cursorc           B   s   e  Z d  „  Z RS(   c         S   s   d  S(   N(    (   R   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   __init__¦   s    (   t   __name__t
   __module__R8   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyR7   ¥   s   s   :memory:s
   select 4+5s#   should have raised ProgrammingErrorN(   R   R7   R   R	   t   fetchallR#   t   ProgrammingError(   R   R7   R   R
   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckCursorConstructorCallCheck    s    c         C   sp   d t  j f d „  ƒ  Y} | d ƒ } y | j ƒ  } |  j d ƒ Wn' t  j k
 rX n |  j d ƒ n Xd S(   sh   
        Verifies that connection methods check whether base class __init__ was
        called.
        t
   Connectionc           B   s   e  Z d  „  Z RS(   c         S   s   d  S(   N(    (   R   t   name(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyR8   ¹   s    (   R9   R:   R8   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyR>   ¸   s   s   :memory:s#   should have raised ProgrammingErrorN(   R   R>   R   R#   R<   (   R   R>   R   R
   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt#   CheckConnectionConstructorCallCheck³   s    c            sÖ   d t  j f ‡  f d †  ƒ  Y} d t  j f d „  ƒ  Y‰  | d ƒ } | j ƒ  } | j d ƒ | j d d d d g ƒ | j d ƒ | j ƒ  y | j ƒ  |  j d ƒ Wn' t  j	 k
 r¾ n |  j d ƒ n Xd S(   sœ   
        Verifies that subclassed cursor classes are correctly registered with
        the connection object, too.  (fetch-across-rollback problem)
        R>   c              s   e  Z ‡  f d  †  Z RS(   c            s
   ˆ  |  ƒ S(   N(    (   R   (   R7   (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyR   Ë   s    (   R9   R:   R   (    (   R7   (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyR>   Ê   s   R7   c           B   s   e  Z d  „  Z RS(   c         S   s   t  j j |  | ƒ d  S(   N(   R   R7   R8   (   R   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyR8   Ï   s    (   R9   R:   R8   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyR7   Î   s   s   :memory:s   create table foo(x)s   insert into foo(x) values (?)i   i   i   s   select x from foos!   should have raised InterfaceErrorN(   i   (   i   (   i   (
   R   R>   R7   R   R	   R   R   R;   R#   t   InterfaceError(   R   R>   R   R
   (    (   R7   sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckCursorRegistrationÅ   s    

c         C   s   t  j d d d ƒ} d S(   s§   
        Verifies that creating a connection in autocommit mode works.
        2.5.3 introduced a regression so that these could no longer
        be created.
        s   :memory:R3   N(   R   R   R1   (   R   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckAutoCommità   s    c         C   sF   |  j  j ƒ  } | j d ƒ | j d ƒ | j d ƒ | j ƒ  } d S(   s‡   
        Verifies that running a PRAGMA statement that does an autocommit does
        work. This did not work in 2.5.3/2.5.4.
        s   create table foo(bar)s   insert into foo(bar) values (5)s   pragma page_sizeN(   R   R   R	   t   fetchone(   R   R
   t   row(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckPragmaAutocommitè   s
    c         C   s„   d d d „  ƒ  Y} | ƒ  } |  j  t |  j j | ƒ |  j  t |  j j | ƒ |  j  t |  j j | ƒ |  j  t |  j j | ƒ d S(   sÎ   
        See http://bugs.python.org/issue7478

        It was possible to successfully register callbacks that could not be
        hashed. Return codes of PyDict_SetItem were not checked properly.
        t   NotHashablec           B   s   e  Z d  „  Z d „  Z RS(   c         _   s   d  S(   N(    (   R   t   argst   kw(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   __call__ü   s    c         S   s   t  ƒ  ‚ d  S(   N(   R/   (   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   __hash__þ   s    (   R9   R:   RJ   RK   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyRG   û   s   	N(    (   R.   R/   R   t   create_functiont   create_aggregatet   set_authorizert   set_progress_handler(   R   RG   t   var(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckSetDictô   s    	c         C   s   |  j  t j |  j d ƒ d S(   s}   
        Call a connection with a non-string SQL request: check error handling
        of the statement constructor.
        i   N(   R.   R   t   WarningR   (   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckConnectionCall  s    c            s~   t  j d ƒ } | j ƒ  ‰  ˆ  j d ƒ ˆ  j d ƒ ‡  f d †  } |  j t  j ƒ �" ˆ  j d d „  | ƒ  Dƒ ƒ Wd QXd S(   sÝ   
        http://bugs.python.org/issue10811

        Recursively using a cursor, such as when reusing it from a generator led to segfaults.
        Now we catch recursive cursor usage and raise a ProgrammingError.
        s   :memory:s   create table a (bar)s   create table b (baz)c           3   s   ˆ  j  d d ƒ d Vd  S(   Ns   insert into a (bar) values (?)i   (   i   (   R	   (    (   R
   (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   foo  s    s   insert into b (baz) values (?)c         s   s   |  ] } | f Vq d  S(   N(    (   t   .0R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pys	   <genexpr>   s    N(   R   R   R   R	   R.   R<   R   (   R   R   RT   (    (   R
   sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckRecursiveCursorUse  s    	c         C   sË   t  j d d t  j ƒ} | j ƒ  } | j d ƒ | j d ƒ | j d ƒ | j d ƒ g  | j ƒ  D] } | d ^ qe } |  j | t j d d	 d	 d
 d d d ƒ t j d d	 d	 d
 d d d ƒ g ƒ d S(   sË   
        http://bugs.python.org/issue14720

        The microsecond parsing of convert_timestamp() should pad with zeros,
        since the microsecond string "456" actually represents "456000".
        s   :memory:R   s   CREATE TABLE t (x TIMESTAMP)s4   INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.456')s:   INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.123456789')s   SELECT * FROM ti    iÜ  i   i   i   i@õ i@â N(   R   R   R)   R   R	   R;   R   R*   (   R   R   R
   R   t   values(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt'   CheckConvertTimestampMicrosecondPadding"  s    #	c         C   s    |  j  t t j d d d ƒd  S(   Ns   :memory:R3   i{   (   R.   R/   R   R   (   R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   CheckInvalidIsolationLevelType<  s    	(   R9   R:   R   R   R   R   R   R   R   R$   R%   R'   R(   R-   R2   R6   R=   R@   RB   RC   RF   RQ   RS   RV   RX   RY   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyR       s0   				
																				c          C   s"   t  j t d ƒ }  t  j |  f ƒ S(   Nt   Check(   t   unittestt	   makeSuiteR    t	   TestSuite(   t   regression_suite(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   suiteB  s    c          C   s    t  j ƒ  }  |  j t ƒ  ƒ d  S(   N(   R[   t   TextTestRunnert   runR_   (   t   runner(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   testF  s    t   __main__(	   R*   R[   t   sqlite3R   t   TestCaseR    R_   Rc   R9   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/sqlite3/test/regression.pyt   <module>   s   ÿ '		