
    3hh|                         S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  \R                  " 5        " S S\R                  5      5       rg)    N)support)	os_helper)assert_python_okc                   R   \ rS rSrSr\R                  " S5      r\R                  " S5      r\R                  " S5      r	\R                  " S5      r
S rSS	 jrS
 rS rS rS rS rS rS rS rS rS rS rS rS r\R6                  " \R:                  S:H  S5      S 5       rSrg)TestTool   z

        [["blorpie"],[ "whoops" ] , [
                                 ],	"d-shtaeou","d-nthiouh",
        "i-vhbjkhnth", {"nifty":87}, {"morefield" :	false,"field"
            :"yes"}  ]
           a.      [
        [
            "blorpie"
        ],
        [
            "whoops"
        ],
        [],
        "d-shtaeou",
        "d-nthiouh",
        "i-vhbjkhnth",
        {
            "nifty": 87
        },
        {
            "field": "yes",
            "morefield": false
        }
    ]
    a.      [
        [
            "blorpie"
        ],
        [
            "whoops"
        ],
        [],
        "d-shtaeou",
        "d-nthiouh",
        "i-vhbjkhnth",
        {
            "nifty": 87
        },
        {
            "morefield": false,
            "field": "yes"
        }
    ]
    zr    {"ingredients":["frog", "water", "chocolate", "glucose"]}
    {"ingredients":["chocolate","steel bolts"]}
    z    {
        "ingredients": [
            "frog",
            "water",
            "chocolate",
            "glucose"
        ]
    }
    {
        "ingredients": [
            "chocolate",
            "steel bolts"
        ]
    }
    c                     [         R                  SS4n[        R                  " XR                  SSSS9nU R                  UR                  U R                  5        U R                  UR                  S5        g )N-m	json.toolTinputcapture_outputtextcheck )	sys
executable
subprocessrundataassertEqualstdoutexpectstderrselfargsprocesss      A/opt/python-3.13.8/usr/lib/python3.13/test/test_json/test_tool.pytest_stdin_stdoutTestTool.test_stdin_stdoutY   sX    ~~t[0..YYtRV^bc5,    Nc                     [         R                  n[        USSS9 nU R                  [        R
                  U5        UR                  U=(       d    U R                  5        S S S 5        U$ ! , (       d  f       U$ = f)Nwutf-8encoding)r   TESTFNopen
addCleanuposremovewriter   )r   r   infilefps       r   _create_infileTestTool._create_infile_   s^    !!&#0BOOBIIv.HHT&TYY' 1  10 s   AA++
A:c                    U R                  5       n[        SSU5      u  p#nU R                  US5        U R                  UR                  5       U R                  R                  5       R                  5       5        U R                  US5        g )Nr
   r   r   r"   )r0   r   r   
splitlinesr   encoder   r.   rcouterrs        r   test_infile_stdoutTestTool.test_infile_stdoutf   so    $$&'k6BQ)4;;+=+=+?+J+J+LMc"r"   c                 6   Sn[         R                  " S5      R                  5       nU R                  U5      n[	        SSU5      u  pEnU R                  US5        U R                  UR                  5       UR                  5       5        U R                  US5        g )Nu   {"msg": "こんにちは"}zP        {
            "msg": "\u3053\u3093\u306b\u3061\u306f"
        }
        r
   r   r   r"   )textwrapdedentr4   r0   r   r   r3   )r   r   r   r.   r6   r7   r8   s          r   test_non_ascii_infileTestTool.test_non_ascii_infilem   s    : "  VX	 	 $$T*'k6BQ)6+<+<+>?c"r"   c                    U R                  5       n[        R                  S-   n[        SSX5      u  p4nU R	                  [
        R                  U5        [        USSS9 nU R                  UR                  5       U R                  5        S S S 5        U R                  US5        U R                  US5        U R                  US5        g ! , (       d  f       NE= f)	N.outr
   r   rr%   r&   r   r"   )r0   r   r(   r   r*   r+   r,   r)   r   readr   )r   r.   outfiler6   r7   r8   r/   s          r   test_infile_outfileTestTool.test_infile_outfile|   s    $$&""V+'k6K		7+'31RRWWY4 2Qc"c"	 21s   +C		
Cc                 N   U R                  5       n[        SSX5      u  p#n[        USSS9 nU R                  UR	                  5       U R
                  5        S S S 5        U R                  US5        U R                  US5        U R                  US5        g ! , (       d  f       NE= f)Nr
   r   rB   r%   r&   r   r"   )r0   r   r)   r   rC   r   )r   r.   r6   r7   r8   r/   s         r   test_writing_in_placeTestTool.test_writing_in_place   s    $$&'k6J&#0BRWWY4 1Qc"c"	 10s   +B
B$c                     [         R                  SSS4n[        R                  " XR                  SSSS9nU R                  UR                  U R                  5        U R                  UR                  S5        g )Nr
   r   z--json-linesTr   r   )	r   r   r   r   jsonlines_rawr   r   jsonlines_expectr   r   s      r   test_jsonlinesTestTool.test_jsonlines   s_    ~~t[.@..-?-?PT[_gkl)>)>?,r"   c                     [        SSS5      u  pnU R                  US5        U R                  UR                  S5      5        U R                  US5        g )Nr
   r   z-hr   s   usage: r"   )r   r   
assertTrue
startswith)r   r6   r7   r8   s       r   test_help_flagTestTool.test_help_flag   sI    'k4@Qz23c"r"   c                    U R                  5       n[        SSSU5      u  p#nU R                  US5        U R                  UR                  5       U R                  R                  5       R                  5       5        U R                  US5        g )Nr
   r   z--sort-keysr   r"   )r0   r   r   r3   expect_without_sort_keysr4   r5   s        r   test_sort_keys_flagTestTool.test_sort_keys_flag   sw    $$&'k=&QQ)66==?JJL	Nc"r"   c                     Sn[         R                  " S5      n[        R                  SSSS4n[        R
                  " X1SSSS9nU R                  UR                  U5        U R                  UR                  S	5        g )
N[1, 2]z5        [
          1,
          2
        ]
        r
   r   z--indent2Tr   r   )	r<   r=   r   r   r   r   r   r   r   r   input_r   r   r   s        r   test_indentTestTool.test_indent   sm     "  ~~t[*cA..Dt[_`0,r"   c                     SnSn[         R                  SSS4n[        R                  " X1SSSS9nU R	                  UR
                  U5        U R	                  UR                  S5        g )	Nz[1,
2]z[1, 2]
r
   r   z--no-indentTr   r   r   r   r   r   r   r   r   r[   s        r   test_no_indentTestTool.test_no_indent   s[    ~~t[-?..Dt[_`0,r"   c                     SnSn[         R                  SSS4n[        R                  " X1SSSS9nU R	                  UR
                  U5        U R	                  UR                  S5        g )	NrY   z[
	1,
	2
]
r
   r   z--tabTr   r   r`   r[   s        r   test_tabTestTool.test_tab   s[    $~~t['9..Dt[_`0,r"   c                     SnSn[         R                  SSS4n[        R                  " X1SSSS9nU R	                  UR
                  U5        U R	                  UR                  S5        g )	Nz	[ 1 ,
 2]z[1,2]
r
   r   z	--compactTr   r   r`   r[   s        r   test_compactTestTool.test_compact   s[    ~~t[+=..Dt[_`0,r"   c                 \   U R                  S5      n[        R                  S-   nU R                  [        R
                  U5        [        SSSX5        [        US5       nUR                  5       R                  5       nS S S 5        / SQnU R                  WU5        g ! , (       d  f       N%= f)N   {"key":"💩"}rA   r
   r   z--no-ensure-asciirb)   {s       "key": "💩"   }r0   r   r(   r*   r+   r,   r   r)   rC   r3   r   r   r.   rD   flinesexpecteds         r   test_no_ensure_ascii_flag"TestTool.test_no_ensure_ascii_flag   s    $$%56""V+		7+{,?Q'4 AFFH'')E ! B)	 ! s   B
B+c                 Z   U R                  S5      n[        R                  S-   nU R                  [        R
                  U5        [        SSX5        [        US5       nUR                  5       R                  5       nS S S 5        / SQnU R                  WU5        g ! , (       d  f       N%= f)Nrj   rA   r
   r   rk   )rl   s       "key": "\ud83d\udca9"rm   rn   ro   s         r   test_ensure_ascii_default"TestTool.test_ensure_ascii_default   s    $$%56""V+		7+{F<'4 AFFH'')E ! ?)	 ! s   B
B*win32z-The test is failed with ValueError on Windowsc                 8   [         R                  SS/n[        R                  " U[        R                  [        R                  S9nUR
                  R                  5         UR                  S5        U R                  UR                  [        R                  5        g )Nr
   r   )r   stdins   "{}")r   r   r   PopenPIPEr   closecommunicater   
returncodeerrnoEPIPE)r   cmdprocs      r   test_broken_pipe_errorTestTool.test_broken_pipe_error   sj    ~~t[1'1&0oo7 	!%++6r"    )N) __name__
__module____qualname____firstlineno__r   r<   r=   rU   r   rK   rL   r    r0   r9   r>   rE   rH   rM   rR   rV   r]   ra   rd   rg   rs   rv   unittestskipIfr   platformr   __static_attributes__r   r"   r   r   r      s    D  ( 0  	, __  	F, OO % 	M
   ( 	"-##	##-##----	*	* __S\\G+-\]7 ^7r"   r   )r   r+   r   r<   r   r   testr   test.supportr   test.support.script_helperr   requires_subprocessTestCaser   r   r"   r   <module>r      sM     	 
     " 7 	Z7x   Z7 Z7r"   