(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git rev-list --pretty=format test">)} spids: [11] ) ] spids: [11] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-terminal.sh)}) (C {(test_tick)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_encoding) op: Equal rhs: {(DQ (ISO8859-1))} spids: [34] ) ] spids: [34] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:added_utf8_part) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(printf)} { (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\3">) (03) (EscapedLiteralPart token: <Lit_EscapedChar "\\2"> ) (74) ) } ) ] ) left_token: <Left_CommandSub "$("> spids: [50 59] ) } spids: [49] ) ] spids: [49] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:added_utf8_part_iso88591) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$added_utf8_part"))}) (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [62 80] ) } spids: [61] ) ] spids: [61] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:added) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ("added (hinzugef") (${ VSub_Name added_utf8_part) ("gt) foo"))} ) ] ) left_token: <Left_CommandSub "$("> spids: [83 93] ) } spids: [82] ) ] spids: [82] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:added_iso88591) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$added"))}) (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [96 114] ) } spids: [95] ) ] spids: [95] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:changed_utf8_part) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(printf)} { (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\3">) (03) (EscapedLiteralPart token: <Lit_EscapedChar "\\2"> ) (44) ) } ) ] ) left_token: <Left_CommandSub "$("> spids: [120 129] ) } spids: [119] ) ] spids: [119] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:changed_utf8_part_iso88591) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$changed_utf8_part"))}) (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [132 150] ) } spids: [131] ) ] spids: [131] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:changed) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ("changed (ge") (${ VSub_Name changed_utf8_part) ("ndert) foo"))} ) ] ) left_token: <Left_CommandSub "$("> spids: [153 163] ) } spids: [152] ) ] spids: [152] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:changed_iso88591) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$changed"))}) (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [166 184] ) } spids: [165] ) ] spids: [165] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:truncate_count) op:Equal rhs:{(20)} spids:[199])] spids: [199] ) (C {(test_expect_success)} {(SQ <setup>)} { (SQ <"\n"> <"\t: >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit config i18n.commitEncoding $test_encoding &&\n"> <"\techo \"$added_iso88591\" | git commit -F - &&\n"> <"\thead1=$(git rev-parse --verify HEAD) &&\n"> <"\thead1_short=$(git rev-parse --verify --short $head1) &&\n"> <"\ttree1=$(git rev-parse --verify HEAD:) &&\n"> <"\ttree1_short=$(git rev-parse --verify --short $tree1) &&\n"> <"\techo \"$changed\" > foo &&\n"> <"\techo \"$changed_iso88591\" | git commit -a -F - &&\n"> <"\thead2=$(git rev-parse --verify HEAD) &&\n"> <"\thead2_short=$(git rev-parse --verify --short $head2) &&\n"> <"\ttree2=$(git rev-parse --verify HEAD:) &&\n"> <"\ttree2_short=$(git rev-parse --verify --short $tree2) &&\n"> <"\tgit config --unset i18n.commitEncoding\n"> ) } ) (FuncDef name: test_format body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(expect.) ($ VSub_Number "$1")} spids: [242] ) ] ) (C {(test_expect_) (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(success)}) spids: [248 252] ) } {(DQ ("format ") ($ VSub_Number "$1"))} { (DQ ("\n") ("\t\tgit rev-list --pretty=format:'") ($ VSub_Number "$2") ("' master >output.") ($ VSub_Number "$1") (" &&\n") ("\t\ttest_cmp expect.") ($ VSub_Number "$1") (" output.") ($ VSub_Number "$1") ("\n") ("\t") ) } ) ] spids: [237] ) spids: [232 236] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AUTO_COLOR) op: Equal rhs: {(SQ <"%C(auto,red)foo%C(auto,reset)">)} spids: [280] ) ] spids: [280] ) (FuncDef name: has_color body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(printf)} {(SQ <"\\033[31mfoo\\033[m\\n">)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[299])] ) (C {(test_cmp)} {(expect)} {(DQ ($ VSub_Number "$1"))}) ] op_id: Op_DAmp ) ] spids: [290] ) spids: [285 289] ) (FuncDef name: has_no_color body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(echo)} {(foo)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[328])] ) (C {(test_cmp)} {(expect)} {(DQ ($ VSub_Number "$1"))}) ] op_id: Op_DAmp ) ] spids: [321] ) spids: [316 320] ) (SimpleCommand words: [{(test_format)} {(percent)} {(Lit_Other "%") (Lit_Other "%") (h)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("%h\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("%h\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [353] ) ] ) (SimpleCommand words: [{(test_format)} {(hash)} {(Lit_Other "%") (H) (Lit_Other "%") (n) (Lit_Other "%") (h)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$head2_short") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$head1_short") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [376] ) ] ) (SimpleCommand words: [{(test_format)} {(tree)} {(Lit_Other "%") (T) (Lit_Other "%") (n) (Lit_Other "%") (t)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$tree2") ("\n") ($ VSub_Name "$tree2_short") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$tree1") ("\n") ($ VSub_Name "$tree1_short") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [405] ) ] ) (SimpleCommand words: [{(test_format)} {(parents)} {(Lit_Other "%") (P) (Lit_Other "%") (n) (Lit_Other "%") (p)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$head1_short") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("\n") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [434] ) ] ) (SimpleCommand words: [ {(test_format)} {(author)} {(Lit_Other "%") (an) (Lit_Other "%") (n) (Lit_Other "%") (ae) (Lit_Other "%") (n) (Lit_Other "%") (ad) (Lit_Other "%") (n) (Lit_Other "%") (aD) (Lit_Other "%") (n) (Lit_Other "%") (at) } ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("A U Thor\n") ("author@example.com\n") ("Thu Apr 7 15:13:13 2005 -0700\n") ("Thu, 7 Apr 2005 15:13:13 -0700\n") ("1112911993\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("A U Thor\n") ("author@example.com\n") ("Thu Apr 7 15:13:13 2005 -0700\n") ("Thu, 7 Apr 2005 15:13:13 -0700\n") ("1112911993\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [476] ) ] ) (SimpleCommand words: [ {(test_format)} {(committer)} {(Lit_Other "%") (cn) (Lit_Other "%") (n) (Lit_Other "%") (ce) (Lit_Other "%") (n) (Lit_Other "%") (cd) (Lit_Other "%") (n) (Lit_Other "%") (cD) (Lit_Other "%") (n) (Lit_Other "%") (ct) } ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("C O Mitter\n") ("committer@example.com\n") ("Thu Apr 7 15:13:13 2005 -0700\n") ("Thu, 7 Apr 2005 15:13:13 -0700\n") ("1112911993\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("C O Mitter\n") ("committer@example.com\n") ("Thu Apr 7 15:13:13 2005 -0700\n") ("Thu, 7 Apr 2005 15:13:13 -0700\n") ("1112911993\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [519] ) ] ) (SimpleCommand words: [{(test_format)} {(encoding)} {(Lit_Other "%") (e)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$test_encoding") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$test_encoding") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [546] ) ] ) (SimpleCommand words: [{(test_format)} {(subject)} {(Lit_Other "%") (s)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$changed") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$added") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [567] ) ] ) (SimpleCommand words: [ {(test_format)} {(subject-truncated)} {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",trunc)%s"))} ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("changed (ge") (${ VSub_Name changed_utf8_part) ("ndert)..\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("added (hinzugef") (${ VSub_Name added_utf8_part) ("gt..\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [591] ) ] ) (SimpleCommand words: [{(test_format)} {(body)} {(Lit_Other "%") (b)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n")) } do_expansion: True here_end: EOF was_filled: True spids: [618] ) ] ) (SimpleCommand words: [{(test_format)} {(raw-body)} {(Lit_Other "%") (B)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$changed") ("\n") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$added") ("\n") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [635] ) ] ) (SimpleCommand words: [ {(test_format)} {(colors)} {(Lit_Other "%") (Credfoo) (Lit_Other "%") (Cgreenbar) (Lit_Other "%") (Cbluebaz) (Lit_Other "%") (Cresetxyzzy) } ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("\u001b[31mfoo\u001b[32mbar\u001b[34mbaz\u001b[mxyzzy\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("\u001b[31mfoo\u001b[32mbar\u001b[34mbaz\u001b[mxyzzy\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [664] ) ] ) (SimpleCommand words: [{(test_format)} {(advanced-colors)} {(SQ <"%C(red yellow bold)foo%C(reset)">)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("\u001b[1;31;43mfoo\u001b[m\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("\u001b[1;31;43mfoo\u001b[m\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [684] ) ] ) (C {(test_expect_success)} {(SQ <"%C(auto,...) does not enable color by default">)} {(SQ <"\n"> <"\tgit log --format=$AUTO_COLOR -1 >actual &&\n"> <"\thas_no_color actual\n">)} ) (C {(test_expect_success)} {(SQ <"%C(auto,...) enables colors for color.diff">)} { (SQ <"\n"> <"\tgit -c color.diff=always log --format=$AUTO_COLOR -1 >actual &&\n"> <"\thas_color actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"%C(auto,...) enables colors for color.ui">)} { (SQ <"\n"> <"\tgit -c color.ui=always log --format=$AUTO_COLOR -1 >actual &&\n"> <"\thas_color actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"%C(auto,...) respects --color">)} { (SQ <"\n"> <"\tgit log --format=$AUTO_COLOR -1 --color >actual &&\n"> <"\thas_color actual\n">) } ) (C {(test_expect_success)} {(SQ <"%C(auto,...) respects --no-color">)} { (SQ <"\n"> <"\tgit -c color.ui=always log --format=$AUTO_COLOR -1 --no-color >actual &&\n"> <"\thas_no_color actual\n"> ) } ) (C {(test_expect_success)} {(TTY)} {(SQ <"%C(auto,...) respects --color=auto (stdout is tty)">)} { (SQ <"\n"> <"\ttest_terminal env TERM=vt100 \\\n"> <"\t\tgit log --format=$AUTO_COLOR -1 --color=auto >actual &&\n"> <"\thas_color actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"%C(auto,...) respects --color=auto (stdout not tty)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tTERM=vt100 && export TERM &&\n"> <"\t\tgit log --format=$AUTO_COLOR -1 --color=auto >actual &&\n"> <"\t\thas_no_color actual\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"%C(auto) respects --color">)} { (SQ <"\n"> <"\tgit log --color --format=\"%C(auto)%H\" -1 >actual &&\n"> <"\tprintf \"\\\\033[33m%s\\\\033[m\\\\n\" $(git rev-parse HEAD) >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"%C(auto) respects --no-color">)} { (SQ <"\n"> <"\tgit log --no-color --format=\"%C(auto)%H\" -1 >actual &&\n"> <"\tgit rev-parse HEAD >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(commit-msg)} spids:[831]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("Test printing of complex bodies\n") ("\n") ("This commit message is much longer than the others,\n") ("and it will be encoded in ") ($ VSub_Name "$test_encoding") (". We should therefore\n") ("include an ISO8859 character: \u00a1bueno!\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [835] ) ] ) (C {(test_expect_success)} {(SQ <"setup complex body">)} { (SQ <"\n"> <"\tgit config i18n.commitencoding $test_encoding &&\n"> <"\techo change2 >foo && git commit -a -F commit-msg &&\n"> <"\thead3=$(git rev-parse --verify HEAD) &&\n"> <"\thead3_short=$(git rev-parse --short $head3)\n"> ) } ) (SimpleCommand words: [{(test_format)} {(complex-encoding)} {(Lit_Other "%") (e)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ($ VSub_Name "$test_encoding") ("\n") ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$test_encoding") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$test_encoding") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [868] ) ] ) (SimpleCommand words: [{(test_format)} {(complex-subject)} {(Lit_Other "%") (s)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test printing of complex bodies\n") ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$changed_iso88591") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$added_iso88591") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [894] ) ] ) (SimpleCommand words: [ {(test_format)} {(complex-subject-trunc)} {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",trunc)%s"))} ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test printing of c..\n") ("commit ") ($ VSub_Name "$head2") ("\n") ("changed (ge") (${ VSub_Name changed_utf8_part_iso88591) ("ndert)..\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("added (hinzugef") (${ VSub_Name added_utf8_part_iso88591) ("gt..\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [922] ) ] ) (SimpleCommand words: [ {(test_format)} {(complex-subject-mtrunc)} {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",mtrunc)%s"))} ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test prin..ex bodies\n") ("commit ") ($ VSub_Name "$head2") ("\n") ("changed (..dert) foo\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("added (hi..f") (${ VSub_Name added_utf8_part_iso88591) ("gt) foo\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [956] ) ] ) (SimpleCommand words: [ {(test_format)} {(complex-subject-ltrunc)} {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",ltrunc)%s"))} ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") (".. of complex bodies\n") ("commit ") ($ VSub_Name "$head2") ("\n") ("..ged (ge") (${ VSub_Name changed_utf8_part_iso88591) ("ndert) foo\n") ("commit ") ($ VSub_Name "$head1") ("\n") (".. (hinzugef") (${ VSub_Name added_utf8_part_iso88591) ("gt) foo\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [986] ) ] ) (C {(test_expect_success)} {(SQ <"prepare expected messages (for test %b)">)} { (SQ <"\n"> <"\tcat <<-EOF >expected.utf-8 &&\n"> <"\tcommit $head3\n"> <"\tThis commit message is much longer than the others,\n"> <"\tand it will be encoded in $test_encoding. We should therefore\n"> <"\tinclude an ISO8859 character: \u00a1bueno!\n"> <"\n"> <"\tcommit $head2\n"> <"\tcommit $head1\n"> <"\tEOF\n"> <"\ticonv -f utf-8 -t $test_encoding expected.utf-8 >expected.ISO8859-1\n"> ) } ) (SimpleCommand words: [{(test_format)} {(complex-body)} {(Lit_Other "%") (b)}] redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(expected.ISO8859-1)} spids:[1038])] ) (C {(git)} {(config)} {(--unset)} {(i18n.commitEncoding)}) (SimpleCommand words: [{(test_format)} {(complex-subject-commitencoding-unset)} {(Lit_Other "%") (s)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test printing of complex bodies\n") ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$changed") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$added") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [1064] ) ] ) (SimpleCommand words: [ {(test_format)} {(complex-subject-commitencoding-unset-trunc)} {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",trunc)%s"))} ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test printing of c..\n") ("commit ") ($ VSub_Name "$head2") ("\n") ("changed (ge") (${ VSub_Name changed_utf8_part) ("ndert)..\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("added (hinzugef") (${ VSub_Name added_utf8_part) ("gt..\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [1092] ) ] ) (SimpleCommand words: [ {(test_format)} {(complex-subject-commitencoding-unset-mtrunc)} {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",mtrunc)%s"))} ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test prin..ex bodies\n") ("commit ") ($ VSub_Name "$head2") ("\n") ("changed (..dert) foo\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("added (hi..f") (${ VSub_Name added_utf8_part) ("gt) foo\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [1126] ) ] ) (SimpleCommand words: [ {(test_format)} {(complex-subject-commitencoding-unset-ltrunc)} {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",ltrunc)%s"))} ] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("commit ") ($ VSub_Name "$head3") ("\n") (".. of complex bodies\n") ("commit ") ($ VSub_Name "$head2") ("\n") ("..ged (ge") (${ VSub_Name changed_utf8_part) ("ndert) foo\n") ("commit ") ($ VSub_Name "$head1") ("\n") (".. (hinzugef") (${ VSub_Name added_utf8_part) ("gt) foo\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [1156] ) ] ) (SimpleCommand words: [{(test_format)} {(complex-body-commitencoding-unset)} {(Lit_Other "%") (b)}] redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(expected.utf-8)} spids:[1187])] ) (C {(test_expect_success)} {(SQ <"%x00 shows NUL">)} { (SQ <"\n"> <"\techo >expect commit $head3 &&\n"> <"\techo >>expect fooQbar &&\n"> <"\tgit rev-list -1 --format=foo%x00bar HEAD >actual.nul &&\n"> <"\tnul_to_q <actual.nul >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"%ad respects --date=">)} { (SQ <"\n"> <"\techo 2005-04-07 >expect.ad-short &&\n"> <"\tgit log -1 --date=short --pretty=tformat:%ad >output.ad-short master &&\n"> <"\ttest_cmp expect.ad-short output.ad-short\n"> ) } ) (C {(test_expect_success)} {(SQ <"empty email">)} { (SQ <"\n"> <"\ttest_tick &&\n"> <"\tC=$(GIT_AUTHOR_EMAIL= git commit-tree HEAD^{tree} </dev/null) &&\n"> <"\tA=$(git show --pretty=format:%an,%ae,%ad%n -s $C) &&\n"> <"\tverbose test \"$A\" = \"A U Thor,,Thu Apr 7 15:14:13 2005 -0700\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"del LF before empty (1)">)} { (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s%n%-b%nThanks%n\" HEAD^^ >actual &&\n"> <"\ttest_line_count = 2 actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"del LF before empty (2)">)} { (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s%n%-b%nThanks%n\" HEAD >actual &&\n"> <"\ttest_line_count = 6 actual &&\n"> <"\tgrep \"^$\" actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"add LF before non-empty (1)">)} { (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s%+b%nThanks%n\" HEAD^^ >actual &&\n"> <"\ttest_line_count = 2 actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"add LF before non-empty (2)">)} { (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s%+b%nThanks%n\" HEAD >actual &&\n"> <"\ttest_line_count = 6 actual &&\n"> <"\tgrep \"^$\" actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"add SP before non-empty (1)">)} { (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s% bThanks\" HEAD^^ >actual &&\n"> <"\ttest $(wc -w <actual) = 3\n"> ) } ) (C {(test_expect_success)} {(SQ <"add SP before non-empty (2)">)} { (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s% sThanks\" HEAD^^ >actual &&\n"> <"\ttest $(wc -w <actual) = 6\n"> ) } ) (C {(test_expect_success)} {(SQ <--abbrev>)} { (SQ <"\n"> <"\techo SHORT SHORT SHORT >expect2 &&\n"> <"\techo LONG LONG LONG >expect3 &&\n"> <"\tgit log -1 --format=\"%h %h %h\" HEAD >actual1 &&\n"> <"\tgit log -1 --abbrev=5 --format=\"%h %h %h\" HEAD >actual2 &&\n"> <"\tgit log -1 --abbrev=5 --format=\"%H %H %H\" HEAD >actual3 &&\n"> <"\tsed -e \"s/$_x40/LONG/g\" -e \"s/$_x05/SHORT/g\" <actual2 >fuzzy2 &&\n"> <"\tsed -e \"s/$_x40/LONG/g\" -e \"s/$_x05/SHORT/g\" <actual3 >fuzzy3 &&\n"> <"\ttest_cmp expect2 fuzzy2 &&\n"> <"\ttest_cmp expect3 fuzzy3 &&\n"> <"\t! test_cmp actual1 actual2\n"> ) } ) (C {(test_expect_success)} {(SQ <"%H is not affected by --abbrev-commit">)} { (SQ <"\n"> <"\tgit log -1 --format=%H --abbrev-commit --abbrev=20 HEAD >actual &&\n"> <"\tlen=$(wc -c <actual) &&\n"> <"\ttest $len = 41\n"> ) } ) (C {(test_expect_success)} {(SQ <"%h is not affected by --abbrev-commit">)} { (SQ <"\n"> <"\tgit log -1 --format=%h --abbrev-commit --abbrev=20 HEAD >actual &&\n"> <"\tlen=$(wc -c <actual) &&\n"> <"\ttest $len = 21\n"> ) } ) (C {(test_expect_success)} {(SQ <"\"%h %gD: %gs\" is same as git-reflog">)} { (SQ <"\n"> <"\tgit reflog >expect &&\n"> <"\tgit log -g --format=\"%h %gD: %gs\" >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"\"%h %gD: %gs\" is same as git-reflog (with date)">)} { (SQ <"\n"> <"\tgit reflog --date=raw >expect &&\n"> <"\tgit log -g --format=\"%h %gD: %gs\" --date=raw >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"\"%h %gD: %gs\" is same as git-reflog (with --abbrev)">)} { (SQ <"\n"> <"\tgit reflog --abbrev=13 --date=raw >expect &&\n"> <"\tgit log -g --abbrev=13 --format=\"%h %gD: %gs\" --date=raw >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"%gd shortens ref name">)} { (SQ <"\n"> <"\techo \"master@{0}\" >expect.gd-short &&\n"> <"\tgit log -g -1 --format=%gd refs/heads/master >actual.gd-short &&\n"> <"\ttest_cmp expect.gd-short actual.gd-short\n"> ) } ) (C {(test_expect_success)} {(SQ <"reflog identity">)} { (SQ <"\n"> <"\techo \"C O Mitter:committer@example.com\" >expect &&\n"> <"\tgit log -g -1 --format=\"%gn:%ge\" >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"oneline with empty message">)} { (SQ <"\n"> <"\tgit commit -m \"dummy\" --allow-empty &&\n"> <"\tgit commit -m \"dummy\" --allow-empty &&\n"> <"\tgit filter-branch --msg-filter \"sed -e s/dummy//\" HEAD^^.. &&\n"> <"\tgit rev-list --oneline HEAD >test.txt &&\n"> <"\ttest_line_count = 5 test.txt &&\n"> <"\tgit rev-list --oneline --graph HEAD >testg.txt &&\n"> <"\ttest_line_count = 5 testg.txt\n"> ) } ) (C {(test_expect_success)} {(SQ <"single-character name is parsed correctly">)} { (SQ <"\n"> <"\tgit commit --author=\"a <a@example.com>\" --allow-empty -m foo &&\n"> <"\techo \"a <a@example.com>\" >expect &&\n"> <"\tgit log -1 --format=\"%an <%ae>\" >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"unused %G placeholders are passed through">)} { (SQ <"\n"> <"\techo \"%GX %G\" >expect &&\n"> <"\tgit log -1 --format=\"%GX %G\" >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_done)}) ] )