a 8êdgµã@s^ddlZddlZddlZddlZddlZddlZddlmZddlm Z Gdd„dej ƒZ dS)éN)Úsupport)Úassert_python_okc@sÄeZdZdZe d¡Ze d¡Ze d¡Ze d¡Z dd„Z d'd d „Z d d „Z d d„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Ze ejd#kd$¡d%d&„ƒZdS)(ÚTestToolzÊ [["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" ] } cCsDtjddf}tj||jdddd}| |j|j¡| |jd¡dS)Nú-mú json.toolT©ÚinputÚcapture_outputÚtextÚcheckÚ) ÚsysÚ executableÚ subprocessÚrunÚdataÚ assertEqualÚstdoutÚexpectÚstderr©ÚselfÚargsÚprocess©rú4/usr/local/lib/python3.9/test/test_json/test_tool.pyÚtest_stdin_stdoutWs zTestTool.test_stdin_stdoutNcCsVtj}t|ddd.}| tj|¡| |p0|j¡Wdƒn1sH0Y|S)NÚwzutf-8)Úencoding)rÚTESTFNÚopenÚ addCleanupÚosÚremoveÚwriter)rrÚinfileÚfprrrÚ_create_infile]s .zTestTool._create_infilecCsP| ¡}tdd|ƒ\}}}| |d¡| | ¡|j ¡ ¡¡| |d¡dS)Nrrró)r'rrÚ splitlinesrÚencode©rr%ÚrcÚoutÚerrrrrÚtest_infile_stdoutds  zTestTool.test_infile_stdoutcCs^d}t d¡ ¡}| |¡}tdd|ƒ\}}}| |d¡| | ¡| ¡¡| |d¡dS)Nu{"msg": "ã“ã‚“ã«ã¡ã¯"}zP { "msg": "\u3053\u3093\u306b\u3061\u306f" } rrrr()ÚtextwrapÚdedentr*r'rrr))rrrr%r,r-r.rrrÚtest_non_ascii_infileks  zTestTool.test_non_ascii_infilecCs˜| ¡}tjd}tdd||ƒ\}}}| tj|¡t|dƒ"}| |  ¡|j ¡Wdƒn1sf0Y| |d¡| |d¡| |d¡dS)Nú.outrrÚrrr() r'rrrr!r"r#r rÚreadr)rr%Úoutfiler,r-r.r&rrrÚtest_infile_outfilezs  0  zTestTool.test_infile_outfilecCsFtjdddf}tj||jdddd}| |j|j¡| |jd¡dS)Nrrz --json-linesTrr ) r rrrÚ jsonlines_rawrrÚjsonlines_expectrrrrrÚtest_jsonlines…szTestTool.test_jsonlinescCs>tdddƒ\}}}| |d¡| | d¡¡| |d¡dS)Nrrz-hrsusage: r()rrZ assertTrueÚ startswith)rr,r-r.rrrÚtest_help_flag‹s zTestTool.test_help_flagcCsR| ¡}tddd|ƒ\}}}| |d¡| | ¡|j ¡ ¡¡| |d¡dS)Nrrz --sort-keysrr()r'rrr)Úexpect_without_sort_keysr*r+rrrÚtest_sort_keys_flag‘s   ÿzTestTool.test_sort_keys_flagcCsRd}t d¡}tjddddf}tj||dddd}| |j|¡| |jd ¡dS) Nú[1, 2]z5 [ 1, 2 ] rrz--indentÚ2Trr ) r0r1r rrrrrr©rZinput_rrrrrrÚ test_indent™s  zTestTool.test_indentcCsJd}d}tjdddf}tj||dddd}| |j|¡| |jd¡dS) Nz[1, 2]z[1, 2] rrz --no-indentTrr ©r rrrrrrrArrrÚtest_no_indent¦s zTestTool.test_no_indentcCsJd}d}tjdddf}tj||dddd}| |j|¡| |jd¡dS) Nr?z [ 1, 2 ] rrz--tabTrr rCrArrrÚtest_tab®s zTestTool.test_tabcCsJd}d}tjdddf}tj||dddd}| |j|¡| |jd¡dS) Nz [ 1 , 2]z[1,2] rrz --compactTrr rCrArrrÚ test_compact¶s zTestTool.test_compactcCs€| d¡}tjd}| tj|¡tddd||ƒt|dƒ}| ¡  ¡}Wdƒn1s^0Ygd¢}|  ||¡dS)Nõ{"key":"💩"}r3rrz--no-ensure-asciiÚrb)ó{s "key": "💩"ó}© r'rrr!r"r#rr r5r)r©rr%r6ÚfÚlinesZexpectedrrrÚtest_no_ensure_ascii_flag¾s   *z"TestTool.test_no_ensure_ascii_flagcCs~| d¡}tjd}| tj|¡tdd||ƒt|dƒ}| ¡  ¡}Wdƒn1s\0Ygd¢}|  ||¡dS)NrGr3rrrH)rIs "key": "\ud83d\udca9"rJrKrLrrrÚtest_ensure_ascii_defaultÉs   *z"TestTool.test_ensure_ascii_defaultÚwin32z-The test is failed with ValueError on WindowscCsHtjddg}tj|tjtjd}|j ¡| d¡| |j t j ¡dS)Nrr)rÚstdins"{}") r rrÚPopenÚPIPErÚcloseÚ communicaterÚ returncodeÚerrnoÚEPIPE)rÚcmdÚprocrrrÚtest_broken_pipe_errorÔs þ  zTestTool.test_broken_pipe_error)N)Ú__name__Ú __module__Ú __qualname__rr0r1r=rr8r9rr'r/r2r7r:r<r>rBrDrErFrOrPÚunittestZskipIfr Úplatformr\rrrrr s*         r) rXr"r r0r`rÚtestrZtest.support.script_helperrZTestCaserrrrrÚs