a
    ze                     @   s   d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ G dd	 d	eZG d
d dejZdd Zedkree  dS )zTests for distutils.cmd.    N)captured_stdoutrun_unittest)Command)Distribution)DistutilsOptionError)debugc                   @   s   e Zd Zdd ZdS )MyCmdc                 C   s   d S N selfr
   r
   ./usr/lib/python3.9/distutils/tests/test_cmd.pyinitialize_options   s    zMyCmd.initialize_optionsN)__name__
__module____qualname__r   r
   r
   r
   r   r      s   r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )CommandTestCasec                 C   s   t  }t|| _d S r	   )r   r   cmd)r   distr
   r
   r   setUp   s    zCommandTestCase.setUpc                 C   s   | j }g d|_g d|_t |_d|_|d |d | t|jd | t|jd d|_	|d	 | 
|j	dd
g ddg|_|d ddg|_| t|jd d S )N)one   three)r   Ztwor   okyes_string_listyes_string_list2not_string_listnot_string_list2zok,dokoption1ZdokxxxZwwwoption2r   option3)r   r   r   objectr   r   Zensure_string_listassertRaisesr   r   assertEqualr    r!   r   r   r
   r
   r   test_ensure_string_list   s,    








z'CommandTestCase.test_ensure_string_listc                    sL    j } jt|jddddd  fdd}d|_||_|jd	d
ddd d S )N    funcr
   )ZinfilesZoutfiler)   argsc                    s     |d d S )Nzgenerating out from in)r$   )r)   r*   Zexec_msglevelr   r
   r   _execute:   s    z0CommandTestCase.test_make_file.<locals>._executeTinout)r   r#   	TypeErrorZ	make_fileforceZexecute)r   r   r,   r
   r   r   test_make_file1   s    
zCommandTestCase.test_make_filec                    sR   g   fdd}| j }||_d|_d|_ddg|_|  g d}|  | d S )Nc                    s     |  d S r	   )append)msgr+   Zmsgsr
   r   	_announceC   s    z4CommandTestCase.test_dump_options.<locals>._announcer'   )r   r(   r(   )r    r(   r(   )zcommand options for 'MyCmd':z  option1 = 1z  option2 = 1)r   Zannouncer   r    Zuser_optionsZdump_optionsr$   )r   r5   r   Zwantedr
   r4   r   test_dump_options@   s    
z!CommandTestCase.test_dump_optionsc                 C   sR   | j }d|_|d d |_|dd | t|d d|_| t|jd d S )Nr   r   r    r   r'   r!   )	r   r   Zensure_stringr    Z
assertTruehasattrr!   r#   r   r%   r
   r
   r   test_ensure_stringP   s    
z"CommandTestCase.test_ensure_stringc                 C   s0   | j }t|_|d d|_| t|jd d S Nr   r   r    )r   __file__r   Zensure_filenamer    r#   r   r%   r
   r
   r   test_ensure_filename\   s
    
z$CommandTestCase.test_ensure_filenamec                 C   s>   | j }tjtptj|_|d d|_| 	t
|jd d S r9   )r   ospathdirnamer:   curdirr   Zensure_dirnamer    r#   r   r%   r
   r
   r   test_ensure_dirnamec   s
    
z#CommandTestCase.test_ensure_dirnamec                 C   s   | j }t }|d W d    n1 s,0    Y  |d | | d dt_zTt }|d W d    n1 s~0    Y  |d | | d W dt_ndt_0 d S )Nr   r   r(   Tzxxx
F)r   r   Zdebug_printseekr$   readr   DEBUG)r   r   stdoutr
   r
   r   test_debug_printj   s    (
(
z CommandTestCase.test_debug_printN)r   r   r   r   r&   r1   r6   r8   r;   r@   rE   r
   r
   r
   r   r      s   r   c                   C   s
   t tS r	   )unittestZ	makeSuiter   r
   r
   r
   r   
test_suitez   s    rG   __main__)__doc__rF   r<   Ztest.supportr   r   Zdistutils.cmdr   Zdistutils.distr   Zdistutils.errorsr   Z	distutilsr   r   ZTestCaser   rG   r   r
   r
   r
   r   <module>   s   k