(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"diff.*.textconv tests">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: find_diff body: (BraceGroup children: [ (Pipeline children: [(C {(sed)} {(SQ <"1,/^index /d">)}) (C {(sed)} {(SQ <"/^-- $/,$d">)})] negated: False ) ] spids: [18] ) spids: [14 17] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.binary)} spids:[40]) (HereDoc op_id: Redir_DLess fd: -1 body: {("Binary files a/file and b/file differ\n")} do_expansion: False here_end: EOF was_filled: True spids: [43] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.text)} spids:[51]) (HereDoc op_id: Redir_DLess fd: -1 body: {("--- a/file\n") ("+++ b/file\n") ("@@ -1 +1,2 @@\n") (" 0\n") ("+1\n")} do_expansion: False here_end: EOF was_filled: True spids: [54] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(hexdump)} spids:[62]) (HereDoc op_id: Redir_DLess fd: -1 body: {("#!/bin/sh\n") ("\"$PERL_PATH\" -e '$/ = undef; $_ = <>; s/./ord($&)/ge; print $_' < \"$1\"\n") } do_expansion: False here_end: EOF was_filled: True spids: [65] ) ] ) (C {(chmod)} {(Lit_Other "+") (x)} {(hexdump)}) (C {(test_expect_success)} {(SQ <"setup binary file with history">)} { (SQ <"\n"> <"\tprintf \"\\\\0\\\\n\" >file &&\n"> <"\tgit add file &&\n"> <"\tgit commit -m one &&\n"> <"\tprintf \"\\\\01\\\\n\" >>file &&\n"> <"\tgit add file &&\n"> <"\tgit commit -m two\n"> ) } ) (C {(test_expect_success)} {(SQ <"file is considered binary by porcelain">)} { (SQ <"\n"> <"\tgit diff HEAD^ HEAD >diff &&\n"> <"\tfind_diff <diff >actual &&\n"> <"\ttest_cmp expect.binary actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"file is considered binary by plumbing">)} { (SQ <"\n"> <"\tgit diff-tree -p HEAD^ HEAD >diff &&\n"> <"\tfind_diff <diff >actual &&\n"> <"\ttest_cmp expect.binary actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup textconv filters">)} { (SQ <"\n"> <"\techo file diff=foo >.gitattributes &&\n"> <"\tgit config diff.foo.textconv \"\\\"$(pwd)\\\"\"/hexdump &&\n"> <"\tgit config diff.fail.textconv false\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff produces text">)} { (SQ <"\n"> <"\tgit diff HEAD^ HEAD >diff &&\n"> <"\tfind_diff <diff >actual &&\n"> <"\ttest_cmp expect.text actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"show commit produces text">)} { (SQ <"\n"> <"\tgit show HEAD >diff &&\n"> <"\tfind_diff <diff >actual &&\n"> <"\ttest_cmp expect.text actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff-tree produces binary">)} { (SQ <"\n"> <"\tgit diff-tree -p HEAD^ HEAD >diff &&\n"> <"\tfind_diff <diff >actual &&\n"> <"\ttest_cmp expect.binary actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log produces text">)} { (SQ <"\n"> <"\tgit log -1 -p >log &&\n"> <"\tfind_diff <log >actual &&\n"> <"\ttest_cmp expect.text actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"format-patch produces binary">)} { (SQ <"\n"> <"\tgit format-patch --no-binary --stdout HEAD^ >patch &&\n"> <"\tfind_diff <patch >actual &&\n"> <"\ttest_cmp expect.binary actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"status -v produces text">)} { (SQ <"\n"> <"\tgit reset --soft HEAD^ &&\n"> <"\tgit status -v >diff &&\n"> <"\tfind_diff <diff >actual &&\n"> <"\ttest_cmp expect.text actual &&\n"> <"\tgit reset --soft HEAD@{1}\n"> ) } ) (C {(test_expect_success)} {(SQ <"show blob produces binary">)} { (SQ <"\n"> <"\tgit show HEAD:file >actual &&\n"> <"\tprintf \"\\\\0\\\\n\\\\01\\\\n\" >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"show --textconv blob produces text">)} { (SQ <"\n"> <"\tgit show --textconv HEAD:file >actual &&\n"> <"\tprintf \"0\\\\n1\\\\n\" >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"show --no-textconv blob produces binary">)} { (SQ <"\n"> <"\tgit show --no-textconv HEAD:file >actual &&\n"> <"\tprintf \"\\\\0\\\\n\\\\01\\\\n\" >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"grep-diff (-G) operates on textconv data (add)">)} { (SQ <"\n"> <"\techo one >expect &&\n"> <"\tgit log --root --format=%s -G0 >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"grep-diff (-G) operates on textconv data (modification)">)} { (SQ <"\n"> <"\techo two >expect &&\n"> <"\tgit log --root --format=%s -G1 >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"pickaxe (-S) operates on textconv data (add)">)} { (SQ <"\n"> <"\techo one >expect &&\n"> <"\tgit log --root --format=%s -S0 >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"pickaxe (-S) operates on textconv data (modification)">)} { (SQ <"\n"> <"\techo two >expect &&\n"> <"\tgit log --root --format=%s -S1 >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.stat)} spids:[323]) (HereDoc op_id: Redir_DLess fd: -1 body: {(" file | Bin 2 -> 4 bytes\n") (" 1 file changed, 0 insertions(+), 0 deletions(-)\n")} do_expansion: False here_end: EOF was_filled: True spids: [326] ) ] ) (C {(test_expect_success)} {(SQ <"diffstat does not run textconv">)} { (SQ <"\n"> <"\techo file diff=fail >.gitattributes &&\n"> <"\tgit diff --stat HEAD^ HEAD >actual &&\n"> <"\ttest_i18ncmp expect.stat actual &&\n"> <"\n"> <"\thead -n1 <expect.stat >expect.line1 &&\n"> <"\thead -n1 <actual >actual.line1 &&\n"> <"\ttest_cmp expect.line1 actual.line1\n"> ) } ) (SimpleCommand words: [{(echo)} {(file)} {(Lit_VarLike "diff=") (foo)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(.gitattributes)} spids:[358])] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.typechange)} spids:[364]) (HereDoc op_id: Redir_DLess fd: -1 body: {("--- a/file\n") ("+++ /dev/null\n") ("@@ -1,2 +0,0 @@\n") ("-0\n") ("-1\n") ("diff --git a/file b/file\n") ("new file mode 120000\n") ("index 0000000..67be421\n") ("--- /dev/null\n") ("+++ b/file\n") ("@@ -0,0 +1 @@\n") ("+frotz\n") ("\\ No newline at end of file\n") } do_expansion: False here_end: EOF was_filled: True spids: [367] ) ] ) (C {(test_expect_success)} {(SQ <"textconv does not act on symlinks">)} { (SQ <"\n"> <"\trm -f file &&\n"> <"\ttest_ln_s_add frotz file &&\n"> <"\tgit commit -m typechange &&\n"> <"\tgit show >diff &&\n"> <"\tfind_diff <diff >actual &&\n"> <"\ttest_cmp expect.typechange actual\n"> ) } ) (C {(test_done)}) ] )