Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_shlex.cpython-311.pyc
�

�Ke�5���ddlZddlZddlZddlZddlZddlmZdZdZGd�dej��Z	e
edd��s5ee	��D])Ze�
d��red	kree	e���*ed
krej��dSdS)�N)�mocku�x|x|
foo bar|foo|bar|
 foo bar|foo|bar|
 foo bar |foo|bar|
foo   bar    bla     fasel|foo|bar|bla|fasel|
x y  z              xxxx|x|y|z|xxxx|
\x bar|\|x|bar|
\ x bar|\|x|bar|
\ bar|\|bar|
foo \x bar|foo|\|x|bar|
foo \ x bar|foo|\|x|bar|
foo \ bar|foo|\|bar|
foo "bar" bla|foo|"bar"|bla|
"foo" "bar" "bla"|"foo"|"bar"|"bla"|
"foo" bar "bla"|"foo"|bar|"bla"|
"foo" bar bla|"foo"|bar|bla|
foo 'bar' bla|foo|'bar'|bla|
'foo' 'bar' 'bla'|'foo'|'bar'|'bla'|
'foo' bar 'bla'|'foo'|bar|'bla'|
'foo' bar bla|'foo'|bar|bla|
blurb foo"bar"bar"fasel" baz|blurb|foo"bar"bar"fasel"|baz|
blurb foo'bar'bar'fasel' baz|blurb|foo'bar'bar'fasel'|baz|
""|""|
''|''|
foo "" bar|foo|""|bar|
foo '' bar|foo|''|bar|
foo "" "" "" bar|foo|""|""|""|bar|
foo '' '' '' bar|foo|''|''|''|bar|
\""|\|""|
"\"|"\"|
"foo\ bar"|"foo\ bar"|
"foo\\ bar"|"foo\\ bar"|
"foo\\ bar\"|"foo\\ bar\"|
"foo\\" bar\""|"foo\\"|bar|\|""|
"foo\\ bar\" dfadf"|"foo\\ bar\"|dfadf"|
"foo\\\ bar\" dfadf"|"foo\\\ bar\"|dfadf"|
"foo\\\x bar\" dfadf"|"foo\\\x bar\"|dfadf"|
"foo\x bar\" dfadf"|"foo\x bar\"|dfadf"|
\''|\|''|
'foo\ bar'|'foo\ bar'|
'foo\\ bar'|'foo\\ bar'|
"foo\\\x bar\" df'a\ 'df'|"foo\\\x bar\"|df'a|\|'df'|
\"foo"|\|"foo"|
\"foo"\x|\|"foo"|\|x|
"foo\x"|"foo\x"|
"foo\ "|"foo\ "|
foo\ xx|foo|\|xx|
foo\ x\x|foo|\|x|\|x|
foo\ x\x\""|foo|\|x|\|x|\|""|
"foo\ x\x"|"foo\ x\x"|
"foo\ x\x\\"|"foo\ x\x\\"|
"foo\ x\x\\""foobar"|"foo\ x\x\\"|"foobar"|
"foo\ x\x\\"\''"foobar"|"foo\ x\x\\"|\|''|"foobar"|
"foo\ x\x\\"\'"fo'obar"|"foo\ x\x\\"|\|'"fo'|obar"|
"foo\ x\x\\"\'"fo'obar" 'don'\''t'|"foo\ x\x\\"|\|'"fo'|obar"|'don'|\|''|t'|
'foo\ bar'|'foo\ bar'|
'foo\\ bar'|'foo\\ bar'|
foo\ bar|foo|\|bar|
foo#bar\nbaz|foobaz|
:-) ;-)|:|-|)|;|-|)|
áéíóú|á|é|í|ó|ú|
u1x|x|
foo bar|foo|bar|
 foo bar|foo|bar|
 foo bar |foo|bar|
foo   bar    bla     fasel|foo|bar|bla|fasel|
x y  z              xxxx|x|y|z|xxxx|
\x bar|x|bar|
\ x bar| x|bar|
\ bar| bar|
foo \x bar|foo|x|bar|
foo \ x bar|foo| x|bar|
foo \ bar|foo| bar|
foo "bar" bla|foo|bar|bla|
"foo" "bar" "bla"|foo|bar|bla|
"foo" bar "bla"|foo|bar|bla|
"foo" bar bla|foo|bar|bla|
foo 'bar' bla|foo|bar|bla|
'foo' 'bar' 'bla'|foo|bar|bla|
'foo' bar 'bla'|foo|bar|bla|
'foo' bar bla|foo|bar|bla|
blurb foo"bar"bar"fasel" baz|blurb|foobarbarfasel|baz|
blurb foo'bar'bar'fasel' baz|blurb|foobarbarfasel|baz|
""||
''||
foo "" bar|foo||bar|
foo '' bar|foo||bar|
foo "" "" "" bar|foo||||bar|
foo '' '' '' bar|foo||||bar|
\"|"|
"\""|"|
"foo\ bar"|foo\ bar|
"foo\\ bar"|foo\ bar|
"foo\\ bar\""|foo\ bar"|
"foo\\" bar\"|foo\|bar"|
"foo\\ bar\" dfadf"|foo\ bar" dfadf|
"foo\\\ bar\" dfadf"|foo\\ bar" dfadf|
"foo\\\x bar\" dfadf"|foo\\x bar" dfadf|
"foo\x bar\" dfadf"|foo\x bar" dfadf|
\'|'|
'foo\ bar'|foo\ bar|
'foo\\ bar'|foo\\ bar|
"foo\\\x bar\" df'a\ 'df"|foo\\x bar" df'a\ 'df|
\"foo|"foo|
\"foo\x|"foox|
"foo\x"|foo\x|
"foo\ "|foo\ |
foo\ xx|foo xx|
foo\ x\x|foo xx|
foo\ x\x\"|foo xx"|
"foo\ x\x"|foo\ x\x|
"foo\ x\x\\"|foo\ x\x\|
"foo\ x\x\\""foobar"|foo\ x\x\foobar|
"foo\ x\x\\"\'"foobar"|foo\ x\x\'foobar|
"foo\ x\x\\"\'"fo'obar"|foo\ x\x\'fo'obar|
"foo\ x\x\\"\'"fo'obar" 'don'\''t'|foo\ x\x\'fo'obar|don't|
"foo\ x\x\\"\'"fo'obar" 'don'\''t' \\|foo\ x\x\'fo'obar|don't|\|
'foo\ bar'|foo\ bar|
'foo\\ bar'|foo\\ bar|
foo\ bar|foo bar|
foo#bar\nbaz|foo|baz|
:-) ;-)|:-)|;-)|
áéíóú|áéíóú|
c���eZdZd�Zd�Zd�Zejdej	����d���Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�	ShlexTestc�J�d�t���D��|_d�t���D��|_|jD]!}|d�dd��|d<�"|jD]!}|d�dd��|d<�"dS)Nc�H�g|]}|�d��dd��� S��|N�����split��.0�xs  �9/usr/local/apps/python3/lib/python3.11/test/test_shlex.py�
<listcomp>z#ShlexTest.setUp.<locals>.<listcomp>�s;��1�1�1���W�W�S�\�\�#�2�#�&�1�1�1�c�H�g|]}|�d��dd��� Srrr
s  rrz#ShlexTest.setUp.<locals>.<listcomp>�s;��=�=�=� ��7�7�3�<�<����,�=�=�=rrz\n�
)�data�
splitlines�
posix_data�replace)�self�items  r�setUpzShlexTest.setUp�s���1�1�"�o�o�/�/�1�1�1��	�=�=�$.�$9�$9�$;�$;�=�=�=����I�	3�	3�D��1�g�o�o�e�T�2�2�D��G�G��O�	3�	3�D��1�g�o�o�e�T�2�2�D��G�G�	3�	3rc��tt|����D]k}tj||d|���}|�|||dd�||d�d|�d||dd������ldS)Nr��comments��: � != )�range�len�shlexr�assertEqual)rrr�i�ls     r�	splitTestzShlexTest.splitTest�s����s�4�y�y�!�!�	;�	;�A���D��G�A�J��:�:�:�A����Q��Q������"�1�g�a�j�j�j�!�!�!�T�!�W�Q�R�R�[�[�:�
;�
;�
;�
;�	;�	;rc���g}tjtj|����}|���}|r+|�|��|���}|�+|S�N)r$�io�StringIO�	get_token�append)r�s�ret�lex�toks     r�oldSplitzShlexTest.oldSplit�s`�����k�"�+�a�.�.�)�)���m�m�o�o���	"��J�J�s�O�O�O��-�-�/�/�C��	"��
rz	sys.stdinc��|�t��5tjd��ddd��dS#1swxYwYdSr*)�assertWarns�DeprecationWarningr$r�rs r�testSplitNoneDeprecationz"ShlexTest.testSplitNoneDeprecation�s���
�
�
�0�
1�
1�	�	��K�����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�=�A�Ac�>�|�|jd���dS)z%Test data splitting with posix parserTrN)r(rr7s r�testSplitPosixzShlexTest.testSplitPosix�s �����t����6�6�6�6�6rc�F�tt|j����D]~}|�|j|d��}|�||j|dd�|j|d�d|�d|j|dd������dS)zTest compatibility interfacerrNr r!)r"r#rr3r%)rr&r's   r�
testCompatzShlexTest.testCompat�s����s�4�9�~�~�&�&�	E�	E�A��
�
�d�i��l�1�o�.�.�A����Q��	�!��Q�R�R� 0�"�i��l�1�o�o�o�q�q�q�$�)�A�,�q�r�r�2B�2B�D�
E�
E�
E�
E�	E�	Erc��dD]x}d|zd|zg}dd|ddg}tj|d��D]O\}}tj|d�	��}||_t	|��}|�||d
|�d|�d����P�yd
S)z)Test handling of syntax splitting of &, |)
�&&�&z|&�;&�;;&�||r	z&|z;|z;;|�echo hi %s echo bye�echo hi%secho bye�echo�hi�bye�FTT��punctuation_chars�While splitting '�' [ws=�]N��	itertools�productr$�whitespace_split�listr%�r�	delimiter�src�ref�ss�wsr/�results        r�testSyntaxSplitAmpersandAndPipez)ShlexTest.testSyntaxSplitAmpersandAndPipe�s���
8�
	L�
	L�I�(�9�4�&��2�4�C��4��F�E�:�C�#�+�C��?�?�
L�
L���B��K��d�;�;�;��%'��"��a����� � ��f�f�CE�2�2�r�r�r�!J�L�L�L�L�	
L�
	L�
	Lrc��dD]|}d|zd|zd|zg}dd|ddg}tj|d��D]O\}}tj|d	�
��}||_t	|��}|�||d|�d|�d
����P�}dS)z&Test handling of syntax splitting of ;)�;z;;r@rArCzecho hi%s echo byerDrErFrGrHTrIrKrLrMNrNrSs        r�testSyntaxSplitSemicolonz"ShlexTest.testSyntaxSplitSemicolon�s���2�
	L�
	L�I�(�9�4�'�)�3�&��2�4�C��4��F�E�:�C�#�+�C��?�?�
L�
L���B��K��d�;�;�;��%'��"��a����� � ��f�f�CE�2�2�r�r�r�!J�L�L�L�L�	
L�
	L�
	Lrc���dD]t}d|zd|zd|zg}dd|dg}tj|d��D]H\}}tj|d	�
��}t|��}|�||d|�d|�d
����I�udS)z&Test handling of syntax splitting of >)�<r	zecho hi %s outz
echo hi%s outzecho hi%soutrErF�outrHTrIrKrLrMN)rOrPr$rRr%rSs        r�testSyntaxSplitRedirectz!ShlexTest.testSyntaxSplitRedirect�s���$�		L�		L�I�#�i�/�"�Y�.�!�I�-�/�C��4��E�2�C�#�+�C��?�?�
L�
L���B��K��d�;�;�;���a����� � ��f�f�CE�2�2�r�r�r�!J�L�L�L�L�
L�		L�		Lrc
���ddg}gd�}tj|d��D]O\}}tj|d���}||_t	|��}|�||d|�d|�d	����Pd
S)z'Test handling of syntax splitting of ()z( echo hi )z	(echo hi))�(rErF�)rHTrIrKrLrMNrN)rrUrVrWrXr/rYs       r�testSyntaxSplitParenzShlexTest.testSyntaxSplitParen�s�������&�&�&���'��]�;�;�	H�	H�F�B����B�$�7�7�7�A�!#�A���!�W�W�F����S�&�&�?A�r�r�2�2�2�F�
H�
H�
H�
H�		H�	Hrc�$�d}gd�}tj|d���}t|��}|�||d|z��gd�}tj|d���}d|_t|��}|�||d|z��d	S)
z3Test handling of syntax splitting with custom charsz~/a&&b-c --color=auto||d *.py?)z~/ar?r?zb-c�--color=autorB�d�*.py?r	rIzWhile splitting '%s' [ws=False])z~/a&&b-crgrBrhriTzWhile splitting '%s' [ws=True]N)r$rRr%rQ)rrWrVr/rYs     r�testSyntaxSplitCustomzShlexTest.testSyntaxSplitCustom�s���
-��J�J�J���K��c�2�2�2���a��������f�&G�"�&L�M�M�M�>�>�>���K��c�2�2�2��!����a��������f�&F��&K�L�L�L�L�Lrc��dgd�ffD]�\}}tj|d���}g}	|���}||jkrn,|d|jvrd}nd}|�||f���L|�||����dS)	z2Test that tokens are split with types as expected.za && b || c))�arl)r>�c)�brl)rBrm)rmrlTrIrrmrlN)r$r-�eofrJr.r%)r�source�expectedr/�observed�t�tts       r�testTokenTypeszShlexTest.testTokenTypess���"/�";�";�";�!<�! �	1�	1��F�H�
��F�d�;�;�;�A��H�
)��K�K�M�M�����:�:���Q�4�1�.�.�.��B�B��B�����B��(�(�(�
)�
���X�x�0�0�0�0�!	1�	1rc��tjdd���}|�d|j��|�t	|��gd���dS)z:Test that any punctuation chars are removed from wordchars�a_b__c�_rI)rlrxrn�__rmN)r$�assertNotIn�	wordcharsr%rR�rr/s  r�testPunctuationInWordCharsz$ShlexTest.testPunctuationInWordCharssW���K��C�8�8�8������a�k�*�*�*�����a���"<�"<�"<�=�=�=�=�=rc��tjdd���}|�t|��gd���tjdd���}d|_|�t|��gd���dS)z9Test that with whitespace_split, behaviour is as expectedza  && b  ||  cr?rI)rlr>rnr	r	rmT)rlr>rnrBrmN)r$r%rRrQr|s  r�"testPunctuationWithWhitespaceSplitz,ShlexTest.testPunctuationWithWhitespaceSplits����K�(�C�@�@�@��	
����a���"A�"A�"A�B�B�B��K�(�C�@�@�@��!���	
����a���"=�"=�"=�>�>�>�>�>rc��tjddd���}|�t|��gd���tjddd���}|�t|��gd���dS)z@Test that punctuation_chars and posix behave correctly together.zf >"abc"T��posixrJ)�f�>�abcz
f >\"abc\")r�r�z"abc"N)r$r%rRr|s  r�testPunctuationWithPosixz"ShlexTest.testPunctuationWithPosix&s|��
�K�
�$�$�G�G�G������a���"3�"3�"3�4�4�4��K��d�d�K�K�K������a���"5�"5�"5�6�6�6�6�6rc�
�gd�}dD]>}tjdd|���}t|��}|�||���?gd�}tjdd���}|�t|��|��dS)	z8Test that parsing of empty strings is correctly handled.)�rdr�rHz'')abcTr�)�''rdr�rIN)r$rRr%)rrq�punctr/�slists     r�testEmptyStringHandlingz!ShlexTest.testEmptyStringHandling.s���$�#�#��"�	.�	.�E���H�D�E�J�J�J�A���G�G�E����U�H�-�-�-�-�%�%�%���K��D�9�9�9������a���(�+�+�+�+�+rc�
�d}dg}tj|d���}d|_|�t|��|��gd�}tj|d���}|�t|��|��dS)z;Test punctuation_chars and whitespace_split handle unicode.uℙƴ☂ℌøἤTrI)uℙuƴu☂uℌ�øuἤN)r$rQr%rR)rrWrVr/s    r�testUnicodeHandlingzShlexTest.testUnicodeHandling:s���
3��5�6���K��d�3�3�3��!�������a���#�&�&�&�J�J�J���K��d�3�3�3������a���#�&�&�&�&�&rc��tjtjzdz}d}d|z}|�t	jd��d��|�t	j|��|��|�t	jd��d��|D]0}|�t	jd|z��d	|z���1|D]0}|�t	jd
|z��d|z���1dS)Nz
@%_-+=:,./uéàßz"`$\!r�r�ztest file namez'test file name'z
test%snamez'test%sname'ztest%s'name'z'test%s'"'"'name'"'"'')�string�
ascii_letters�digitsr%r$�quote)r�safeunquoted�unicode_sample�unsafe�us     r�	testQuotezShlexTest.testQuoteGs���+�f�m�;�l�J��'���N�*�������R���$�/�/�/������\�2�2�L�A�A�A������%5�6�6�8J�K�K�K��	1�	1�A����U�[���)9�:�:�+�a�/�
1�
1�
1�
1��	?�	?�A����U�[��!�);�<�<�9�A�=�
?�
?�
?�
?�	?�	?rc���ddgdfddgdfgd�dfd	d
gdffD]]\}}|�|���5tj|��}|�||��ddd��n#1swxYwY�^dS)
Nza rnz'a ' brlz bza ' b')rl� rnza ' ' bz"azb"z	'"a' 'b"'��command)�subTestr$�joinr%)r�
split_commandr��joineds    r�testJoinzShlexTest.testJoinVs����C�[�(�#��4�[�(�#�
�_�_�i�(��D�\�?�+�	'
�	2�	2�"�M�7����g��.�.�
2�
2���M�2�2��� � ���1�1�1�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2��
	2�	2s�+A)�)A-	�0A-	c�
�|j|jz}|D]p^}}|�|���5tj|��}tj|��}|�||��ddd��n#1swxYwY�qdS)Nr�)rrr�r$r�rr%)r�all_datar�r�r��resplits      r�testJoinRoundtripzShlexTest.testJoinRoundtripas����9�t��.��'/�	9�	9�#�G�m����g��.�.�
9�
9���M�2�2���+�f�-�-��� � ���8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��	9�	9s�?A7�7A;	�>A;	c���d}tj|���}|�|j|��|�t��5d|_ddd��dS#1swxYwYdS)Nz/|$%^rIF)r$r%rJ�assertRaises�AttributeError)rrJ�shlex_instances   r�testPunctuationCharsReadOnlyz&ShlexTest.testPunctuationCharsReadOnlyis���#����7H�I�I�I������9�;L�M�M�M�
�
�
�~�
.�
.�	5�	5�/4�N�,�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�
A"�"A&�)A&N)�__name__�
__module__�__qualname__rr(r3r�patchr+r,r8r:r<rZr]rarerjrur}rr�r�r�r�r�r�r��rrrr�s�������3�3�3�;�;�;�����T�Z��[�R�[�]�]�+�+���,�+��7�7�7�E�E�E�L�L�L�"L�L�L� 
L�
L�
L�H�H�H�M�M�M�1�1�1�(>�>�>�
?�
?�
?�7�7�7�
,�
,�
,�'�'�'�
?�
?�
?�	2�	2�	2�9�9�9�5�5�5�5�5rrr�testr<�__main__)r+rOr$r��unittestrrr�TestCaser�getattr�dir�methname�
startswith�delattrr��mainr�rr�<module>r�s��	�	�	�	���������
�
�
�
�����������
=��~>�
�@d5�d5�d5�d5�d5��!�d5�d5�d5�P�w�u�g�t�$�$�)��C�	�N�N�)�)�����v�&�&�	)�8�|�+C�+C��G�I�x�(�(�(���z����H�M�O�O�O�O�O��r