(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"Binary diff and apply\n">)} spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.binary-numstat)} spids:[26]) (HereDoc op_id: Redir_DLess fd: -1 body: {("1\t1\ta\n") ("-\t-\tb\n") ("1\t1\tc\n") ("-\t-\td\n")} do_expansion: False here_end: EOF was_filled: True spids: [29] ) ] ) (C {(test_expect_success)} {(SQ <"prepare repository">)} { (SQ <"\n"> <"\techo AIT >a && echo BIT >b && echo CIT >c && echo DIT >d &&\n"> <"\tgit update-index --add a b c d &&\n"> <"\techo git >a &&\n"> <"\tcat \"$TEST_DIRECTORY\"/test-binary-1.png >b &&\n"> <"\techo git >c &&\n"> <"\tcat b b >d\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[53]) (HereDoc op_id: Redir_DLess fd: -1 body: {(" a | 2 +-\n") (" b | Bin\n") (" c | 2 +-\n") (" d | Bin\n") (" 4 files changed, 2 insertions(+), 2 deletions(-)\n") } do_expansion: False here_end: EOF was_filled: True spids: [57] ) ] ) (C {(test_expect_success)} {(SQ <"apply --stat output for binary file change">)} { (SQ <"\n"> <"\tgit diff >diff &&\n"> <"\tgit apply --stat --summary <diff >current &&\n"> <"\ttest_i18ncmp expected current\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff --shortstat output for binary file change">)} { (SQ <"\n"> <"\ttail -n 1 expected >expect &&\n"> <"\tgit diff --shortstat >current &&\n"> <"\ttest_i18ncmp expect current\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff --shortstat output for binary file change only">)} { (SQ <"\n"> <"\techo \" 1 file changed, 0 insertions(+), 0 deletions(-)\" >expected &&\n"> <"\tgit diff --shortstat -- b >current &&\n"> <"\ttest_i18ncmp expected current\n"> ) } ) (C {(test_expect_success)} {(SQ <"apply --numstat notices binary file change">)} { (SQ <"\n"> <"\tgit diff >diff &&\n"> <"\tgit apply --numstat <diff >current &&\n"> <"\ttest_cmp expect.binary-numstat current\n"> ) } ) (C {(test_expect_success)} {(SQ <"apply --numstat understands diff --binary format">)} { (SQ <"\n"> <"\tgit diff --binary >diff &&\n"> <"\tgit apply --numstat <diff >current &&\n"> <"\ttest_cmp expect.binary-numstat current\n"> ) } ) (C {(test_expect_success)} {(C_LOCALE_OUTPUT)} {(SQ <"apply detecting corrupt patch correctly">)} { (SQ <"\n"> <"\tgit diff >output &&\n"> <"\tsed -e \"s/-CIT/xCIT/\" <output >broken &&\n"> <"\ttest_must_fail git apply --stat --summary broken 2>detected &&\n"> <"\tdetected=$(cat detected) &&\n"> <"\tdetected=$(expr \"$detected\" : \"error.*at line \\\\([0-9]*\\\\)\\$\") &&\n"> <"\tdetected=$(sed -ne \"${detected}p\" broken) &&\n"> <"\ttest \"$detected\" = xCIT\n"> ) } ) (C {(test_expect_success)} {(C_LOCALE_OUTPUT)} {(SQ <"apply detecting corrupt patch correctly">)} { (SQ <"\n"> <"\tgit diff --binary | sed -e \"s/-CIT/xCIT/\" >broken &&\n"> <"\ttest_must_fail git apply --stat --summary broken 2>detected &&\n"> <"\tdetected=$(cat detected) &&\n"> <"\tdetected=$(expr \"$detected\" : \"error.*at line \\\\([0-9]*\\\\)\\$\") &&\n"> <"\tdetected=$(sed -ne \"${detected}p\" broken) &&\n"> <"\ttest \"$detected\" = xCIT\n"> ) } ) (C {(test_expect_success)} {(SQ <"initial commit">)} {(SQ <"git commit -a -m initial">)}) (C {(test_expect_success)} {(SQ <"diff-index with --binary">)} { (SQ <"\n"> <"\techo AIT >a && mv b e && echo CIT >c && cat e >d &&\n"> <"\tgit update-index --add --remove a b c d e &&\n"> <"\ttree0=$(git write-tree) &&\n"> <"\tgit diff --cached --binary >current &&\n"> <"\tgit apply --stat --summary current\n"> ) } ) (C {(test_expect_success)} {(SQ <"apply binary patch">)} { (SQ <"\n"> <"\tgit reset --hard &&\n"> <"\tgit apply --binary --index <current &&\n"> <"\ttree1=$(git write-tree) &&\n"> <"\ttest \"$tree1\" = \"$tree0\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff --no-index with binary creation">)} { (SQ <"\n"> <"\techo Q | q_to_nul >binary &&\n"> <"\t(: hide error code from diff, which just indicates differences\n"> <"\t git diff --binary --no-index /dev/null binary >current ||\n"> <"\t true\n"> <"\t) &&\n"> <"\trm binary &&\n"> <"\tgit apply --binary <current &&\n"> <"\techo Q >expected &&\n"> <"\tnul_to_q <binary >actual &&\n"> <"\ttest_cmp expected actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[244]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ (" binfile | Bin 0 -> 1026 bytes\n") ( " textfile | 10000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" ) ) } do_expansion: True here_end: EOF was_filled: True spids: [247] ) ] ) (C {(test_expect_success)} {(SQ <"diff --stat with binary files and big change count">)} { (SQ <"\n"> <"\tprintf \"\\01\\00%1024d\" 1 >binfile &&\n"> <"\tgit add binfile &&\n"> <"\ti=0 &&\n"> <"\twhile test $i -lt 10000; do\n"> <"\t\techo $i &&\n"> <"\t\ti=$(($i + 1))\n"> <"\tdone >textfile &&\n"> <"\tgit add textfile &&\n"> <"\tgit diff --cached --stat binfile textfile >output &&\n"> <"\tgrep \" | \" output >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_done)}) ] )