(List (Com {[LIT_CHARS cd]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /../..]}) (= scope= flags=0 words=[] bindings=[('GM_BINARY', {[LIT_CHARS out/Debug/gm]})]) (= scope= flags=0 words=[] bindings=[('OUTPUT_ACTUAL_SUBDIR', {[LIT_CHARS output-actual]})]) (= scope= flags=0 words=[] bindings=[('OUTPUT_EXPECTED_SUBDIR', {[LIT_CHARS output-expected]})]) (= scope= flags=0 words=[] bindings=[('CONFIGS', {[DQ [LIT_CHARS "--config 8888 565"]]})]) (= scope= flags=0 words=[] bindings=[('ENCOUNTERED_ANY_ERRORS', {[LIT_CHARS 0]})]) (FunctionDef compare_directories [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "compare_directories requires exactly 2 parameters, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS diff]} {[LIT_CHARS -r]} {[LIT_CHARS --exclude] [LIT_OTHER "="] [LIT_CHARS .] [LIT_OTHER "*"]} {[VarSub 1]} {[VarSub 2]}) (If (Com {[LIT_OTHER "["]} {[VarSub ?]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "failed in: compare_directories "][VarSub 1][LIT_CHARS " "][VarSub 2]]}) (= scope= flags=0 words=[] bindings=[('ENCOUNTERED_ANY_ERRORS', {[LIT_CHARS 1]})]) ) ) ) ) (FunctionDef assert_passes [] (List (= scope= flags=0 words=[] bindings=[('COMMAND', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "assert_passes "][VarSub COMMAND][LIT_CHARS " ..."]]}) (Com {[VarSub COMMAND]}) (If (Com {[LIT_OTHER "["]} {[VarSub ?]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This command was supposed to pass, but failed: ["][VarSub COMMAND][LIT_CHARS "]"]]}) (= scope= flags=0 words=[] bindings=[('ENCOUNTERED_ANY_ERRORS', {[LIT_CHARS 1]})]) ) ) ) ) (FunctionDef assert_fails [] (List (= scope= flags=0 words=[] bindings=[('COMMAND', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "assert_fails "][VarSub COMMAND][LIT_CHARS " ..."]]}) (Com {[VarSub COMMAND]}) (If (Com {[LIT_OTHER "["]} {[VarSub ?]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This command was supposed to fail, but passed: ["][VarSub COMMAND][LIT_CHARS "]"]]}) (= scope= flags=0 words=[] bindings=[('ENCOUNTERED_ANY_ERRORS', {[LIT_CHARS 1]})]) ) ) ) ) (FunctionDef gm_test [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "gm_test requires exactly 2 parameters, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('GM_ARGS', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('ACTUAL_OUTPUT_DIR', {[DQ [VarSub 2][LIT_CHARS /][VarSub OUTPUT_ACTUAL_SUBDIR]]})]) (= scope= flags=0 words=[] bindings=[('EXPECTED_OUTPUT_DIR', {[DQ [VarSub 2][LIT_CHARS /][VarSub OUTPUT_EXPECTED_SUBDIR]]})]) (= scope= flags=0 words=[] bindings=[('JSON_SUMMARY_FILE', {[DQ [VarSub ACTUAL_OUTPUT_DIR][LIT_CHARS /json-summary.txt]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub ACTUAL_OUTPUT_DIR]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub ACTUAL_OUTPUT_DIR]}) (= scope= flags=0 words=[] bindings=[('COMMAND', {[DQ [VarSub GM_BINARY][LIT_CHARS " "][VarSub GM_ARGS][LIT_CHARS " --writeJsonSummaryPath "][VarSub JSON_SUMMARY_FILE][LIT_CHARS " --writePath "][VarSub ACTUAL_OUTPUT_DIR][LIT_CHARS "/writePath --mismatchPath "][VarSub ACTUAL_OUTPUT_DIR][LIT_CHARS "/mismatchPath --missingExpectationsPath "][VarSub ACTUAL_OUTPUT_DIR][LIT_CHARS /missingExpectationsPath]]})]) (Com {[VarSub COMMAND]}) (Com {[LIT_CHARS echo]} {[VarSub ?]} < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /return_value]} "> 1), > ) (For IMAGEFILE [{[ComSub (Com {[LIT_CHARS find]} {[VarSub ACTUAL_OUTPUT_DIR]} {[LIT_CHARS -name]} {[\ LIT_ESCAPED_CHAR "\\*"] [LIT_CHARS .png]})]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "[contents of "][VarSub IMAGEFILE][LIT_CHARS "]"]]} < (FilenameRedirectNode filename={[VarSub IMAGEFILE]} "> 1), > ) ) (For IMAGEFILE [{[ComSub (Com {[LIT_CHARS find]} {[VarSub ACTUAL_OUTPUT_DIR]} {[LIT_CHARS -name]} {[\ LIT_ESCAPED_CHAR "\\*"] [LIT_CHARS .pdf]})]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "[contents of "][VarSub IMAGEFILE][LIT_CHARS "]"]]} < (FilenameRedirectNode filename={[VarSub IMAGEFILE]} "> 1), > ) ) (For DIR [{[ComSub (Com {[LIT_CHARS find]} {[VarSub ACTUAL_OUTPUT_DIR]} {[LIT_CHARS -mindepth]} {[LIT_CHARS 1]} {[LIT_CHARS -type]} {[LIT_CHARS d]})]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Created additional file to make sure directory isn't empty, because self-test cannot handle empty directories."]]} < (FilenameRedirectNode filename={[VarSub DIR] [LIT_CHARS /bogusfile]} "> 1), > ) ) (Com {[LIT_CHARS compare_directories]} {[VarSub EXPECTED_OUTPUT_DIR]} {[VarSub ACTUAL_OUTPUT_DIR]}) ) ) (FunctionDef swap_files [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "swap_files requires exactly 2 parameters, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS mv]} {[DQ [VarSub 1]]} {[DQ [VarSub 1][LIT_CHARS .tmp]]}) (Com {[LIT_CHARS mv]} {[DQ [VarSub 2]]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS mv]} {[DQ [VarSub 1][LIT_CHARS .tmp]]} {[DQ [VarSub 2]]}) ) ) (FunctionDef create_inputs_dir [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 1]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "create_inputs_dir requires exactly 1 parameter, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('INPUTS_DIR', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('IMAGES_DIR', {[VarSub INPUTS_DIR] [LIT_CHARS /images]})]) (= scope= flags=0 words=[] bindings=[('JSON_DIR', {[VarSub INPUTS_DIR] [LIT_CHARS /json]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub IMAGES_DIR]} {[VarSub JSON_DIR]}) (= scope= flags=0 words=[] bindings=[('THIS_IMAGE_DIR', {[VarSub IMAGES_DIR] [LIT_CHARS /identical-bytes]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub THIS_IMAGE_DIR]}) (Com {[VarSub GM_BINARY]} {[LIT_CHARS --hierarchy]} {[LIT_CHARS --match]} {[LIT_CHARS selftest1]} {[VarSub CONFIGS]} {[LIT_CHARS -w]} {[VarSub THIS_IMAGE_DIR]}) (Com {[VarSub GM_BINARY]} {[LIT_CHARS --hierarchy]} {[LIT_CHARS --match]} {[LIT_CHARS selftest1]} {[VarSub CONFIGS]} {[LIT_CHARS -r]} {[VarSub THIS_IMAGE_DIR]} {[LIT_CHARS --writeJsonSummaryPath]} {[VarSub JSON_DIR] [LIT_CHARS /identical-bytes.json]}) (= scope= flags=0 words=[] bindings=[('THIS_IMAGE_DIR', {[VarSub IMAGES_DIR] [LIT_CHARS /identical-pixels]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub THIS_IMAGE_DIR]}) (Com {[VarSub GM_BINARY]} {[LIT_CHARS --hierarchy]} {[LIT_CHARS --match]} {[LIT_CHARS selftest1]} {[VarSub CONFIGS]} {[LIT_CHARS -w]} {[VarSub THIS_IMAGE_DIR]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "more bytes that do not change the image pixels"]]} < (FilenameRedirectNode filename={[VarSub THIS_IMAGE_DIR] [LIT_CHARS /8888/selftest1.png]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "more bytes that do not change the image pixels"]]} < (FilenameRedirectNode filename={[VarSub THIS_IMAGE_DIR] [LIT_CHARS /565/selftest1.png]} >"> 1), > ) (Com {[VarSub GM_BINARY]} {[LIT_CHARS --hierarchy]} {[LIT_CHARS --match]} {[LIT_CHARS selftest1]} {[VarSub CONFIGS]} {[LIT_CHARS -r]} {[VarSub THIS_IMAGE_DIR]} {[LIT_CHARS --writeJsonSummaryPath]} {[VarSub JSON_DIR] [LIT_CHARS /identical-pixels.json]}) (= scope= flags=0 words=[] bindings=[('THIS_IMAGE_DIR', {[VarSub IMAGES_DIR] [LIT_CHARS /different-pixels]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub THIS_IMAGE_DIR]}) (Com {[VarSub GM_BINARY]} {[LIT_CHARS --hierarchy]} {[LIT_CHARS --match]} {[LIT_CHARS selftest]} {[VarSub CONFIGS]} {[LIT_CHARS -w]} {[VarSub THIS_IMAGE_DIR]}) (Com {[LIT_CHARS swap_files]} {[VarSub THIS_IMAGE_DIR] [LIT_CHARS /8888/selftest2.png]} {[VarSub THIS_IMAGE_DIR] [LIT_CHARS /8888/selftest1.png]}) (Com {[LIT_CHARS swap_files]} {[VarSub THIS_IMAGE_DIR] [LIT_CHARS /565/selftest2.png]} {[VarSub THIS_IMAGE_DIR] [LIT_CHARS /565/selftest1.png]}) (Com {[VarSub GM_BINARY]} {[LIT_CHARS --hierarchy]} {[LIT_CHARS --match]} {[LIT_CHARS selftest]} {[VarSub CONFIGS]} {[LIT_CHARS -r]} {[VarSub THIS_IMAGE_DIR]} {[LIT_CHARS --writeJsonSummaryPath]} {[VarSub JSON_DIR] [LIT_CHARS /different-pixels.json]}) (= scope= flags=0 words=[] bindings=[('OLD', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('NEW', {[SQ ]})]) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "0,/"][VarSub OLD][LIT_CHARS "/{s/"][VarSub OLD][LIT_CHARS /][VarSub NEW][LIT_CHARS "/}"]]} {[VarSub JSON_DIR] [LIT_CHARS /different-pixels.json]} < (FilenameRedirectNode filename={[VarSub JSON_DIR] [LIT_CHARS /different-pixels-ignore-some-failures.json]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('THIS_IMAGE_DIR', {[VarSub IMAGES_DIR] [LIT_CHARS /different-pixels-no-hierarchy]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub THIS_IMAGE_DIR]}) (Com {[VarSub GM_BINARY]} {[LIT_CHARS --match]} {[LIT_CHARS selftest2]} {[VarSub CONFIGS]} {[LIT_CHARS -w]} {[VarSub THIS_IMAGE_DIR]}) (Com {[LIT_CHARS mv]} {[VarSub THIS_IMAGE_DIR] [LIT_CHARS /selftest2_8888.png]} {[VarSub THIS_IMAGE_DIR] [LIT_CHARS /selftest1_8888.png]}) (Com {[LIT_CHARS mv]} {[VarSub THIS_IMAGE_DIR] [LIT_CHARS /selftest2_565.png]} {[VarSub THIS_IMAGE_DIR] [LIT_CHARS /selftest1_565.png]}) (Com {[VarSub GM_BINARY]} {[LIT_CHARS --match]} {[LIT_CHARS selftest1]} {[VarSub CONFIGS]} {[LIT_CHARS -r]} {[VarSub THIS_IMAGE_DIR]} {[LIT_CHARS --writeJsonSummaryPath]} {[VarSub JSON_DIR] [LIT_CHARS /different-pixels-no-hierarchy.json]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub IMAGES_DIR] [LIT_CHARS /empty-dir]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "# Comment line"]]} < (FilenameRedirectNode filename={[VarSub GM_IGNORE_FAILURES_FILE]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ ]} < (FilenameRedirectNode filename={[VarSub GM_IGNORE_FAILURES_FILE]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "# ignore any runs of the 'selftest1' test"]]} < (FilenameRedirectNode filename={[VarSub GM_IGNORE_FAILURES_FILE]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS selftest1]]} < (FilenameRedirectNode filename={[VarSub GM_IGNORE_FAILURES_FILE]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ ]} < (FilenameRedirectNode filename={[VarSub GM_IGNORE_FAILURES_FILE]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "# make sure we don't do partial matches (should NOT ignore 'selftest2' runs)"]]} < (FilenameRedirectNode filename={[VarSub GM_IGNORE_FAILURES_FILE]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS selftest]]} < (FilenameRedirectNode filename={[VarSub GM_IGNORE_FAILURES_FILE]} >"> 1), > ) ) ) (= scope= flags=0 words=[] bindings=[('GM_TESTDIR', {[LIT_CHARS gm/tests]})]) (= scope= flags=0 words=[] bindings=[('GM_INPUTS', {[VarSub GM_TESTDIR] [LIT_CHARS /inputs]})]) (= scope= flags=0 words=[] bindings=[('GM_OUTPUTS', {[VarSub GM_TESTDIR] [LIT_CHARS /outputs]})]) (= scope= flags=0 words=[] bindings=[('GM_TEMPFILES', {[VarSub GM_TESTDIR] [LIT_CHARS /tempfiles]})]) (= scope= flags=0 words=[] bindings=[('GM_IGNORE_FAILURES_FILE', {[VarSub GM_INPUTS] [LIT_CHARS /ignored-tests.txt]})]) (Com {[LIT_CHARS create_inputs_dir]} {[VarSub GM_INPUTS]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /images/identical-bytes]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /compared-against-identical-bytes-images]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/identical-bytes.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /compared-against-identical-bytes-json]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /images/identical-pixels]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /compared-against-identical-pixels-images]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/identical-pixels.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /compared-against-identical-pixels-json]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /images/different-pixels]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /compared-against-different-pixels-images]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/different-pixels.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /compared-against-different-pixels-json]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest --ignoreFailuresFile "][VarSub GM_IGNORE_FAILURES_FILE][LIT_CHARS " "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/different-pixels.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /ignoring-one-test]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/different-pixels-ignore-some-failures.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /ignoring-some-failures]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest --ignoreFailuresFile "][VarSub GM_IGNORE_FAILURES_FILE][LIT_CHARS " "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /images/empty-dir]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /compared-against-empty-dir]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r ../path/to/nowhere"]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /compared-against-nonexistent-dir]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /images/empty-dir]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /nonverbose]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " pdf -r "][VarSub GM_INPUTS][LIT_CHARS /json/identical-bytes.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /add-config-pdf]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 "][VarSub CONFIGS]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /no-readpath]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--pipe --simulatePipePlaybackFailure --verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/identical-pixels.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /pipe-playback-failure]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --hierarchy --match selftest1 selftest2 "][VarSub CONFIGS]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /intentionally-skipped-tests]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--ignoreErrorTypes ExpectationsMismatch NoGpuContext --verbose --hierarchy --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/different-pixels.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /ignore-expectations-mismatch]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/different-pixels-no-hierarchy.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /no-hierarchy]]}) (Com {[LIT_CHARS gm_test]} {[DQ [LIT_CHARS "--verbose --writeChecksumBasedFilenames --match selftest1 "][VarSub CONFIGS][LIT_CHARS " -r "][VarSub GM_INPUTS][LIT_CHARS /json/different-pixels-no-hierarchy.json]]} {[DQ [VarSub GM_OUTPUTS][LIT_CHARS /checksum-based-filenames]]}) (= scope= flags=0 words=[] bindings=[('PASSING_CASES', {[DQ [LIT_CHARS "compared-against-identical-bytes-json compared-against-identical-pixels-json"]]})]) (= scope= flags=0 words=[] bindings=[('FAILING_CASES', {[DQ [LIT_CHARS compared-against-different-pixels-json]]})]) (For CASE [{[VarSub PASSING_CASES]}]) (Com {[LIT_CHARS assert_passes]} {[DQ [LIT_CHARS "python gm/display_json_results.py "][VarSub GM_OUTPUTS][LIT_CHARS /][VarSub CASE][LIT_CHARS /][VarSub OUTPUT_EXPECTED_SUBDIR][LIT_CHARS /json-summary.txt]]}) ) (For CASE [{[VarSub FAILING_CASES]}]) (Com {[LIT_CHARS assert_fails]} {[DQ [LIT_CHARS "python gm/display_json_results.py "][VarSub GM_OUTPUTS][LIT_CHARS /][VarSub CASE][LIT_CHARS /][VarSub OUTPUT_EXPECTED_SUBDIR][LIT_CHARS /json-summary.txt]]}) ) (Com {[LIT_CHARS assert_passes]} {[DQ [LIT_CHARS "python gm/test_all.py"]]}) (Com {[LIT_CHARS echo]}) (If (Com {[LIT_OTHER "["]} {[VarSub ENCOUNTERED_ANY_ERRORS]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "All tests passed."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Some tests failed."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) )