
    `N`N                         d Z ddlmZ ddlZddlZddlZddlmZ  G d de          Z	ed             Z
ed             Z G d	 d
ej                  Z G d dej                  ZdS )zTests for yapf.__init__.main.    )contextmanagerN)	py3compatc                   @    e Zd ZdZ G d de          Zd Zd Zd ZdS )IOzIO is a thin wrapper around StringIO.

  This is strictly to wrap the Python 3 StringIO object so that it can supply a
  "buffer" attribute.
  c                        e Zd Zd Zd Zd ZdS )	IO.Bufferc                 6    t          j                    | _        d S N)r   StringIO	string_ioselfs    3lib/python3.11/site-packages/yapftests/main_test.py__init__zIO.Buffer.__init__"   s     )++dnnn    c                     t           j        r%t          |t                    rt	          |d          }| j                            |           d S )Nzutf-8)r   PY3
isinstancebytesstrr   writer   ss     r   r   zIO.Buffer.write%   sF    	 :a// 7OO
n1r   c                 4    | j                                         S r
   )r   getvaluer   s    r   r   zIO.Buffer.getvalue*   s    ^$$&&&r   N)__name__
__module____qualname__r   r   r    r   r   Bufferr       sA        , , ,  
' ' ' ' 'r   r    c                 8    |                                  | _        d S r
   )r    bufferr   s    r   r   zIO.__init__-   s    ++--DKKKr   c                 :    | j                             |           d S r
   )r"   r   r   s     r   r   zIO.write0   s    Kar   c                 4    | j                                         S r
   )r"   r   r   s    r   r   zIO.getvalue3   s    ;!!!r   N)	r   r   r   __doc__objectr    r   r   r   r   r   r   r   r      su         ' ' ' ' 'v ' ' '       " " " " "r   r   c               #   H  K   t                      t                      }} t          j        t          j        }}	 | |ct          _        t          _        t          j        t          j        fV  ||ct          _        t          _        d S # ||ct          _        t          _        w xY wr
   )r   sysstdoutstderr)new_outnew_errold_outold_errs       r   captured_outputr/   7   s~      TT2447'Z7'.$gCJ

*cj
    $gCJ


WgCJ
----s   3B B!c              #       K    fd} |            fd}	 t           j        j        }|t           j        _        dV  |t           j        _        dS # |t           j        _        w xY w)z6Monkey patch code as though it were coming from stdin.c               3   Z   K                                    D ]} | V  t                      r
   )
splitlinesEOFError)linecodes    r   lineszpatched_input.<locals>.linesF   s5      !!  jjjj
**r   c                      t          |           S r
   )next)r6   s    r   patch_raw_inputz&patched_input.<locals>.patch_raw_inputK   s    ;;r   N)yapfr   	raw_input)r5   r6   r9   orig_raw_imports   `   r   patched_inputr=   B   s          
 "EGG    /n.O.DN	EEE.DNDN....s   &A A#c                       e Zd Zd ZdS )RunMainTestc                    d}ddgt           _        t                      5 \  }}|                     t                    5  t          j                     ddd           n# 1 swxY w Y   |                     |                                d           |                     |                                |           ddd           dS # 1 swxY w Y   dS )z1run_main should handle YapfError and sys.exit(1).z5yapf: Input filenames did not match any python files
r:   foo.cN )	r(   argvr/   assertRaises
SystemExitr:   run_mainassertEqualr   )r   expected_messageouterrs       r   testShouldHandleYapfErrorz%RunMainTest.testShouldHandleYapfErrorX   s6   O CH			 9jsCZ((                
s||~~r***
s||~~'7888	9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s5   CACA!	!C$A!	%ACC	C	N)r   r   r   rK   r   r   r   r?   r?   V   s#        9 9 9 9 9r   r?   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )MainTestc                     |                      t          j        j        d          5  t          j        ddg           d d d            d S # 1 swxY w Y   d S )Nzdid not match any python filesr:   rA   )assertRaisesRegexpr:   errors	YapfErrormainr   s    r   testNoPythonFilesMatchedz!MainTest.testNoPythonFilesMatchede   s    		 	 !6!A
C 
C # #
i!"""# # # # # # # # # # # # # # # # # #s   A

AAc                 P   d}t          |          5  t                      5 \  }}t          j        g           }|                     |d           |                     |                                |           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 )Nza = 1
b = 2
r   r=   r/   r:   rR   rG   r   )r   r5   rI   _rets        r   testEchoInputzMainTest.testEchoInputj   s   D	t		 / / /aimma   .../ / / / / / / / / / / / / / // / / / / / / / / / / / / / / / / /s5   BAB7BB	B
B	BB"Bc                 X   d}d}t          |          5  t                      5 \  }}t          j        ddg          }|                     |d           |                     |                                |           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 )Nzdef f(a = 1):
    return 2*a
zdef f(a=1):
  return 2 * a
-z--style=yapfr   rU   )r   r5   	yapf_coderI   rV   rW   s         r   testEchoInputWithStylezMainTest.testEchoInputWithStyler   s(   ,D/I	t		 4 4 4ain-..a   3334 4 4 4 4 4 4 4 4 4 4 4 4 4 44 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s5   BAB;BB	BB	BB#&B#c                 :   d}t          |          5  t                      5 \  }}|                     t          d          5  t	          j        g            d d d            n# 1 swxY w Y   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 )Nz  a = 1
zunexpected indent)r=   r/   rO   SyntaxErrorr:   rR   )r   
bad_syntaxrV   s      r   testEchoBadInputzMainTest.testEchoBadInput{   sT   J	z	"	"   A$$[2EFF 	 	
)B---	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                               sX   BA8 A!A8!A%%A8(A%)A8,B8A<	<B?A<	 BBBc                 2   t                      5 \  }}t          j        g d          }|                     |d           |                                }|                     d|           |                     d|           d d d            d S # 1 swxY w Y   d S )N)rZ   z--style-helpz--style=pep8r   zindent_width=4z8The number of spaces required before a trailing comment.)r/   r:   rR   rG   r   assertIn)r   rI   rV   rW   help_messages        r   testHelpzMainTest.testHelp   s    			 "hsAI;;;<<c
sA\\^^l
mm$l333
mmN " " "" " " " " " " " " " " " " " " " " "s   A0BBBc                 @   t                      5 \  }}t          j        ddg          }|                     |d           d                    t          j                  }|                     ||                                           d d d            d S # 1 swxY w Y   d S )NrZ   z	--versionr   zyapf {}
)r/   r:   rR   rG   format__version__r   )r   rI   rV   rW   versions        r   testVersionzMainTest.testVersion   s    			 0hsAIsK())c
sA""4#344g
w///	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   A7BBBN)	r   r   r   rS   rX   r\   r`   rd   ri   r   r   r   rM   rM   c   sn        # # #
/ / /4 4 4  " " "0 0 0 0 0r   rM   )r%   
contextlibr   r(   unittestr:   yapf.yapflibr   r&   r   r/   r=   TestCaser?   rM   r   r   r   <module>rn      s   $ # % % % % % % 



   " " " " " "" " " " " " " "< . . . / / /&
9 
9 
9 
9 
9(# 
9 
9 
9-0 -0 -0 -0 -0x  -0 -0 -0 -0 -0r   