
    daf                         d Z ddlZddlZddlmZ ddlmZmZ ddl	m
Z
mZmZ  G d dej                        Z G d d	ej                        Zed
k(  r ej                          yy)zsqlite3 CLI tests.    N)main)TESTFNunlink)captured_stdoutcaptured_stderrcaptured_stdinc                   H    e Zd ZdddZd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zy)CommandLineInterfaceT)expect_successc                R   t               5 }t               5 }| j                  t              5 }t	        |       d d d        d d d        d d d        j                         j                         j                  j                  fS # 1 sw Y   NxY w# 1 sw Y   RxY w# 1 sw Y   VxY w)N)r   r   assertRaises
SystemExitcligetvalue	exceptioncode)selfr   argsouterrcms         5/root/Python-3.12.4/Lib/test/test_sqlite3/test_cli.py_do_testzCommandLineInterface._do_test   s    	!$	!$j)	 .0I	 	 	 ||~s||~r||/@/@@@	 	 	 	 	 	s8   BBBB BB
BB	BB&c           	           | j                   | \  }}}| j                  |ddj                  d|||g             | j                  |d       |S )Nr   
Unexpected failure: args= )r   assertEqualjoinr   r   r   r   r   s        r   r   z#CommandLineInterface.expect_success   s[    &-S$q&@4'$BC#MN	Pb!
    c           	           | j                   |ddi\  }}}| j                  |ddj                  d|||g             | j                  |d       |S )Nr   Fr   r   r   r   )r   assertNotEqualr   r   r    s        r   expect_failurez#CommandLineInterface.expect_failure   s`    &CUCS$D! II)CdW'EsC&PQ	Sb!
r!   c                 J    | j                  d      }| j                  d|       y )Nz-hzusage: python -m sqlite3r   assertInr   r   s     r   test_cli_helpz"CommandLineInterface.test_cli_help#   s!    !!$'0#6r!   c                 f    | j                  d      }| j                  t        j                  |       y )Nz-v)r   r'   sqlite3sqlite_versionr(   s     r   test_cli_versionz%CommandLineInterface.test_cli_version'   s&    !!$'g,,c2r!   c                 L    | j                  dd      }| j                  d|       y )N:memory:zselect 1z(1,)r&   r(   s     r   test_cli_execute_sqlz)CommandLineInterface.test_cli_execute_sql+   s"    !!*j9fc"r!   c                 P    | j                  dd      }d}| j                  ||       y )Nr/   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_sqlz2CommandLineInterface.test_cli_execute_too_much_sql/   s(    $$Z1EFNc6"r!   c                 L    | j                  dd      }| j                  d|       y )Nr/   selOperationalError (SQLITE_ERROR)r2   )r   r3   s     r   test_cli_execute_incomplete_sqlz4CommandLineInterface.test_cli_execute_incomplete_sql4   s#    $$Z77@r!   c                     | j                  t        t               | j                  t        d      }| j	                  |d       | j                  t        d      }| j                  d|       y )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_dbz(CommandLineInterface.test_cli_on_disk_db8   sT    '!!&*=>b!!!&*BCfc"r!   N)__name__
__module____qualname__r   r   r$   r)   r-   r0   r4   r8   r;    r!   r   r
   r
   
   s4    -1 A73##
A#r!   r
   c                   T    e Zd ZdZdZdZdddZd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zy)InteractiveSessionz+Connected to a transient in-memory databasezsqlite> z... r?   commandsc          
      &   t               5 }t               5 }t               5 }| j                  t              5 }|D ]  }|j                  |dz           |j                  d       t        |       d d d        d d d        d d d        d d d        j                         }j                         }	| j                  j                  j                  dd|d| d|	        ||	fS # 1 sw Y   uxY w# 1 sw Y   yxY w# 1 sw Y   }xY w# 1 sw Y   xY w)Nr   r   r   )r   r   r   r   r   writeseekr   r   r   r   r   )
r   rC   r   stdinstdoutr3   r   cmdr   r   s
             r   run_clizInteractiveSession.run_cliE   s   		 %		!'		 "(j)			 .0 (C$J'(JJqMI		 		 		 		 oooo**A5wbRuE	GCx		 		 		 		 		 		 		 		sP   DC;C/8C#	/C/7C;?D#C,(C//C84C;;D	 DDc                    | j                         \  }}| j                  | j                  |       | j                  | j                  |       | j                  |j	                  | j
                               | j                  |j                  | j
                        d       | j                  |j                  | j                        d       y )N   r   	rJ   r'   MEMORY_DB_MSG
assertTrueendswithPS1r   countPS2r   r   r   s      r   test_interactz InteractiveSession.test_interactW   s    <<>Sd((#.d((#.TXX./488,a0488,a0r!   c                 f   | j                  d      \  }}| j                  | j                  |       | j                  |j	                  | j
                               | j                  |j                  | j
                        d       | j                  |j                  | j                        d       y )N)z.quitrB   rL   r   rM   rT   s      r   test_interact_quitz%InteractiveSession.test_interact_quit_   s}    <<<4Sd((#.TXX./488,a0488,a0r!   c                    | j                  d      \  }}| j                  | j                  |       | j                  t        j                  dz   |       | j                  |j                  | j                               | j                  |j                  | j                        d       | j                  |j                  | j                        d       | j                  t        j                  |       y )N)z.versionrB   r      r   )rJ   r'   rN   r+   r,   rO   rP   rQ   r   rR   rS   rT   s      r   test_interact_versionz(InteractiveSession.test_interact_versionf   s    <<<7Sd((#.g,,t3S9TXX./488,a0488,a0g,,c2r!   c                    | j                  d      \  }}| j                  | j                  |       | j                  d|       | j                  |j	                  | j
                               | j                  |j                  | j
                        d       | j                  |j                  | j                        d       y )N)z	SELECT 1;rB   (1,)
rY   r   rM   rT   s      r   test_interact_valid_sqlz*InteractiveSession.test_interact_valid_sqlo   s    <<<8Sd((#.h$TXX./488,a0488,a0r!   c                 f   | j                  d      \  }}| j                  | j                  |       | j                  |j	                  | j
                               | j                  |j                  | j                        d       | j                  |j                  | j
                        d       y )N)zSELECT 1rB   rL   )	rJ   r'   rN   rO   rP   rS   r   rR   rQ   rT   s      r   &test_interact_incomplete_multiline_sqlz9InteractiveSession.test_interact_incomplete_multiline_sqlw   s}    <<<7Sd((#.TXX./488,a0488,a0r!   c                    | j                  d      \  }}| j                  | j                  |       | j                  | j                  |       | j                  d|       | j	                  |j                  | j                               | j                  |j                  | j                        d       | j                  |j                  | j                        d       y )N)z
SELECT 1
;rB   r\   rY   rL   )	rJ   r'   rN   rS   rO   rP   rQ   r   rR   rT   s      r   !test_interact_valid_multiline_sqlz4InteractiveSession.test_interact_valid_multiline_sql~   s    <<)9<:Sd((#.dhh$h$TXX./488,a0488,a0r!   c                    | j                  d      \  }}| j                  | j                  |       | j                  d|       | j                  |j	                  | j
                               | j                  |j                  | j
                        d       | j                  |j                  | j                        d       y )N)zsel;rB   r7   rY   r   rM   rT   s      r   test_interact_invalid_sqlz,InteractiveSession.test_interact_invalid_sql   s    <<<3Sd((#.7=TXX./488,a0488,a0r!   c                 D   | j                  t        t               | j                  t        d      \  }}| j	                  t        |       | j                  |j                  | j                               | j                  t        d      \  }}| j	                  d|       y )N)zCREATE TABLE t(t);rB   )zSELECT count(t) FROM t;z(0,)
)r:   r   r   rJ   r'   rO   rP   rQ   )r   r   r   _s       r   test_interact_on_disk_filez-InteractiveSession.test_interact_on_disk_file   ss    '<<1H<ISfc"TXX./f/KLQh$r!   N)r<   r=   r>   rN   rQ   rS   rJ   rU   rW   rZ   r]   r_   ra   rc   rf   r?   r!   r   rA   rA   @   sA    AM
C
C&( $1131111%r!   rA   __main__)__doc__r+   unittestsqlite3.__main__r   r   test.support.os_helperr   r   test.supportr   r   r   TestCaser
   rA   r<   r?   r!   r   <module>rn      s\       ( 1 I I3#8,, 3#lW%** W%t zHMMO r!   