HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/idlelib/idle_test/__pycache__/test_squeezer.cpython-310.pyc
o

�i�L�@sdZddlmZddlmZmZddlZddlmZm	Z	m
Z
mZmZddl
mZddlmZddlmZdd	lmZmZmZdd
lmZddlmZddlmZejZd
d�ZGdd�dej�Z Gdd�dej�Z!Gdd�dej�Z"e#dkr~ej$dd�dSdS)zTest squeezer, coverage 95%�)�dedent)�Text�TkN)�Mock�NonCallableMagicMock�patch�sentinel�ANY)�requires)�idleConf)�
Percolator)�count_lines_with_wrapping�ExpandingButton�Squeezer)�macosx)�	view_text)�Hovertipcs0td�t������fdd�}|�|��S)z*Helper for tests: Create a root Tk object.�guics������dS�N)Zupdate_idletasksZdestroy���rootr�</usr/local/lib/python3.10/idlelib/idle_test/test_squeezer.py�cleanup_rootsz&get_test_tk_root.<locals>.cleanup_root)r
rZwithdraw�
addCleanup)Z
test_instancerrrr�get_test_tk_roots
rc@sPeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�CountLinesTestz1Tests for the count_lines_with_wrapping function.cCs|�|t||��Sr��assertEqualr
)�self�expected�text�	linewidthrrr�check$s�zCountLinesTest.checkcC�|�td�d�dS)zTest with an empty string.�rNr�rrrr�test_count_empty*�zCountLinesTest.test_count_emptycCr$)z/Test with a string which begins with a newline.z
text�Nrr&rrr�!test_count_begins_with_empty_line.r(z0CountLinesTest.test_count_begins_with_empty_linecCr$)z-Test with a string which ends with a newline.ztext
�Nrr&rrr�test_count_ends_with_empty_line2r(z.CountLinesTest.test_count_ends_with_empty_linecCr$)z Test with several lines of text.z1
2
3
�Nrr&rrr�test_count_several_lines6r(z'CountLinesTest.test_count_several_linescCs4|jdddd�|jdddd�|jdddd�dS)	Nr+�
�P�r r!r"r)�

�
z










�r#r&rrr�test_empty_lines:szCountLinesTest.test_empty_linescCs$|jdddd�|jdddd�dS)Nr-Z�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar0r1z�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
r4r&rrr�test_long_line?szCountLinesTest.test_long_linecCs`td�}|jd|dd�|jd|ddd�|jd|dd�|jd|d	d�|jd
|dd�dS)Nz�            13 characters
            43 is the number of characters on this line

            7 chars
            13 characters�r0r1r/��(���r3)rr#)rr!rrr�$test_several_lines_different_lengthsCsz3CountLinesTest.test_several_lines_different_lengthsN)�__name__�
__module__�__qualname__�__doc__r#r'r*r,r.r5r6r=rrrrr"src@s�eZdZdZd"dd�Zd#dd�Zd#dd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�ZdS)$�SqueezerTestzTests for the Squeezer class.FcCs:t�}d|_|rt|�|_|j|jd�}||_|j_|S)z$Create a mock EditorWindow instance.r0r)r�widthrr�make_text_widgetr!�perZbottom)r�with_text_widget�editwin�text_widgetrrr�make_mock_editor_windowSs
z$SqueezerTest.make_mock_editor_windowNcCs|dur|��}t|�}|S)z<Create an actual Squeezer instance with a mock EditorWindow.N)rIr)rZ
editor_window�squeezerrrr�make_squeezer_instance_sz#SqueezerTest.make_squeezer_instancecCs0|durt|�}t|�}d|d<|�dd�|S)N)ZCourierr3ZfontZiomark�1.0)rr�mark_set)rrrHrrrrDfszSqueezerTest.make_text_widgetcCs6t�|||�}t�||||�|�tj||||�dSr)rZ	GetOptionZ	SetOptionr)rZ
configType�section�option�valueZprev_valrrr� set_idleconf_option_with_cleanupns
�z-SqueezerTest.set_idleconf_option_with_cleanupc
Cs�|��}|�|�}dD]A\}}}|j|||d��,t|�}t�|d|��|�|�|�|�Wd�n1s8wYWd�n1sGwYqdS)z0Test Squeezer.count_lines() with various inputs.))z'\n'r0r+)z'\n' * 3r0r-)z'a' * 40 + '\n'r0r+)z'a' * 80 + '\n'r0r+)z'a' * 200 + '\n'r0r-)�'aa\t' * 20r0r))z'aa\t' * 21r0r-)rRr9�)�	text_code�
line_widthr rCN)rIrKZsubTest�evalr�objectr�count_lines)rrGrJrTrUr r!rrr�test_count_linests

������zSqueezerTest.test_count_linescCs2|��}|�|�}|�|j|�|�|jg�dS)z(Test the creation of Squeezer instances.N)rIrKZassertIsrGr�expandingbuttons)rrGrJrrr�	test_init�s
zSqueezerTest.test_initcCs~|��}dddddfD]0}ttd�|_}|�|�}|�|j�|d�t�|�|jd�|�|d�|�t	|j
�d	�qd
S)�@Test Squeezer's overriding of the EditorWindow's write() method.r%�TEXT�	LONG TEXT���LMANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
��return_valuerr+rN)rIr�SENTINEL_VALUE�writerKrrG�
call_count�assert_called_with�lenrZ�rrGr!�
orig_writerJrrr�test_write_no_tags�s
�zSqueezerTest.test_write_no_tagscCs|dddddfD]3}|��}t|j_|j}|�|�}|�|j�|d�t�|�|jd�|�|d�|�t	|j
�d�qd	S)
r\r%r]r^r_r`�stderrr+rN)rIrcrdrbrKrrGrerfrgrZ)rr!rGrirJrrr�test_write_not_stdout�s
��z"SqueezerTest.test_write_not_stdoutcCs�td�|��}dD]3}ttd�|_}|�|�}d|_|�|j�|d�t�|�|j	d�|�
|d�|�t|j�d�q
dd	d
fD]-}ttd�|_}|�|�}d|_|�|j�|d�d�|�|j	d�|�t|j�d�qDdS)r\r)r%r]ra�2�stdoutr+rr^r_r`N)
r
rIrrcrdrK�auto_squeeze_min_linesrrGrerfrgrZrhrrr�test_write_stdout�s(
�
�zSqueezerTest.test_write_stdoutcCsd|jdd�}|j}|�|�}d|_tdd�|_|�dd�|�|�dd	�d
�|�t	|j
�d�dS)
zATest that the auto-squeezing creates an ExpandingButton properly.T�rFr7r8razTEXT
TEXT
TEXT
TEXT
TEXT
TEXT
rnrL�endr/r+N)rIr!rKrorrXrdr�getrgrZ)rrGrHrJrrr�test_auto_squeeze�s
zSqueezerTest.test_auto_squeezecCs�dD]w}|jdd�}|j}|�|�}tdd�|_|�dd|�|�dd�|�|�dd	�d
�|�t	|j
�d�|��}|�|d�|�|�dd	�d
�|�t	|j
�d�|�|j
djd�|j
d�
�|�|�dd	�d
�|�t	|j
�d�qdS)z%Test the squeeze_current_text method.)rnrkTrqr8rarL�
SOME
TEXT
�insertrr�SOME
TEXT

r�breakr2r+z	SOME
TEXTN)rIr!rKrrXrvrMrrsrgrZ�squeeze_current_text�s�expand)rZtag_namerGrHrJ�retvalrrr�test_squeeze_current_text�s$
�z&SqueezerTest.test_squeeze_current_textcCs�|jdd�}|j}|�|�}tdd�|_|�ddd�|�dd�|�|�dd	�d
�|�t	|j
�d�|��}|�|d�|�|�dd	�d
�|�t	|j
�d�d
S)z@Test that the event doesn't squeeze text without a relevant tag.Trqr8rarLruZTAGrvrrrwrrxN)rIr!rKrrXrvrMrrsrgrZry�rrGrHrJr|rrr�)test_squeeze_current_text_no_allowed_tags�s
z6SqueezerTest.test_squeeze_current_text_no_allowed_tagscCs�|jdd�}|j}|�|�}tdd�|_|�ddd�|�dd�|��|�t	|j
�d	�|�dd
d�|�dd�|��}|�|d�|�|�dd�d
�|�t	|j
�d�|�|�
|j
dd|j
d	��dS)z2Test squeezing text before existing squeezed text.Trqr8rarLrurnrvr+zMORE
STUFF
rxrrz


r)r�<N)rIr!rKrrXrvrMryrrgrZrs�
assertTrueZcomparer~rrr�/test_squeeze_text_before_existing_squeezed_texts&

�z<SqueezerTest.test_squeeze_text_before_existing_squeezed_textcCsR|jdd�}|�|�}|j}|d}|�dddt|��t��|�|j|�dS)zTest the reload() class-method.Trqr3�mainZPyShellzauto-squeeze-min-linesN)rIrKrorQ�strr�reloadr)rrGrJZorig_auto_squeeze_min_linesZnew_auto_squeeze_min_linesrrr�test_reloads
��zSqueezerTest.test_reloadcCst��dS)z@Test that Squeezer.reload() runs without any instances existing.N)rr�r&rrr�!test_reload_no_squeezer_instances,sz.SqueezerTest.test_reload_no_squeezer_instances)Fr)r>r?r@rArIrKrDrQrYr[rjrlrprtr}rr�r�r�rrrrrBQs"


rBc@sTeZdZdZdd�Zeded�dd��Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�ZdS)�ExpandingButtonTestz$Tests for the ExpandingButton class.cCsDt|�}t�}t|�|j_t|jj�|j_|�|jjj�d|_	|S)z0Helper for tests: Create a mock Squeezer object.rm)
rrrrGr!rrEr�closero)rrrJrrr�make_mock_squeezer5sz&ExpandingButtonTest.make_mock_squeezerzidlelib.squeezer.Hovertip�ZautospeccCs�|��}|jj}tddd|�}|�|jd�|�|j|�|�d|�d�v�|�|�	dd�d�|�
d	|���d
t�
�r@dnd}|�
||���|�|jd
�|j|ttd�|jdd
}|�
d|���dS)z1Test the simplest creation of an ExpandingButton.r]�TAGSrmz50 linesr!rLrrr/z<Double-Button-1>z<Button-%s>�2�3r+)Zhover_delayrzright-clickN)r�rGr!rrrzZmasterr�ZcgetrsZassertIn�bindrZisAquaTkrerfr	�	call_args�lower)rZMockHovertiprJrH�expandingbuttonZright_button_codeZtooltip_textrrrr[AszExpandingButtonTest.test_initcCs�|��}tddd|�}|jj}|jd|d�|jt�d�}|�|d�|�|�dd�d	�|�	d
�}|�|�d|�d�|�|�
dd�d|f�|�|jjj
d�|jj�|�dS)zTest the expand event.r]r�rmrL�Zwindow��eventNrrzTEXT
�end-1cr+)r�rrGr!�
window_creater{rrrs�indexZ
tag_nextrangerZ�removererf)rrJr�rHr|Ztext_end_indexrrr�test_expand^s
�zExpandingButtonTest.test_expandcCs|��}dd}t|dd|�}|��|�|j�|j}|jd|d�td��}d|j_	d|j
_	|jt�d	�}Wd
�n1sAwY|�
|d�|�
|j�dd�d
�td��}d|j_	d|j
_	|jt�d	�}Wd
�n1suwY|�
|d
�|�
|j�dd�|�d
S)z@Test that expanding very long output asks user for confirmation.�ai��r�rmrLr�zidlelib.squeezer.messageboxFr�Nrxr�r%T)r�rZset_is_dangerousr�Zis_dangerousr!r�rZaskokcancelrbZaskyesnor{rrrs)rrJr!r�rHZmock_msgboxr|rrr�test_expand_dangerous_oupputys*
�
�z0ExpandingButtonTest.test_expand_dangerous_oupputcCsp|��}tddd|�}t�|_t�|_|jt�d�}|�|d�|�|jjd�|�|jjd�|j�d�dS)zTest the copy event.r]r�rmr�Nr+)	r�rrZclipboard_clearZclipboard_append�copyrrerf)rrJr�r|rrr�	test_copy�szExpandingButtonTest.test_copycCs�|��}tddd|�}t�|_tdtd��"}|jt�d�|�|jd�|�|j	dd	d�Wd
�d
S1s:wYd
S)zTest the view event.r]r�rmzidlelib.squeezer.view_textr�r�r+rr)N)
r�rrZ
selection_ownrr�viewrrer�)rrJr�Zmock_view_textrrr�	test_view�s"�zExpandingButtonTest.test_viewcCs�|��}tddd|�}td��9}t�}||_t�}d|_d|_|j|d�|�|j	j
t|j��|jD]^}}|j	j
|td�q3Wd�dS1sKwYdS)	zTest the context menu.r]r�rmztkinter.Menur3r�)�labelZcommandN)r�rrrrb�x�yZcontext_menu_eventrZadd_commandrergZrmenu_specsZassert_any_callr	)rrJr�Z	mock_MenuZ	mock_menuZ
mock_eventr��datarrr�
test_rmenu�s 

��"�zExpandingButtonTest.test_rmenuN)
r>r?r@rAr�rrr[r�r�r�r�r�rrrrr�1s

#r��__main__r))�	verbosity)%rA�textwrapr�tkinterrrZunittestZ
unittest.mockrrrrr	Ztest.supportr
Zidlelib.configrZidlelib.percolatorrZidlelib.squeezerr
rrZidlelibrZidlelib.textviewrZidlelib.tooltiprrcrZTestCaserrBr�r>r�rrrr�<module>s,/a"�