o
    GXhi                     @   s   	 d dl Z d dlZd dlZd dlZd dlmZ G dd de jZG dd dejZ	dddZ
d	d
 ZedkrRdejv rAed dS dejv rMe   dS e
  dS dS )    N)supportc                   @   sN   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 )samplecmdclassc                 C      t d d S )NzHello from preloopprintself r	   7/opt/python-3.10.19/usr/lib/python3.10/test/test_cmd.pypreloop      zsamplecmdclass.preloopc                 C   r   )NzHello from postloopr   r   r	   r	   r
   postloop   r   zsamplecmdclass.postloopc                 G   r   )Nz"This is the completedefault methodr   )r   Zignoredr	   r	   r
   completedefault   r   zsamplecmdclass.completedefaultc                 C   r   )Nzcomplete commandr   r   r	   r	   r
   complete_command   r   zsamplecmdclass.complete_commandc                 C   s   d S Nr	   )r   sr	   r	   r
   do_shell      zsamplecmdclass.do_shellc                 C   sh   |  }t|dkrtd d S z	dd |D }W n ty'   td Y d S w t|d |d   d S )N   z*** invalid number of argumentsc                 S   s   g | ]}t |qS r	   )int).0ir	   r	   r
   
<listcomp>   s    z)samplecmdclass.do_add.<locals>.<listcomp>z*** arguments should be numbersr      )splitlenr   
ValueError)r   r   lr	   r	   r
   do_add   s   zsamplecmdclass.do_addc                 C   r   )Nzhelp text for addr   r   r	   r	   r
   help_add   s   zsamplecmdclass.help_addc                 C      dS NTr	   )r   argr	   r	   r
   do_exit   r   zsamplecmdclass.do_exitN)__name__
__module____qualname__r   r   r   r   r   r   r   r#   r	   r	   r	   r
   r      s    zr   c                   @   s>   e Zd ZG dd dejZG dd deZdd Zdd Zd	S )
TestAlternateInputc                   @   s   e Zd Zdd Zdd ZdS )zTestAlternateInput.simplecmdc                 C   s   t || jd d S )Nfiler   stdoutr   argsr	   r	   r
   do_print   s   z%TestAlternateInput.simplecmd.do_printc                 C   r    r!   r	   r,   r	   r	   r
   do_EOF   r   z#TestAlternateInput.simplecmd.do_EOFN)r$   r%   r&   r.   r/   r	   r	   r	   r
   	simplecmd   s    r0   c                   @   s   e Zd Zdd ZdS )zTestAlternateInput.simplecmd2c                 C   s   t d| jd dS )Nz*** Unknown syntax: EOFr(   Tr*   r,   r	   r	   r
   r/      s   z$TestAlternateInput.simplecmd2.do_EOFN)r$   r%   r&   r/   r	   r	   r	   r
   
simplecmd2   s    r1   c                 C   sB   t d}t  }| j||d}d|_|  | | d d S )Nprint test
print test2stdinr+   Fz(Cmd) test
(Cmd) test2
(Cmd) )ioStringIOr0   use_rawinputcmdloopassertMultiLineEqualgetvaluer   inputoutputcmdr	   r	   r
   test_file_with_missing_final_nl   s   

z2TestAlternateInput.test_file_with_missing_final_nlc                 C   sx   t d}t  }| j||d}d|_|  | | d t d}t  }||_||_|  | | d d S )Nr2   r3   Fz5(Cmd) test
(Cmd) test2
(Cmd) *** Unknown syntax: EOF
zprint 

z,(Cmd) 
(Cmd) 
(Cmd) *** Unknown syntax: EOF
)	r5   r6   r1   r7   r8   r9   r:   r4   r+   r;   r	   r	   r
   test_input_reset_at_EOF   s    



z*TestAlternateInput.test_input_reset_at_EOFN)	r$   r%   r&   r>   Cmdr0   r1   r?   r@   r	   r	   r	   r
   r'      s
    	r'   c                 C   s&   ddl m} t||  tt d S )Nr   )test_cmd)testrB   r   Zrun_doctestZrun_unittestr'   )verboserB   r	   r	   r
   	test_main   s   rE   c                 C   sP   t d}|jtjtjgddd}|d | }td |j	dd| d d S )	Ntracer   r   )Z
ignoredirsrF   countz4import importlib; importlib.reload(cmd); test_main()zWriting coverage results...T)Zshow_missingZsummarycoverdir)
r   import_moduleZTracesysbase_prefixbase_exec_prefixrunresultsr   Zwrite_results)rH   rF   Ztracerrr	   r	   r
   test_coverage   s   

rP   __main__z-cz/tmp/cmd.coverz-ir   )r>   rJ   Zunittestr5   rC   r   rA   r   ZTestCaser'   rE   rP   r$   argvr8   r	   r	   r	   r
   <module>   s$     
3	


