B
� f� � @ s� d Z ddlmZ ddlZddlmZ ddlmZ ddlZddl Z G dd� d�Z
e
� ZG dd � d �Ze� Z
G d
d� dej�ZG dd
� d
ej�ZG dd� dej�Zedkr�ejdd� dS )a !Changing this line will break Test_findfile.test_found!
Non-gui unit tests for grep.GrepDialog methods.
dummy_command calls grep_it calls findfiles.
An exception raised in one method will fail callers.
Otherwise, tests are mostly independent.
Currently only test grep_it, coverage 51%.
� )�grepN)�captured_stdout)�Varc @ s e Zd ZdZdd� ZdS )�Dummy_searchenginez�GrepDialog.__init__ calls parent SearchDiabolBase which attaches the
passed in SearchEngine instance as attribute 'engine'. Only a few of the
many possible self.engine.x attributes are needed here.
c C s | j S )N)�_pat)�self� r �@/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_grep.py�getpat s zDummy_searchengine.getpatN)�__name__�
__module__�__qualname__�__doc__r
r r r r r s r c @ s( e Zd ZejjZed�ZeZ dd� Z
dS )�
Dummy_grepFc C s d S )Nr )r r r r �close" s zDummy_grep.closeN)r r r
r Z
GrepDialog�grep_itr Zrecvar�searchengine�enginer r r r r r s r c @ sD e Zd Zedd� �Zedd� �Zdd� Zdd� Zd d
� Zdd� Z d
S )�
FindfilesTestc C s" t j�t�| _t j�| j�| _d S )N)�os�path�realpath�__file__�dirname)�clsr r r �
setUpClass* s zFindfilesTest.setUpClassc C s | ` | `d S )N)r r )r r r r �
tearDownClass/ s zFindfilesTest.tearDownClassc C sD t � �}tt�ddd��}W d Q R X | �|g � | �d|�� � d S )NZ
invaliddirz*.*FZinvalid)r �listr � findfiles�assertEqual�assertIn�getvalue)r �s�filelistr r r �test_invaliddir3 s zFindfilesTest.test_invaliddirc C sV t j}t�� }t�| j� d}t|tj|d��}| �tj� tj|�|� t�|� d S )Nztest_grep.pyF)
r r r �getcwd�chdirr r �curdirr �join)r �ffZsave_cwd�filenamer# r r r �test_curdir9 s zFindfilesTest.test_curdirc C s� t j}tj�| jd�}t|| jdd��}| �t|�d� | �| j |� | �
||� t|| jdd��}| �t|�d� | �
| j |� | �||� t|| jdd��}| �t|�d� | �
| j |� d S )Nz
README.txtz*.pyF�
z*.txtr zgrep.*)
r r r r r( r �
assertGreater�lenr r �assertNotInZassertNotEqualr )r r) Zreadmer# r r r � test_baseC s zFindfilesTest.test_basec C s� t j}tj�| j�}tj�|d�}d}t|||d��}t|�}| �|d� | � ||� | �
| j|� t|||d��}| �t|�|� | � ||� | � | j|� tj�|�}t||dd��}| � | j|� d S )Nzgrep.pyz*.pyF� T)r r r r r r( r r. r- r r/ r )r r) �parentZgrepfile�patr# Zparent_sizer r r �test_recurseY s zFindfilesTest.test_recurseN)
r r r
�classmethodr r r$ r+ r0 r4 r r r r r ( s
r c @ s$ e Zd Zdd� Zdd� Zdd� ZdS )�Grep_itTestc C sF |t j_t� �}t �t�|�t� W d Q R X |�� � d�}|�
� |S )N�
)�_grepr r r r �re�compiler r! �split�pop)r r3 r" �linesr r r �report{ s zGrep_itTest.reportc C sB d}| � |�}| �t|�d� | �||d � | �|d d� d S )Nzxyz*xyz*xyz*xyz*xyz*xyz*xyz*� r � zNo hits.)r> r r. r )r r3 r= r r r �test_unfound� s
zGrep_itTest.test_unfoundc C sf d}| � |�}| �t|�d� | �||d � | �d|d � | �d|d � | �|d �d �� d S )
Nz<""" !Changing this line will break Test_findfile.test_found!� r zpy: 1:r@ �2� � z(Hint:)r> r r. r Z
assertTrue�
startswith)r r3 r= r r r �
test_found� s
zGrep_itTest.test_foundN)r r r
r> rA rG r r r r r6 v s r6 c @ s e Zd ZdS )�Default_commandTestN)r r r
r r r r rH � s rH �__main__r? )� verbosity)r Zidlelibr ZunittestZtest.supportr Zidlelib.idle_test.mock_tkr r r9 r r r r8 ZTestCaser r6 rH r �mainr r r r �