3
(h                 @   sd   d dl mZmZmZ d dlmZ d dlZd dlZdgZG dd dej	Z
edkr`d dlZej  dS )    )cursorsOperationalErrorWarning)baseNTestLoadLocalc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c             C   sJ   | j d }|j }|jd z| jt|jd W d|jd |j  X dS )z3Test load local infile when the file does not existr   z3CREATE TABLE test_load_local (a INTEGER, b INTEGER)zXLOAD DATA LOCAL INFILE 'no_data.txt' INTO TABLE test_load_local fields terminated by ','NzDROP TABLE test_load_local)connectionscursorexecuteZassertRaisesr   close)selfconnc r   B/tmp/pip-install-q3hcpn_q/PyMySQL/pymysql/tests/test_load_local.pytest_no_file   s    



zTestLoadLocal.test_no_filec             C   s   | j d }|j }|jd tjjtjjtjjtdd}z2|jdj	| |jd | j
d|j d  W d	|jd
 X d	S )z(Test load local infile with a valid filer   z3CREATE TABLE test_load_local (a INTEGER, b INTEGER)datazload_local_data.txtz(LOAD DATA LOCAL INFILE '{0}' INTO TABLE z(test_load_local FIELDS TERMINATED BY ','z$SELECT COUNT(*) FROM test_load_localiX  NzDROP TABLE test_load_localzPLOAD DATA LOCAL INFILE '{0}' INTO TABLE test_load_local FIELDS TERMINATED BY ',')r   r   r	   ospathjoindirnamerealpath__file__formatassertEqualfetchone)r   r   r   filenamer   r   r   test_load_file   s    

 
zTestLoadLocal.test_load_filec             C   s   | j d }|jtj}|jd tjjtjjtjj	t
dd}z2|jdj| |jd | jd|j d  W d	|j  |j  |j  |j }|jd
 X d	S )z3Test unbuffered load local infile with a valid filer   z3CREATE TABLE test_load_local (a INTEGER, b INTEGER)r   zload_local_data.txtz(LOAD DATA LOCAL INFILE '{0}' INTO TABLE z(test_load_local FIELDS TERMINATED BY ','z$SELECT COUNT(*) FROM test_load_localiX  NzDROP TABLE test_load_localzPLOAD DATA LOCAL INFILE '{0}' INTO TABLE test_load_local FIELDS TERMINATED BY ',')r   r   r   ZSSCursorr	   r   r   r   r   r   r   r   r   r   r
   connect)r   r   r   r   r   r   r   test_unbuffered_load_file-   s"    

 
z'TestLoadLocal.test_unbuffered_load_filec             C   s   | j d }|j }|jd tjjtjjtjjtdd}zvt	j
dd`}t	jd |jdj| | j|d jt d
}|t|d jkr| jd||d jf  W dQ R X W d|jd |j  X dS )z8Test load local infile produces the appropriate warningsr   z3CREATE TABLE test_load_local (a INTEGER, b INTEGER)r   zload_local_warn_data.txtT)recordalwaysz(LOAD DATA LOCAL INFILE '{0}' INTO TABLE z(test_load_local FIELDS TERMINATED BY ','zIncorrect integer value   z%r not in %rNzDROP TABLE test_load_localzPLOAD DATA LOCAL INFILE '{0}' INTO TABLE test_load_local FIELDS TERMINATED BY ','r"   )r   r   r	   r   r   r   r   r   r   warningscatch_warningssimplefilterr   r   categoryr   strmessagefailr
   )r   r   r   r   wZexpected_messager   r   r   test_load_warningsC   s$    


 &
z TestLoadLocal.test_load_warningsN)__name__
__module____qualname__r   r   r   r+   r   r   r   r   r   
   s   __main__)Zpymysqlr   r   r   Zpymysql.testsr   r   r#   __all__ZPyMySQLTestCaser   r,   Zunittestmainr   r   r   r   <module>   s   Q