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/test/__pycache__/test_tabnanny.cpython-310.opt-1.pyc
o

�i�5�@s�dZddlmZmZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
mZddlmZdddd	d
dd�ZGd
d�d�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZdS)zfTesting `tabnanny` module.

Glossary:
    * errored    : Whitespace related problems present in file.
�)�TestCase�mockN)�captured_stderr�captured_stdout�
script_helper�findfile)�unlinkzCfruits = [
    "Apple",
    "Orange",
    "Banana",

print(fruits)
zLif True:
    print("hello")
  print("world")
else:
    print("else called")
zIif True:
 	print("hello")
	print("world")
else:
    print("else called")
zNif True:
    print("hello")
    print("world")
else:
    print("else called")
zGdef my_func():
	  print("hello world")
	  if True:
		print("If called")zLdef my_func():
		print("Hello world")
		if True:
	        print("If called"))�incomplete_expression�wrong_indented�nannynag_errored�
error_free�tab_space_errored_1�tab_space_errored_2c@s*eZdZdZd
dd�Zdd�Zdd	�ZdS)�TemporaryPyFilez+Create a temporary python source code file.�NcCs||_||_dS�N)�source_code�dir)�selfr�	directory�r�//usr/local/lib/python3.10/test/test_tabnanny.py�__init__Bs
zTemporaryPyFile.__init__cCsNtjd|jddd��}|�|j�Wd�n1swY|j|_|jS)N�wz.pyF)�moder�suffix�delete)�tempfile�NamedTemporaryFiler�writer�name�	file_path)r�frrr�	__enter__Fs
��zTemporaryPyFile.__enter__cCst|j�dSr)rr!)r�exc_type�	exc_value�
exc_tracebackrrr�__exit__NszTemporaryPyFile.__exit__)rN)�__name__�
__module__�__qualname__�__doc__rr#r'rrrrr?s

rc@�eZdZdZdd�ZdS)�TestFormatWitnessesz&Testing `tabnanny.format_witnesses()`.c	CsZgd�}|D]$\}}|j||d��|�t�|�|�Wd�n1s%wYqdS)z;Asserting formatter result by giving various input samples.))ZTestzat tab sizes T, e, s, t)rzat tab size )�tz
at tab size t)z  t  zat tab sizes  ,  , t,  ,  )�words�expectedN)�subTest�assertEqual�tabnannyZformat_witnesses)r�testsr/r0rrr�test_format_witnessesUs���z)TestFormatWitnesses.test_format_witnessesN)r(r)r*r+r5rrrrr-R�r-c@r,)�TestErrPrintzTesting `tabnanny.errprint()`.c
Cs�ddgdfdgdfgd�dfgdfg}|D];\}}|j||d��(t��
}tj|�Wd	�n1s4wY|�|��|�Wd	�n1sKwYqd	S)
zBAsserting result of `tabnanny.errprint()` by giving sample inputs.�first�secondz
first second
zfirst
)���z1 2 3
�
)Z	argumentsr0N)r1rr3Zerrprintr2�getvalue)rr4�argsr0�stderrrrr�
test_errprintfs

�����zTestErrPrint.test_errprintN)r(r)r*r+rArrrrr7cr6r7c@seZdZdd�ZdS)�TestNannyNagc	Cs$t�ddd�dddd�ft�ddd�dddd�fg}|D]s\}}|��}|��}|��}|j||dd	��|�|d|�Wd
�n1sHwY|j||dd��|�|d|�Wd
�n1siwY|j||d
d��|�|d
|�Wd
�n1s�wYqd
S)z5Asserting behaviour of `tabnanny.NannyNag` exception.rZfooZbar)�lineno�msg�line�ZtestmsgZtestlinerC)�line_numberr0NrD)rDr0rE)rEr0)r3�NannyNagZ
get_linenoZget_msgZget_liner1r2)rr4Znannyr0rGrDrErrr�test_all_methodsws0
�
��
������zTestNannyNag.test_all_methodsN)r(r)r*rIrrrrrBvsrBc@sjeZdZdZdd�Zddd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	TestCheckzTesting tabnanny.check().cCs|�ttdtj�dt_dS)N�verboser)Z
addCleanup�setattrr3rK)rrrr�setUp�s
zTestCheck.setUprc	Cszt�� }t��
}t�|�Wd�n1swYWd�n1s&wY|�|��|�|�|��|�dS)aRCommon verification for tabnanny.check().

        Use this method to assert expected values of `stdout` and `stderr` after
        running tabnanny.check() on given `dir` or `file` path. Because
        tabnanny.check() captures exceptions and writes to `stdout` and
        `stderr`, asserting standard outputs is the only way.
        N)rrr3�checkr2r>)rZdir_or_file�out�err�stdoutr@rrr�verify_tabnanny_check�s��zTestCheck.verify_tabnanny_checkcC�<ttd��}|�|�Wd�dS1swYdS)z-A python source code file without any errors.rN�r�SOURCE_CODESrR�rr!rrr�test_correct_file��"�zTestCheck.test_correct_filecCs�t����}|�d�g}ttd|d�}ttd|d�}|��}|�r}||fD]
}|�|�d��q%dt_t�� }t��
}	t�	|�Wd�n1sJwYWd�n1sYwY|�
�}|D]}
|j|
d��|�|
|�Wd�n1s}wYqd|�
|	�
�d�Wd�n1s�wYWd�n1s�wYWd�dSWd�dS1s�wYdS)	aDirectory containing few error free python source code files.

        Because order of files returned by `os.lsdir()` is not fixed, verify the
        existence of each output lines at `stdout` using `in` operator.
        `verbose` mode of `tabnanny.verbose` asserts `stdout`.
        z: listing directory
r�rz: Clean bill of health.
r:N)rEr)r�TemporaryDirectoryrrU�appendr3rKrrrNr>r1�assertInr2)r�tmp_dir�linesZfile1Zfile2Z
file1_pathZ
file2_pathr!rQr@rErrr�test_correct_directory_verbose�s4
�������"�z(TestCheck.test_correct_directory_verbosec	Csxt���.}ttd|d��
|�|�Wd�n1swYWd�dSWd�dS1s5wYdS)zADirectory which contains few error free python source code files.rrYN�rrZrrUrR)rr]rrr�test_correct_directory�s
��"�z TestCheck.test_correct_directorycC�Rttd��}d}|�d|��}|j||d�Wd�dS1s"wYdS)zBA python source code file eligible for raising `IndentationError`.r
�Iunindent does not match any outer indentation level (<tokenize>, line 3)
�: Indentation Error: �rPNrT�rr!rPrrr�test_when_wrong_indented�s
"�z"TestCheck.test_when_wrong_indentedcCrb)zEA python source code file eligible for raising 'tokenize.TokenError'.r	z(('EOF in multi-line statement', (7, 0))
z: Token Error: reNrTrfrrr�test_when_tokenize_tokenerror�s
"�z'TestCheck.test_when_tokenize_tokenerrorcCs`ttd�� }|�d�}|d7}|d7}dt_|j||d�Wd�dS1s)wYdS)z�A python source code file eligible for raising `tabnanny.NannyNag`.

        Tests will assert `stdout` after activating `tabnanny.verbose` mode.
        rz': *** Line 3: trouble in tab city! ***
z%offending line: '\tprint("world")\n'
z$indent not equal e.g. at tab size 1
r:�rON)rrUr3rKrR�rr!rOrrr� test_when_nannynag_error_verbose�s
"�z*TestCheck.test_when_nannynag_error_verbosecCsJttd��}|�d�}|j||d�Wd�dS1swYdS)zCA python source code file eligible for raising `tabnanny.NannyNag`.rz 3 '\tprint("world")\n'
riNrTrjrrr�test_when_nannynag_error�s
"�z"TestCheck.test_when_nannynag_errorcCs<d}|�dtj�dt�tj��d|�d�}|j||d�dS)z6A python file which does not exist actually in system.z
no_file.pyz: I/O Error: [Errno z] z: r=reN)�errno�ENOENT�os�strerrorrR)r�pathrPrrr�test_when_no_file�s
��zTestCheck.test_when_no_filec
Cs�t���U}ttd|d�}ttd|d�}|�*}|�}d}|�d|��}|j||d�Wd�n1s5wYWd�n1sDwYWd�dSWd�dS1s\wYdS)z?Directory containing wrongly indented python source code files.r
rYrrcrdreNr`)rr]Z
error_fileZ	code_fileZe_fileZc_filerPrrr�test_errored_directory�s"
�����"�z TestCheck.test_errored_directoryN)rr)r(r)r*r+rMrRrWr_rargrhrkrlrrrsrrrrrJ�s


rJc@s*eZdZdZe�d�dd��Zdd�ZdS)�TestProcessTokensz$Testing `tabnanny.process_tokens()`.ztabnanny.NannyNagc	Csxttd��,}t|��}t�t�|j��Wd�n1swY|�|j	�Wd�dS1s5wYdS)z=A python source code without any whitespace related problems.rN)
rrU�openr3�process_tokens�tokenize�generate_tokens�readlineZassertFalseZcalled)rZMockNannyNagr!r"rrr�test_with_correct_codes
�"�z(TestProcessTokens.test_with_correct_codecCs�dD]c}|j|d��Stt|��=}t|��)}t�|j�}|�tj	��
t�
|�Wd�n1s3wYWd�n1sBwYWd�n1sQwYWd�n1s`wYqdS)z>A python source code with whitespace related sampled problems.)r
r)�keyN)r1rrUrurwrxryZassertRaisesr3rHrv)rr{r!r"�tokensrrr�test_with_errored_codes_samples
s 	
���������z1TestProcessTokens.test_with_errored_codes_samplesN)r(r)r*r+rZpatchrzr}rrrrrts

rtc@sReZdZdZdddd�dd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dS)�TestCommandLinez+Tests command line interface of `tabnanny`.rF)rQr@�partialc
Gs�tjddg|�R�\}}}t�|�}t�|�}|rP||f||ffD],\}}	|	��}
|��D]}|j||
d��|�||
�Wd�n1sGwYq-q!dS|�|��|���|�|��|���dS)zBCommon function to assert the behaviour of command line interface.z-mr3)�std�outputN)rZassert_python_okro�fsdecode�
splitlinesr1r\ZassertListEqual)rrQr@rr?�_rOrPr�r�Z_outputZ_stdrrr�validate_cmd"s

����zTestCommandLine.validate_cmdcCsRttd��}|�d�}|d7}|j||d�Wd�dS1s"wYdS)z8Should displays error when errored python file is given.r
rdzHunindent does not match any outer indentation level (<tokenize>, line 3)�r@N�rrUr�)rr!r@rrr�test_with_errored_file3s

"�z&TestCommandLine.test_with_errored_filecCrS)zAShould not display anything if python file is correctly indented.rNr�rVrrr�test_with_error_free_file;rXz)TestCommandLine.test_with_error_free_filecCs$td�}d|�d�}|j|d�dS)z%Should display usage on no arguments.ztabnanny.pyzUsage: z [-v] file_or_directory ...r�N)rr�)rrqr@rrr�test_command_usage@sz"TestCommandLine.test_command_usagecCsLttd��}|�d�}|jd||d�Wd�dS1swYdS)z*Should display less when quite mode is on.rr=z-q)rQNr�)rr!rQrrr�test_quiet_flagFs
"�zTestCommandLine.test_quiet_flagcC�Rttd��}t�d���}|jd||dd�Wd�dS1s"wYdS)z<Should display more error information if verbose mode is on.r�$offending line: '\tprint("world")\n'z-vT�rQrN�rrU�textwrap�dedent�stripr��rrqrQrrr�test_verbose_modeL���"�z!TestCommandLine.test_verbose_modecCr�)zBShould display detailed error information if double verbose is on.rr�z-vvTr�Nr�r�rrr�test_double_verbose_modeTr�z(TestCommandLine.test_double_verbose_modeN)r(r)r*r+r�r�r�r�r�r�r�rrrrr~sr~)r+Zunittestrrrmror3rwrr�Ztest.supportrrrrZtest.support.os_helperrrUrr-r7rBrJrtr~rrrr�<module>s0�-p