a  ze @s^ddlZddlZddlZddlZddlZddlZddlmZddlm Z Gdddej Z dS)N)support)assert_python_okc@seZdZdZedZedZedZedZ ddZ d)d d Z d d Z d dZ ddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zeejd%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||jddS)N-m json.toolTinputcapture_outputtextcheck) sys executable subprocessrundata assertEqualstdoutexpectstderrselfargsprocessrL/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_json/test_tool.pytest_stdin_stdoutWs zTestTool.test_stdin_stdoutNcCsVtj}t|ddd.}|tj|||p0|jWdn1sH0Y|S)Nwutf-8encoding)rTESTFNopen addCleanuposremovewriter)rrinfilefprrr_create_infile]s .zTestTool._create_infilecCsP|}tdd|\}}}||d|||j||ddS)Nrrr)r)rr splitlinesrencoderr'rcouterrrrrtest_infile_stdoutds  zTestTool.test_infile_stdoutcCs^d}td}||}tdd|\}}}||d|||||ddS)Nu{"msg": "こんにちは"}zP { "msg": "\u3053\u3093\u306b\u3061\u306f" } rrrr*)textwrapdedentr,r)rrr+)rrrr'r.r/r0rrrtest_non_ascii_infileks  zTestTool.test_non_ascii_infilecCs|}tjd}tdd||\}}}|tj|t|d"}|| |j Wdn1sf0Y||d||d||ddS)N.outrrrrr*) r)rr!rr#r$r%r"rreadr)rr'outfiler.r/r0r(rrrtest_infile_outfilezs  0  zTestTool.test_infile_outfilecCs|}tdd||\}}}t|ddd"}|||jWdn1sR0Y||d||d||ddS)Nrrr6rrrr*)r)rr"rr7r)rr'r.r/r0r(rrrtest_writing_in_places0  zTestTool.test_writing_in_placecCsFtjdddf}tj||jdddd}||j|j||jddS)Nrrz --json-linesTrr ) r rrr jsonlines_rawrrjsonlines_expectrrrrrtest_jsonlinesszTestTool.test_jsonlinescCs>tddd\}}}||d||d||ddS)Nrrz-hrsusage: r*)rrZ assertTrue startswith)rr.r/r0rrrtest_help_flags zTestTool.test_help_flagcCsR|}tddd|\}}}||d|||j||ddS)Nrrz --sort-keysrr*)r)rrr+expect_without_sort_keysr,r-rrrtest_sort_keys_flags   zTestTool.test_sort_keys_flagcCsRd}td}tjddddf}tj||dddd}||j|||jd dS) N[1, 2]z5 [ 1, 2 ] rrz--indent2Trr ) r2r3r rrrrrrrZinput_rrrrrr test_indents  zTestTool.test_indentcCsJd}d}tjdddf}tj||dddd}||j|||jddS) Nz[1, 2]z[1, 2] rrz --no-indentTrr r rrrrrrrDrrrtest_no_indents zTestTool.test_no_indentcCsJd}d}tjdddf}tj||dddd}||j|||jddS) NrBz [ 1, 2 ] rrz--tabTrr rFrDrrrtest_tabs zTestTool.test_tabcCsJd}d}tjdddf}tj||dddd}||j|||jddS) Nz [ 1 , 2]z[1,2] rrz --compactTrr rFrDrrr test_compacts zTestTool.test_compactcCs|d}tjd}|tj|tddd||t|d}| }Wdn1s^0Ygd}| ||dS)N{"key":"💩"}r5rrz--no-ensure-asciirb){s "key": "💩"} r)rr!r#r$r%rr"r7r+rrr'r8flinesZexpectedrrrtest_no_ensure_ascii_flags   *z"TestTool.test_no_ensure_ascii_flagcCs~|d}tjd}|tj|tdd||t|d}| }Wdn1s\0Ygd}| ||dS)NrJr5rrrK)rLs "key": "\ud83d\udca9"rMrNrOrrrtest_ensure_ascii_defaults   *z"TestTool.test_ensure_ascii_defaultwin32z-The test is failed with ValueError on WindowscCsHtjddg}tj|tjtjd}|j|d||j t j dS)Nrr)rstdins"{}") r rrPopenPIPErclose communicater returncodeerrnoEPIPE)rcmdprocrrrtest_broken_pipe_errors   zTestTool.test_broken_pipe_error)N)__name__ __module__ __qualname__rr2r3r@rr;r<rr)r1r4r9r:r=r?rArErGrHrIrRrSunittestZskipIfr platformr_rrrrr s,          r) r[r$r r2rcrtestrZtest.support.script_helperrZTestCaserrrrrs