
    4hh                         S r SSKrSSKrSSKJr  SSKJrJr  SSK	J
r
  SSKJrJrJr   " S S\R                  5      r " S	 S
\R                  \
5      r\S:X  a  \R                  " 5         gg)zsqlite3 CLI tests.    N)main)TESTFNunlink)ExtraAssertions)captured_stdoutcaptured_stderrcaptured_stdinc                   R    \ rS rSrSS.S jrS rS rS rS rS	 r	S
 r
S rS rSrg)CommandLineInterface   T)expect_successc                p   [        5        n[        5        nU R                  [        5       n[	        U5        S S S 5        S S S 5        S S S 5        WR                  5       WR                  5       WR                  R                  4$ ! , (       d  f       NS= f! , (       d  f       N\= f! , (       d  f       Ne= f)N)r   r   assertRaises
SystemExitcligetvalue	exceptioncode)selfr   argsouterrcms         C/opt/python-3.13.8/usr/lib/python3.13/test/test_sqlite3/test_cli.py_do_testCommandLineInterface._do_test   sx    j)RI *  
 ||~s||~r||/@/@@@ *)  s8   B'BBB B'
BB
B$	 B''
B5c           	          U R                   " U6 u  p#nU R                  USSR                  SU< 3X#/5      5        U R                  US5        U$ )Nr   
Unexpected failure: args= )r   assertEqualjoinr   r   r   r   r   s        r   r   #CommandLineInterface.expect_success   sU    -$q&@4'$BC#MN	Pb!
    c           	          U R                   " USS06u  p#nU R                  USSR                  SU< 3X#/5      5        U R                  US5        U$ )Nr   Fr   r   r   r    )r   assertNotEqualr"   r!   r#   s        r   expect_failure#CommandLineInterface.expect_failure   sZ    CUC$D! II)CdW'Es&PQ	Sb!
r%   c                 J    U R                  S5      nU R                  SU5        g )Nz-hzusage: python -m sqlite3r   assertInr   r   s     r   test_cli_help"CommandLineInterface.test_cli_help$   s!    !!$'0#6r%   c                 f    U R                  S5      nU R                  [        R                  U5        g )Nz-v)r   r,   sqlite3sqlite_versionr-   s     r   test_cli_version%CommandLineInterface.test_cli_version(   s&    !!$'g,,c2r%   c                 L    U R                  SS5      nU R                  SU5        g )N:memory:zselect 1z(1,)r+   r-   s     r   test_cli_execute_sql)CommandLineInterface.test_cli_execute_sql,   s"    !!*j9fc"r%   c                 N    U R                  SS5      nSnU R                  X!5        g )Nr6   zselect 1; select 2z>ProgrammingError: You can only execute one statement at a timer(   r,   )r   stderrr   s      r   test_cli_execute_too_much_sql2CommandLineInterface.test_cli_execute_too_much_sql0   s&    $$Z1EFNc"r%   c                 L    U R                  SS5      nU R                  SU5        g )Nr6   selOperationalError (SQLITE_ERROR)r:   )r   r;   s     r   test_cli_execute_incomplete_sql4CommandLineInterface.test_cli_execute_incomplete_sql5   s#    $$Z77@r%   c                     U R                  [        [        5        U R                  [        S5      nU R	                  US5        U R                  [        S5      nU R                  SU5        g )Nzcreate table t(t)r    zselect count(t) from tz(0,))
addCleanupr   r   r   r!   r,   r-   s     r   test_cli_on_disk_db(CommandLineInterface.test_cli_on_disk_db9   sT    '!!&*=>b!!!&*BCfc"r%    N)__name__
__module____qualname____firstlineno__r   r   r(   r.   r3   r7   r<   rA   rE   __static_attributes__rG   r%   r   r   r      s4    -1 A73##
A#r%   r   c                   v    \ rS rSrSrSrSrSS.S jrS rS	 r	S
 r
S rS rS rS rS rS rS rS rS rSrg)InteractiveSessionA   z+Connected to a transient in-memory databasezsqlite> z... rG   commandsc          
      R   [        5        n[        5        n[        5        nU R                  [        5       nU H  nUR                  US-   5        M     UR                  S5        [        U5        S S S 5        S S S 5        S S S 5        S S S 5        WR                  5       nWR                  5       n	U R                  WR                  R                  SSU< SU SU	 35        X4$ ! , (       d  f       Nz= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nr   r   r   )r	   r   r   r   r   writeseekr   r   r!   r   r   )
r   rQ   r   stdinstdoutr;   r   cmdr   r   s
             r   run_cliInteractiveSession.run_cliF   s    j)RC$J'  JJqMI *    oooo**A5wbRuE	Gx *)   sP   DDC6:C%	1C69DD%
C3/C66
D D
D	D
D&c                    U R                  5       u  pU R                  U R                  U5        U R                  U R                  U5        U R                  UR	                  U R
                  5      5        U R                  UR                  U R
                  5      S5        U R                  UR                  U R                  5      S5        g )N   r   	rX   r,   MEMORY_DB_MSG
assertTrueendswithPS1r!   countPS2r   r   r   s      r   test_interact InteractiveSession.test_interactX   s    <<>d((#.d((#.TXX./488,a0488,a0r%   c                 ^   U R                  SS9u  pU R                  U R                  U5        U R                  UR	                  U R
                  5      5        U R                  UR                  U R
                  5      S5        U R                  UR                  U R                  5      S5        g )N)z.quitrP   r[   r   r\   rc   s      r   test_interact_quit%InteractiveSession.test_interact_quit`   s{    <<<4d((#.TXX./488,a0488,a0r%   c                    U R                  SS9u  pU R                  U R                  U5        U R                  [        R                  S-   U5        U R                  UR                  U R                  5      5        U R                  UR                  U R                  5      S5        U R                  UR                  U R                  5      S5        U R                  [        R                  U5        g )N)z.versionrP   r      r   )rX   r,   r]   r1   r2   r^   r_   r`   r!   ra   rb   rc   s      r   test_interact_version(InteractiveSession.test_interact_versiong   s    <<<7d((#.g,,t3S9TXX./488,a0488,a0g,,c2r%   c                 @   U R                  SS9u  pU R                  U R                  U5        U R                  XR                  5        U R                  UR                  U R                  5      S5        U R                  UR                  U R                  5      S5        g )N)r     rP      r   rX   r,   r]   assertEndsWithr`   r!   ra   rb   rc   s      r   test_interact_empty_source-InteractiveSession.test_interact_empty_sourcep   st    <<<3d((#.C*488,a0488,a0r%   c                    U R                  SS9u  pU R                  U R                  U5        U R                  XR                  5        U R                  UR                  U R                  5      S5        U R                  UR                  U R                  5      S5        U R                  SU5        U R                  SU5        g )N)z.unknown_commandrP   rj   r   Errorunknown_commandrp   rc   s      r   "test_interact_dot_commands_unknown5InteractiveSession.test_interact_dot_commands_unknownw   s    <<)?<@d((#.C*488,a0488,a0gs#'-r%   c                 @   U R                  SS9u  pU R                  U R                  U5        U R                  XR                  5        U R                  UR                  U R                  5      S5        U R                  UR                  U R                  5      S5        g )N.rP   rj   r   rp   rc   s      r    test_interact_dot_commands_empty3InteractiveSession.test_interact_dot_commands_empty   st    <<#</d((#.C*488,a0488,a0r%   c                    U R                  SS9u  pU R                  U R                  U5        U R                  UR	                  [
        R                  S-   5      S5        U R                  XR                  5        U R                  UR	                  U R                  5      S5        U R                  UR	                  U R                  5      S5        g )N)z	.version z	. versionrP   r   rj   ro   r   )
rX   r,   r]   r!   ra   r1   r2   rq   r`   rb   rc   s      r   +test_interact_dot_commands_with_whitespaces>InteractiveSession.test_interact_dot_commands_with_whitespaces   s    <<)C<Dd((#.7#9#9D#@A1EC*488,a0488,a0r%   c                    U R                  SS9u  pU R                  U R                  U5        U R                  SU5        U R                  UR	                  U R
                  5      5        U R                  UR                  U R
                  5      S5        U R                  UR                  U R                  5      S5        g )N)z	SELECT 1;rP   (1,)
rj   r   r\   rc   s      r   test_interact_valid_sql*InteractiveSession.test_interact_valid_sql   s    <<<8d((#.h$TXX./488,a0488,a0r%   c                 ^   U R                  SS9u  pU R                  U R                  U5        U R                  UR	                  U R
                  5      5        U R                  UR                  U R                  5      S5        U R                  UR                  U R
                  5      S5        g )N)zSELECT 1rP   r[   )	rX   r,   r]   r^   r_   rb   r!   ra   r`   rc   s      r   &test_interact_incomplete_multiline_sql9InteractiveSession.test_interact_incomplete_multiline_sql   s{    <<<7d((#.TXX./488,a0488,a0r%   c                    U R                  SS9u  pU R                  U R                  U5        U R                  U R                  U5        U R                  SU5        U R	                  UR                  U R                  5      5        U R                  UR                  U R                  5      S5        U R                  UR                  U R                  5      S5        g )N)z
SELECT 1
;rP   r   rj   r[   )	rX   r,   r]   rb   r^   r_   r`   r!   ra   rc   s      r   !test_interact_valid_multiline_sql4InteractiveSession.test_interact_valid_multiline_sql   s    <<)9<:d((#.dhh$h$TXX./488,a0488,a0r%   c                    U R                  SS9u  pU R                  U R                  U5        U R                  SU5        U R                  UR	                  U R
                  5      5        U R                  UR                  U R
                  5      S5        U R                  UR                  U R                  5      S5        g )N)zsel;rP   r@   rj   r   r\   rc   s      r   test_interact_invalid_sql,InteractiveSession.test_interact_invalid_sql   s    <<<3d((#.7=TXX./488,a0488,a0r%   c                 4   U R                  [        [        5        U R                  [        SS9u  pU R	                  [        U5        U R                  UR                  U R                  5      5        U R                  [        SS9u  pU R	                  SU5        g )N)zCREATE TABLE t(t);rP   )zSELECT count(t) FROM t;z(0,)
)rD   r   r   rX   r,   r^   r_   r`   )r   r   r   _s       r   test_interact_on_disk_file-InteractiveSession.test_interact_on_disk_file   so    '<<1H<Ifc"TXX./f/KLh$r%   N)rH   rI   rJ   rK   r]   r`   rb   rX   rd   rg   rk   rr   rw   r{   r~   r   r   r   r   r   rL   rG   r%   r   rN   rN   A   sU    AM
C
C&( $1131.111111%r%   rN   __main__)__doc__r1   unittestsqlite3.__main__r   r   test.support.os_helperr   r   test.support.testcaser   test.supportr   r   r	   TestCaser   rN   rH   rG   r%   r   <module>r      s_       ( 1 1 I I3#8,, 3#lw%**O w%t zMMO r%   