o
    JAf                     @   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rJee  dS 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.10/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w   Y  |d | | d dt_z+t }|d W d    n1 s?w   Y  |d | | d W dt_d S dt_w )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