U
    Æ½„bè  ã                   @   s¶   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZzd dlm	Z	 W nJ e
k
r–   zd dlm	Z	 W n$ e
k
r�   d dlZdd„ Z	Y nX Y nX dd„ ZG dd	„ d	ejƒZdS )
é    )Úwith_statementN)Ústrip_python_stderrc                 C   s   t  d ¡ d ¡ | ¡ ¡ S )Nz\[\d+ refs\]\r?\n?$Ú )ÚreÚsubÚencodeÚstrip)Ústderr© r
   ú>/tmp/pip-unpacked-wheel-9yxrzpkm/simplejson/tests/test_tool.pyr      s
    ýr   c                  C   s>   t jdkrtjdd�} | j}nt ¡ \}}t |d¡} | |fS )N)é   é   F)Údeletezw+b)ÚsysÚversion_infoÚtempfileÚNamedTemporaryFileÚnameÚmkstempÚosÚfdopen)ÚfileÚfilenameÚfdr
   r
   r   Úopen_temp_file   s    
r   c                   @   s<   e Zd ZdZe d¡Zddd„Zdd„ Zdd	„ Z	d
d„ Z
dS )ÚTestToolzÊ

        [["blorpie"],[ "whoops" ] , [
                                 ],	"d-shtaeou","d-nthiouh",
        "i-vhbjkhnth", {"nifty":87}, {"morefield" :	false,"field"
            :"yes"}  ]
           a.      [
        [
            "blorpie"
        ],
        [
            "whoops"
        ],
        [],
        "d-shtaeou",
        "d-nthiouh",
        "i-vhbjkhnth",
        {
            "nifty": 87
        },
        {
            "field": "yes",
            "morefield": false
        }
    ]
    Nc                 C   sp   t jddg}|r| |¡ tj|tjtjtjd�}| |¡\}}|  t|ƒd 	¡ ¡ |  |j
d¡ | d¡ ¡ S )Nz-mzsimplejson.tool)Ústdinr	   Ústdoutr   r   Úutf8)r   Ú
executableÚextendÚ
subprocessÚPopenÚPIPEÚcommunicateÚassertEqualr   r   Ú
returncodeÚdecodeÚ
splitlines)ÚselfÚargsÚdataÚargvÚprocÚoutÚerrr
   r
   r   ÚrunTool@   s    
ýzTestTool.runToolc                 C   s$   |   | j| j ¡ d�| j ¡ ¡ d S )N)r+   )r%   r0   r+   r   Úexpectr(   )r)   r
   r
   r   Útest_stdin_stdoutM   s    þzTestTool.test_stdin_stdoutc              	   C   sT   t ƒ \}}z8| | j ¡ ¡ | ¡  |  | j|gd�| j	 
¡ ¡ W 5 t |¡ X d S )N©r*   )r   r   ÚunlinkÚwriter+   r   Úcloser%   r0   r1   r(   )r)   ÚinfileÚinfile_namer
   r
   r   Útest_infile_stdoutR   s    
þzTestTool.test_infile_stdoutc              	   C   sª   t ƒ \}}zŽ| | j ¡ ¡ | ¡  t ƒ \}}zZ| ¡  |  | j||gd�g ¡ t	|dƒ�&}|  | 
¡  d¡ ¡ | j ¡ ¡ W 5 Q R X W 5 t |¡ X W 5 t |¡ X d S )Nr3   Úrbr   )r   r   r4   r5   r+   r   r6   r%   r0   ÚopenÚreadr'   r(   r1   )r)   r7   r8   ÚoutfileZoutfile_nameÚfr
   r
   r   Útest_infile_outfile]   s$    

þþzTestTool.test_infile_outfile)NN)Ú__name__Ú
__module__Ú__qualname__r+   ÚtextwrapÚdedentr1   r0   r2   r9   r?   r
   r
   r
   r   r   !   s   

r   )Ú
__future__r   r   r   rC   Zunittestr!   r   Ztest.supportr   ÚImportErrorZtest.test_supportr   r   ZTestCaser   r
   r
   r
   r   Ú<module>   s    	