
    <ew"                         d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZmZ  e              G d dej                  Zed	k    r ej                     dS dS )
z4Tests for the pindent script in the Tools directory.    N)support)	os_helper)assert_python_ok)
scriptsdirskip_if_missingc                       e Zd Zej                            ed          Zd Zd Z	d Z
d Zd Zd Zd Zd	 Zd
 Zd Zd ZdS )PindentTestsz
pindent.pyc                    t          |          5 }t          |          5 }|                     |                                |                                           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S N)openassertEqual	readlines)selffn1fn2f1f2s        3/usr/lib/python3.11/test/test_tools/test_pindent.pyassertFileEqualzPindentTests.assertFileEqual   s    #YY 	="d3ii 	=2R\\^^R\\^^<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s4   A?;A'A?'A+	+A?.A+	/A??BBc                    t          j        t          j        | j        f|z   t           j        t           j        d          5 }|                    |          \  }}d d d            n# 1 swxY w Y   |                     |           |S )NT)stdinstdoutuniversal_newlines)
subprocessPopensys
executablescriptPIPEcommunicateassertIsNone)r   sourceargsprocouterrs         r   pindentzPindentTests.pindent   s    -4 ojo#') ) ) 	0 -1''//HC		0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
 	#
s   A&&A*-A*c                 j    d                     d |                                D                       dz   S )N
c              3   >   K   | ]}|                                 V  d S r   )lstrip).0lines     r   	<genexpr>z+PindentTests.lstriplines.<locals>.<genexpr>"   s*      EE4EEEEEE    )join
splitlines)r   datas     r   lstriplineszPindentTests.lstriplines!   s2    yyEE4??3D3DEEEEELLr/   c                 $	   d | _         t          j                    5 }t          j                            |d          }t          | j        d          5 }|                                }d d d            n# 1 swxY w Y   t          |dd          5 }|	                    |           d d d            n# 1 swxY w Y   t          | j        d|          \  }}}|                     |d           |                     |d           |dz   }|                     t          j                            |                     t          |d          5 }|                     |                                |           d d d            n# 1 swxY w Y   t          |d          5 }|                                }	d d d            n# 1 swxY w Y   t          |	dd           |                     |                     |	d	          |           |                     |                     |d          |	           t          | j        d	|          \  }}}|                     |d           |                     |d           t          |d          5 }|                     |                                |	           d d d            n# 1 swxY w Y   t          |d          5 }|                     |                                |           d d d            n# 1 swxY w Y   |                     |          }
t          |dd          5 }|	                    |
           d d d            n# 1 swxY w Y   t          | j        d
|          \  }}}|                     |d           |                     |d           t          |d          5 }|                     |                                |
           d d d            n# 1 swxY w Y   t          |d          5 }|                                }d d d            n# 1 swxY w Y   t          |dd           |                     |                     |
d
          |           d d d            d S # 1 swxY w Y   d S )Nz_test.pyzutf-8)encodingw-dr/   ~exec-c-r)maxDiffr   temp_dirospathr0   r   r   readwriter   r   
assertTrueexistscompiler'   r3   )r   	directory	data_pathfclosedrcr%   r&   backupcleanbrokenindenteds               r   test_selftestzPindentTests.test_selftest$   s   !! '	CYY
;;IdkG444 "" " " " " " " " " " " " " " "iw777  1                              ,DKyIILBSS#&&&S#&&&_FOOBGNN622333fw/// 31  62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3i'222 !a! ! ! ! ! ! ! ! ! ! ! ! ! ! !E:v...T\\%66???T\\&$77???+DKyIILBSS#&&&S#&&&fw/// 21  51112 2 2 2 2 2 2 2 2 2 2 2 2 2 2i'222 3a  62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 %%f--Fiw777  1                             +DKyIILBSS#&&&S#&&&fw/// 31  62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3i'222 $a6688$ $ $ $ $ $ $ $ $ $ $ $ $ $ $Hj&111T\\&$77BBBO'	C '	C '	C '	C '	C '	C '	C '	C '	C '	C '	C '	C '	C '	C '	C '	C '	C '	CsX  7RA3'R3A7	7R:A7	;RB2&R2B6	6R9B6	:BR)F 4R F	RF	RF=1R=G	RG	B?R)J9-R9J=	=R J=	R)L
>R
L	RL	*R<MRM"	"R%M"	&AR )O5)R5O9	9R<O9	=RP2&R2P6	6R9P6	:>RR	R	c           	      2   |                      |                     |d          |           |                      |                     |d          |           |                     |          }|                      |                     |dddd          |           d S )Nr:   r7   r;   -e-s4)r   r'   r3   r   rK   rH   rL   s       r   pindent_testzPindentTests.pindent_testO   s    eT22F;;;fd33U;;;!!&))fdD$DDfMMMMMr/   c                     t          j        d          }t          j        d          }|                     ||           d S )Na:              if a:
                pass

            if a:
                pass
            else:
                pass

            if a:
                pass
            elif:
                pass
            else:
                pass

            while a:
                break

            while a:
                break
            else:
                pass

            for i in a:
                break

            for i in a:
                break
            else:
                pass

            try:
                pass
            finally:
                pass

            try:
                pass
            except TypeError:
                pass
            except ValueError:
                pass
            else:
                pass

            try:
                pass
            except TypeError:
                pass
            except ValueError:
                pass
            finally:
                pass

            with a:
                pass

            class A:
                pass

            def f():
                pass
            a`              if a:
                pass
            # end if

            if a:
                pass
            else:
                pass
            # end if

            if a:
                pass
            elif:
                pass
            else:
                pass
            # end if

            while a:
                break
            # end while

            while a:
                break
            else:
                pass
            # end while

            for i in a:
                break
            # end for

            for i in a:
                break
            else:
                pass
            # end for

            try:
                pass
            finally:
                pass
            # end try

            try:
                pass
            except TypeError:
                pass
            except ValueError:
                pass
            else:
                pass
            # end try

            try:
                pass
            except TypeError:
                pass
            except ValueError:
                pass
            finally:
                pass
            # end try

            with a:
                pass
            # end with

            class A:
                pass
            # end class A

            def f():
                pass
            # end def f
            textwrapdedentrT   r   rK   rH   s      r   test_statementszPindentTests.test_statementsU   sS     ?! ? ?B  L" L LZ 	%(((((r/   c                     t          j        d          }t          j        d          }|                     ||           d S )Nz            def foobar(a, b):
                if a == b:
                    a = a+1
                elif a < b:
                    b = b-1
                    if b > a: a = a-1
                else:
                    print 'oops!'
            aJ              def foobar(a, b):
                if a == b:
                    a = a+1
                elif a < b:
                    b = b-1
                    if b > a: a = a-1
                    # end if
                else:
                    print 'oops!'
                # end if
            # end def foobar
            rV   rY   s      r   test_multilevelzPindentTests.test_multilevel   sN     	! 	 	  "   	%(((((r/   c           	         t          j        d          }t          j        d          }|                     |                     |d          |           |                     |                     |d          |           |                     |          }|                     |                     |dddd          |           t          j        d	          }t          j        d
          }|                     |                     |d          |           |                     |                     |d          |           |                     |          }|                     |                     |d          |           d S )Nz\            if a:
                     if b:
                              pass
            z            if a:
                     if b:
                              pass
                     # end if
            # end if
            r:   r7   r;   rP   rQ   9zD            if a:
            	if b:
            		pass
            zo            if a:
            	if b:
            		pass
            	# end if
            # end if
            )rW   rX   r   r'   r3   rS   s       r   test_preserve_indentsz"PindentTests.test_preserve_indents   sl    !  
  "   	eT22F;;;fd33U;;;!!&))fdD$DDfMMM !  
  "   	eT22F;;;fd33U;;;!!&))fd33V<<<<<r/   c                     t          j        d          }t          j        d          }|                     |                     |d          |           |                     |                     |d          |           d S )Nz            class\
            \
             A:
               def            \
            f:
                  pass
            z            class\
            \
             A:
               def            \
            f:
                  pass
               # end def f
            # end class A
            r:   r7   )rW   rX   r   r'   rY   s      r   test_escaped_newlinez!PindentTests.test_escaped_newline"  s     !    
" 
 
 	eT22F;;;fd33U;;;;;r/   c                     t          j        d          }t          j        d          }|                     ||           d S )Nz4            if a:

                pass
            zI            if a:

                pass
            # end if
            rV   rY   s      r   test_empty_linezPindentTests.test_empty_line:  sN     !  
  "   	%(((((r/   c                     t          j        d          }t          j        d          }|                     ||           d S )Nz#            if a: pass
            z8            if a: pass
            # end if
            rV   rY   s      r   test_onelinezPindentTests.test_onelineH  sN     !    "   	%(((((r/   N)__name__
__module____qualname__r>   r?   r0   r   r   r   r'   r3   rN   rT   rZ   r\   r_   ra   rc   re    r/   r   r	   r	      s        W\\*l33F= = =  M M M)C )C )CVN N NO) O) O)b) ) )4 =  =  =D< < <0) ) )) ) ) ) )r/   r	   __main__)__doc__r>   r   unittestr   rW   testr   test.supportr   test.support.script_helperr   test.test_toolsr   r   TestCaser	   rf   mainri   r/   r   <module>rs      s    : : 				 



             " " " " " " 7 7 7 7 7 7 7 7 7 7 7 7 7 7    ) ) ) ) )8$ ) ) )D
 zHMOOOOO r/   