(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'git log' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY') (/lib-gpg.sh))}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:27) (Token id:Id.Lit_Chars val:'\n' span_id:28) (Token id:Id.Lit_Chars val:'\techo one >one &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\n' span_id:33) (Token id:Id.Lit_Chars val:'\techo ichi >one &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit commit -m second &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit mv one ichi &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit commit -m third &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\tcp ichi ein &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tgit add ein &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\tgit commit -m fourth &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\n' span_id:47) (Token id:Id.Lit_Chars val:'\tmkdir a &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\techo ni >a/two &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\tgit add a/two &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\tgit commit -m fifth &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\n' span_id:53) (Token id:Id.Lit_Chars val:'\tgit rm a/two &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\tgit commit -m sixth\n' span_id:56) (Token id:Id.Lit_Chars val:'\n' span_id:57) ) } ) (command.Simple words: [ {(printf)} { (DQ (sixth) (Id.Lit_Other '\\') (nfifth) (Id.Lit_Other '\\') (nfourth) (Id.Lit_Other '\\') (nthird) (Id.Lit_Other '\\') (nsecond) (Id.Lit_Other '\\') (ninitial) ) } ] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:77) fd:-1 arg_word:{(expect)}) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:pretty span_id:84))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:88) (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id: Id.Lit_Chars val: '\tgit log --pretty="format:%s" > actual &&\n' span_id: 90 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:91) ) } ) (command.Simple words: [ {(printf)} { (DQ (sixth) (Id.Lit_Other '\\') (nfifth) (Id.Lit_Other '\\') (nfourth) (Id.Lit_Other '\\') (nthird) (Id.Lit_Other '\\') (nsecond) (Id.Lit_Other '\\') (ninitial) (Id.Lit_Other '\\') (n) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:113) fd: -1 arg_word: {(expect)} ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pretty (tformat)' span_id:120))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:124) (Token id:Id.Lit_Chars val:'\n' span_id:125) (Token id: Id.Lit_Chars val: '\tgit log --pretty="tformat:%s" > actual &&\n' span_id: 126 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:127) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pretty (shortcut)' span_id:134))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:138) (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\tgit log --pretty="%s" > actual &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:141) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:format span_id:148))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:152) (Token id:Id.Lit_Chars val:'\n' span_id:153) (Token id:Id.Lit_Chars val:'\tgit log --format="%s" > actual &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:155) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:161) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:165) fd: -1 here_begin: {(EOF)} here_end_span_id: 176 stdin_parts: [ (' This is\n') (' the sixth\n') (' commit.\n') (' This is\n') (' the fifth\n') (' commit.\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'format %w(11,1,2)' span_id:181))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id:Id.Lit_Chars val:'\n' span_id:186) (Token id: Id.Lit_Chars val: '\tgit log -2 --format="%w(11,1,2)This is the %s commit." > actual &&\n' span_id: 187 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:188) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'format %w(,1,2)' span_id:195))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:199) (Token id:Id.Lit_Chars val:'\n' span_id:200) (Token id: Id.Lit_Chars val: '\tgit log -2 --format="%w(,1,2)This is%nthe %s%ncommit." > actual &&\n' span_id: 201 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:202) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:208) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:212) fd: -1 here_begin: {(EOF)} here_end_span_id: 223 stdin_parts: [ ('804a787 sixth\n') ('394ef78 fifth\n') ('5d31159 fourth\n') ('2fbe8c0 third\n') ('f7dab8e second\n') ('3a2fdcb initial\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:oneline span_id:227))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:231) (Token id:Id.Lit_Chars val:'\n' span_id:232) (Token id:Id.Lit_Chars val:'\tgit log --oneline > actual &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:234) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff-filter=A' span_id:241))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:245) (Token id:Id.Lit_Chars val:'\n' span_id:246) (Token id: Id.Lit_Chars val: '\tgit log --no-renames --pretty="format:%s" --diff-filter=A HEAD > actual &&\n' span_id: 247 ) (Token id: Id.Lit_Chars val: '\tgit log --no-renames --pretty="format:%s" --diff-filter A HEAD > actual-separate &&\n' span_id: 248 ) (Token id:Id.Lit_Chars val:'\tprintf "fifth\\nfourth\\nthird\\ninitial" > expect &&\n' span_id:249) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:250) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual-separate\n' span_id:251) (Token id:Id.Lit_Chars val:'\n' span_id:252) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff-filter=M' span_id:259))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:263) (Token id:Id.Lit_Chars val:'\n' span_id:264) (Token id: Id.Lit_Chars val: '\tactual=$(git log --pretty="format:%s" --diff-filter=M HEAD) &&\n' span_id: 265 ) (Token id:Id.Lit_Chars val:'\texpect=$(echo second) &&\n' span_id:266) (Token id:Id.Lit_Chars val:'\tverbose test "$actual" = "$expect"\n' span_id:267) (Token id:Id.Lit_Chars val:'\n' span_id:268) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff-filter=D' span_id:275))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:279) (Token id:Id.Lit_Chars val:'\n' span_id:280) (Token id: Id.Lit_Chars val: '\tactual=$(git log --no-renames --pretty="format:%s" --diff-filter=D HEAD) &&\n' span_id: 281 ) (Token id:Id.Lit_Chars val:'\texpect=$(echo sixth ; echo third) &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\tverbose test "$actual" = "$expect"\n' span_id:283) (Token id:Id.Lit_Chars val:'\n' span_id:284) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff-filter=R' span_id:291))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:295) (Token id:Id.Lit_Chars val:'\n' span_id:296) (Token id: Id.Lit_Chars val: '\tactual=$(git log -M --pretty="format:%s" --diff-filter=R HEAD) &&\n' span_id: 297 ) (Token id:Id.Lit_Chars val:'\texpect=$(echo third) &&\n' span_id:298) (Token id:Id.Lit_Chars val:'\tverbose test "$actual" = "$expect"\n' span_id:299) (Token id:Id.Lit_Chars val:'\n' span_id:300) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff-filter=C' span_id:307))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:311) (Token id:Id.Lit_Chars val:'\n' span_id:312) (Token id: Id.Lit_Chars val: '\tactual=$(git log -C -C --pretty="format:%s" --diff-filter=C HEAD) &&\n' span_id: 313 ) (Token id:Id.Lit_Chars val:'\texpect=$(echo fourth) &&\n' span_id:314) (Token id:Id.Lit_Chars val:'\tverbose test "$actual" = "$expect"\n' span_id:315) (Token id:Id.Lit_Chars val:'\n' span_id:316) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git log --follow' span_id:323))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:327) (Token id:Id.Lit_Chars val:'\n' span_id:328) (Token id: Id.Lit_Chars val: '\tactual=$(git log --follow --pretty="format:%s" ichi) &&\n' span_id: 329 ) (Token id:Id.Lit_Chars val:'\texpect=$(echo third ; echo second ; echo initial) &&\n' span_id:330) (Token id:Id.Lit_Chars val:'\tverbose test "$actual" = "$expect"\n' span_id:331) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git config log.follow works like --follow' span_id:338))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:342) (Token id:Id.Lit_Chars val:'\ttest_config log.follow true &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\tactual=$(git log --pretty="format:%s" ichi) &&\n' span_id:344) (Token id: Id.Lit_Chars val: '\texpect=$(echo third ; echo second ; echo initial) &&\n' span_id: 345 ) (Token id:Id.Lit_Chars val:'\tverbose test "$actual" = "$expect"\n' span_id:346) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git config log.follow does not die with multiple paths' span_id: 353 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:357) (Token id:Id.Lit_Chars val:'\ttest_config log.follow true &&\n' span_id:358) (Token id:Id.Lit_Chars val:'\tgit log --pretty="format:%s" ichi ein\n' span_id:359) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git config log.follow does not die with no paths' span_id: 366 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:370) (Token id:Id.Lit_Chars val:'\ttest_config log.follow true &&\n' span_id:371) (Token id:Id.Lit_Chars val:'\tgit log --\n' span_id:372) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git config log.follow is overridden by --no-follow' span_id: 379 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:383) (Token id:Id.Lit_Chars val:'\ttest_config log.follow true &&\n' span_id:384) (Token id: Id.Lit_Chars val: '\tactual=$(git log --no-follow --pretty="format:%s" ichi) &&\n' span_id: 385 ) (Token id:Id.Lit_Chars val:'\texpect="third" &&\n' span_id:386) (Token id:Id.Lit_Chars val:'\tverbose test "$actual" = "$expect"\n' span_id:387) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:393) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:397) fd: -1 here_begin: {(EOF)} here_end_span_id: 405 stdin_parts: [('804a787 sixth\n') ('394ef78 fifth\n') ('5d31159 fourth\n')] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git log --no-walk <commits> sorts by commit time' span_id: 409 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:413) (Token id: Id.Lit_Chars val: '\tgit log --no-walk --oneline 5d31159 804a787 394ef78 > actual &&\n' span_id: 414 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:415) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git log --no-walk=sorted <commits> sorts by commit time' span_id: 422 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:426) (Token id: Id.Lit_Chars val: '\tgit log --no-walk=sorted --oneline 5d31159 804a787 394ef78 > actual &&\n' span_id: 427 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:428) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:434) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:438) fd: -1 here_begin: {(EOF)} here_end_span_id: 446 stdin_parts: [('=== 804a787 sixth\n') ('=== 394ef78 fifth\n') ('=== 5d31159 fourth\n')] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git log --line-prefix="=== " --no-walk <commits> sorts by commit time' span_id: 450 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:454) (Token id: Id.Lit_Chars val: '\tgit log --line-prefix="=== " --no-walk --oneline 5d31159 804a787 394ef78 > actual &&\n' span_id: 455 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:456) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:462) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:466) fd: -1 here_begin: {(EOF)} here_end_span_id: 474 stdin_parts: [('5d31159 fourth\n') ('804a787 sixth\n') ('394ef78 fifth\n')] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git log --no-walk=unsorted <commits> leaves list of commits as given' span_id: 478 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:482) (Token id: Id.Lit_Chars val: '\tgit log --no-walk=unsorted --oneline 5d31159 804a787 394ef78 > actual &&\n' span_id: 483 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:484) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git show <commits> leaves list of commits as given' span_id: 491 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:495) (Token id: Id.Lit_Chars val: '\tgit show --oneline -s 5d31159 804a787 394ef78 > actual &&\n' span_id: 496 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:497) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup case sensitivity tests' span_id:504))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:508) (Token id:Id.Lit_Chars val:'\techo case >one &&\n' span_id:509) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:510) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:511) (Token id:Id.Lit_Chars val:'\tgit commit -a -m Second\n' span_id:512) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --grep' span_id:519))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:523) (Token id:Id.Lit_Chars val:'\techo second >expect &&\n' span_id:524) (Token id:Id.Lit_Chars val:'\tgit log -1 --pretty="tformat:%s" --grep=sec >actual &&\n' span_id:525) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:526) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:532) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:536) fd: -1 here_begin: {(EOF)} here_end_span_id: 543 stdin_parts: [('second\n') ('initial\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --invert-grep --grep' span_id:547))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:551) (Token id: Id.Lit_Chars val: '\tgit log --pretty="tformat:%s" --invert-grep --grep=th --grep=Sec >actual &&\n' span_id: 552 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:553) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --invert-grep --grep -i' span_id:560))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:564) (Token id:Id.Lit_Chars val:'\techo initial >expect &&\n' span_id:565) (Token id: Id.Lit_Chars val: '\tgit log --pretty="tformat:%s" --invert-grep -i --grep=th --grep=Sec >actual &&\n' span_id: 566 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:567) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --grep option parsing' span_id:574))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:578) (Token id:Id.Lit_Chars val:'\techo second >expect &&\n' span_id:579) (Token id:Id.Lit_Chars val:'\tgit log -1 --pretty="tformat:%s" --grep sec >actual &&\n' span_id:580) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:581) (Token id:Id.Lit_Chars val:'\ttest_must_fail git log -1 --pretty="tformat:%s" --grep\n' span_id:582) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log -i --grep' span_id:589))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:593) (Token id:Id.Lit_Chars val:'\techo Second >expect &&\n' span_id:594) (Token id: Id.Lit_Chars val: '\tgit log -1 --pretty="tformat:%s" -i --grep=sec >actual &&\n' span_id: 595 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:596) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --grep -i' span_id:603))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:607) (Token id:Id.Lit_Chars val:'\techo Second >expect &&\n' span_id:608) (Token id: Id.Lit_Chars val: '\tgit log -1 --pretty="tformat:%s" --grep=sec -i >actual &&\n' span_id: 609 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:610) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log -F -E --grep=<ere> uses ere' span_id:617))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:621) (Token id:Id.Lit_Chars val:'\techo second >expect &&\n' span_id:622) (Token id: Id.Lit_Chars val: '\tgit log -1 --pretty="tformat:%s" -F -E --grep=s.c.nd >actual &&\n' span_id: 623 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:624) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log with grep.patternType configuration' span_id:631))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:635) (Token id:Id.Lit_Chars val:'\t>expect &&\n' span_id:636) (Token id:Id.Lit_Chars val:'\tgit -c grep.patterntype=fixed \\\n' span_id:637) (Token id: Id.Lit_Chars val: '\tlog -1 --pretty=tformat:%s --grep=s.c.nd >actual &&\n' span_id: 638 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:639) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'log with grep.patternType configuration and command line' span_id: 646 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:650) (Token id:Id.Lit_Chars val:'\techo second >expect &&\n' span_id:651) (Token id:Id.Lit_Chars val:'\tgit -c grep.patterntype=fixed \\\n' span_id:652) (Token id: Id.Lit_Chars val: '\tlog -1 --pretty=tformat:%s --basic-regexp --grep=s.c.nd >actual &&\n' span_id: 653 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:654) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:660) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:664) fd: -1 here_begin: {(EOF)} here_end_span_id: 675 stdin_parts: [ ('* Second\n') ('* sixth\n') ('* fifth\n') ('* fourth\n') ('* third\n') ('* second\n') ('* initial\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'simple log --graph' span_id:680))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:684) (Token id: Id.Lit_Chars val: '\tgit log --graph --pretty=tformat:%s >actual &&\n' span_id: 685 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:686) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:692) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:696) fd: -1 here_begin: {(EOF)} here_end_span_id: 707 stdin_parts: [ ('123 * Second\n') ('123 * sixth\n') ('123 * fifth\n') ('123 * fourth\n') ('123 * third\n') ('123 * second\n') ('123 * initial\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'simple log --graph --line-prefix="123 "' span_id:712))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:716) (Token id: Id.Lit_Chars val: '\tgit log --graph --line-prefix="123 " --pretty=tformat:%s >actual &&\n' span_id: 717 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:718) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up merge history' span_id:725))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:729) (Token id:Id.Lit_Chars val:'\tgit checkout -b side HEAD~4 &&\n' span_id:730) (Token id:Id.Lit_Chars val:'\ttest_commit side-1 1 1 &&\n' span_id:731) (Token id:Id.Lit_Chars val:'\ttest_commit side-2 2 2 &&\n' span_id:732) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:733) (Token id:Id.Lit_Chars val:'\tgit merge side\n' span_id:734) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:740) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:744) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:745)) (OF) } here_end_span_id: 760 stdin_parts: [ ("* Merge branch 'side'\n") ('|\\\n') ('| * side-2\n') ('| * side-1\n') ('* | Second\n') ('* | sixth\n') ('* | fifth\n') ('* | fourth\n') ('|/\n') ('* third\n') ('* second\n') ('* initial\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --graph with merge' span_id:765))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:769) (Token id: Id.Lit_Chars val: '\tgit log --graph --date-order --pretty=tformat:%s |\n' span_id: 770 ) (Token id:Id.Lit_Chars val:'\t\tsed "s/ *\\$//" >actual &&\n' span_id:771) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:772) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:778) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:782) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:783)) (OF) } here_end_span_id: 798 stdin_parts: [ ("| | | * Merge branch 'side'\n") ('| | | |\\\n') ('| | | | * side-2\n') ('| | | | * side-1\n') ('| | | * | Second\n') ('| | | * | sixth\n') ('| | | * | fifth\n') ('| | | * | fourth\n') ('| | | |/\n') ('| | | * third\n') ('| | | * second\n') ('| | | * initial\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --graph --line-prefix="| | | " with merge' span_id:803))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:807) (Token id: Id.Lit_Chars val: '\tgit log --line-prefix="| | | " --graph --date-order --pretty=tformat:%s |\n' span_id: 808 ) (Token id:Id.Lit_Chars val:'\t\tsed "s/ *\\$//" >actual &&\n' span_id:809) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:810) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --raw --graph -m with merge' span_id:817))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:821) (Token id: Id.Lit_Chars val: '\tgit log --raw --graph --oneline -m master | head -n 500 >actual &&\n' span_id: 822 ) (Token id:Id.Lit_Chars val:'\tgrep "initial" actual\n' span_id:823) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff-tree --graph' span_id:830))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:834) (Token id: Id.Lit_Chars val: '\tgit diff-tree --graph master^ | head -n 500 >actual &&\n' span_id: 835 ) (Token id:Id.Lit_Chars val:'\tgrep "one" actual\n' span_id:836) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:842) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:846) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:847)) (OF) } here_end_span_id: 900 stdin_parts: [ ('* commit master\n') ('|\\ Merge: A B\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ("| | Merge branch 'side'\n") ('| |\n') ('| * commit side\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ('| | side-2\n') ('| |\n') ('| * commit tags/side-1\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ('| | side-1\n') ('| |\n') ('* | commit master~1\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ('| | Second\n') ('| |\n') ('* | commit master~2\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ('| | sixth\n') ('| |\n') ('* | commit master~3\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ('| | fifth\n') ('| |\n') ('* | commit master~4\n') ('|/ Author: A U Thor <author@example.com>\n') ('|\n') ('| fourth\n') ('|\n') ('* commit tags/side-1~1\n') ('| Author: A U Thor <author@example.com>\n') ('|\n') ('| third\n') ('|\n') ('* commit tags/side-1~2\n') ('| Author: A U Thor <author@example.com>\n') ('|\n') ('| second\n') ('|\n') ('* commit tags/side-1~3\n') (' Author: A U Thor <author@example.com>\n') ('\n') (' initial\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --graph with full output' span_id:905))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:909) (Token id: Id.Lit_Chars val: '\tgit log --graph --date-order --pretty=short |\n' span_id: 910 ) (Token id:Id.Lit_Chars val:'\t\tgit name-rev --name-only --stdin |\n' span_id:911) (Token id: Id.Lit_Chars val: '\t\tsed "s/Merge:.*/Merge: A B/;s/ *\\$//" >actual &&\n' span_id: 912 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:913) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up more tangled history' span_id:920))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:924) (Token id:Id.Lit_Chars val:'\tgit checkout -b tangle HEAD~6 &&\n' span_id:925) (Token id:Id.Lit_Chars val:'\ttest_commit tangle-a tangle-a a &&\n' span_id:926) (Token id:Id.Lit_Chars val:'\tgit merge master~3 &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\tgit merge side~1 &&\n' span_id:928) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:929) (Token id:Id.Lit_Chars val:'\tgit merge tangle &&\n' span_id:930) (Token id:Id.Lit_Chars val:'\tgit checkout -b reach &&\n' span_id:931) (Token id:Id.Lit_Chars val:'\ttest_commit reach &&\n' span_id:932) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:933) (Token id:Id.Lit_Chars val:'\tgit checkout -b octopus-a &&\n' span_id:934) (Token id:Id.Lit_Chars val:'\ttest_commit octopus-a &&\n' span_id:935) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:936) (Token id:Id.Lit_Chars val:'\tgit checkout -b octopus-b &&\n' span_id:937) (Token id:Id.Lit_Chars val:'\ttest_commit octopus-b &&\n' span_id:938) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:939) (Token id:Id.Lit_Chars val:'\ttest_commit seventh &&\n' span_id:940) (Token id:Id.Lit_Chars val:'\tgit merge octopus-a octopus-b &&\n' span_id:941) (Token id:Id.Lit_Chars val:'\tgit merge reach\n' span_id:942) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:948) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:952) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:953)) (OF) } here_end_span_id: 994 stdin_parts: [ ("* Merge tag 'reach'\n") ('|\\\n') ('| \\\n') ('| \\\n') ("*-. \\ Merge tags 'octopus-a' and 'octopus-b'\n") ('|\\ \\ \\\n') ('* | | | seventh\n') ('| | * | octopus-b\n') ('| |/ /\n') ('|/| |\n') ('| * | octopus-a\n') ('|/ /\n') ('| * reach\n') ('|/\n') ("* Merge branch 'tangle'\n") ('|\\\n') ("| * Merge branch 'side' (early part) into tangle\n") ('| |\\\n') ("| * \\ Merge branch 'master' (early part) into tangle\n") ('| |\\ \\\n') ('| * | | tangle-a\n') ("* | | | Merge branch 'side'\n") ('|\\ \\ \\ \\\n') ('| * | | | side-2\n') ('| | |_|/\n') ('| |/| |\n') ('| * | | side-1\n') ('* | | | Second\n') ('* | | | sixth\n') ('| |_|/\n') ('|/| |\n') ('* | | fifth\n') ('* | | fourth\n') ('|/ /\n') ('* | third\n') ('|/\n') ('* second\n') ('* initial\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --graph with merge' span_id:999))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1003) (Token id: Id.Lit_Chars val: '\tgit log --graph --date-order --pretty=tformat:%s |\n' span_id: 1004 ) (Token id:Id.Lit_Chars val:'\t\tsed "s/ *\\$//" >actual &&\n' span_id:1005) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1006) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log.decorate configuration' span_id:1013))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1017) (Token id:Id.Lit_Chars val:'\tgit log --oneline >expect.none &&\n' span_id:1018) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate >expect.short &&\n' span_id:1019) (Token id: Id.Lit_Chars val: '\tgit log --oneline --decorate=full >expect.full &&\n' span_id: 1020 ) (Token id:Id.Lit_Chars val:'\n' span_id:1021) (Token id: Id.Lit_Chars val: '\techo "[log] decorate" >>.git/config &&\n' span_id: 1022 ) (Token id:Id.Lit_Chars val:'\tgit log --oneline >actual &&\n' span_id:1023) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.short actual &&\n' span_id:1024) (Token id:Id.Lit_Chars val:'\n' span_id:1025) (Token id:Id.Lit_Chars val:'\ttest_config log.decorate true &&\n' span_id:1026) (Token id:Id.Lit_Chars val:'\tgit log --oneline >actual &&\n' span_id:1027) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.short actual &&\n' span_id:1028) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate=full >actual &&\n' span_id:1029) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.full actual &&\n' span_id:1030) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate=no >actual &&\n' span_id:1031) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.none actual &&\n' span_id:1032) (Token id:Id.Lit_Chars val:'\n' span_id:1033) (Token id:Id.Lit_Chars val:'\ttest_config log.decorate no &&\n' span_id:1034) (Token id:Id.Lit_Chars val:'\tgit log --oneline >actual &&\n' span_id:1035) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.none actual &&\n' span_id:1036) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate >actual &&\n' span_id:1037) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.short actual &&\n' span_id:1038) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate=full >actual &&\n' span_id:1039) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.full actual &&\n' span_id:1040) (Token id:Id.Lit_Chars val:'\n' span_id:1041) (Token id:Id.Lit_Chars val:'\ttest_config log.decorate 1 &&\n' span_id:1042) (Token id:Id.Lit_Chars val:'\tgit log --oneline >actual &&\n' span_id:1043) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.short actual &&\n' span_id:1044) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate=full >actual &&\n' span_id:1045) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.full actual &&\n' span_id:1046) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate=no >actual &&\n' span_id:1047) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.none actual &&\n' span_id:1048) (Token id:Id.Lit_Chars val:'\n' span_id:1049) (Token id:Id.Lit_Chars val:'\ttest_config log.decorate short &&\n' span_id:1050) (Token id:Id.Lit_Chars val:'\tgit log --oneline >actual &&\n' span_id:1051) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.short actual &&\n' span_id:1052) (Token id:Id.Lit_Chars val:'\tgit log --oneline --no-decorate >actual &&\n' span_id:1053) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.none actual &&\n' span_id:1054) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate=full >actual &&\n' span_id:1055) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.full actual &&\n' span_id:1056) (Token id:Id.Lit_Chars val:'\n' span_id:1057) (Token id:Id.Lit_Chars val:'\ttest_config log.decorate full &&\n' span_id:1058) (Token id:Id.Lit_Chars val:'\tgit log --oneline >actual &&\n' span_id:1059) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.full actual &&\n' span_id:1060) (Token id:Id.Lit_Chars val:'\tgit log --oneline --no-decorate >actual &&\n' span_id:1061) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.none actual &&\n' span_id:1062) (Token id:Id.Lit_Chars val:'\tgit log --oneline --decorate >actual &&\n' span_id:1063) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.short actual &&\n' span_id:1064) (Token id:Id.Lit_Chars val:'\n' span_id:1065) (Token id:Id.Lit_Chars val:'\ttest_unconfig log.decorate &&\n' span_id:1066) (Token id:Id.Lit_Chars val:'\tgit log --pretty=raw >expect.raw &&\n' span_id:1067) (Token id:Id.Lit_Chars val:'\ttest_config log.decorate full &&\n' span_id:1068) (Token id:Id.Lit_Chars val:'\tgit log --pretty=raw >actual &&\n' span_id:1069) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.raw actual\n' span_id:1070) (Token id:Id.Lit_Chars val:'\n' span_id:1071) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reflog is expected format' span_id:1078))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1082) (Token id: Id.Lit_Chars val: '\tgit log -g --abbrev-commit --pretty=oneline >expect &&\n' span_id: 1083 ) (Token id:Id.Lit_Chars val:'\tgit reflog >actual &&\n' span_id:1084) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1085) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'whatchanged is expected format' span_id:1092))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1096) (Token id: Id.Lit_Chars val: '\tgit log --no-merges --raw >expect &&\n' span_id: 1097 ) (Token id:Id.Lit_Chars val:'\tgit whatchanged >actual &&\n' span_id:1098) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1099) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log.abbrevCommit configuration' span_id:1106))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1110) (Token id: Id.Lit_Chars val: '\tgit log --abbrev-commit >expect.log.abbrev &&\n' span_id: 1111 ) (Token id:Id.Lit_Chars val:'\tgit log --no-abbrev-commit >expect.log.full &&\n' span_id:1112) (Token id: Id.Lit_Chars val: '\tgit log --pretty=raw >expect.log.raw &&\n' span_id: 1113 ) (Token id:Id.Lit_Chars val:'\tgit reflog --abbrev-commit >expect.reflog.abbrev &&\n' span_id:1114) (Token id: Id.Lit_Chars val: '\tgit reflog --no-abbrev-commit >expect.reflog.full &&\n' span_id: 1115 ) (Token id: Id.Lit_Chars val: '\tgit whatchanged --abbrev-commit >expect.whatchanged.abbrev &&\n' span_id: 1116 ) (Token id: Id.Lit_Chars val: '\tgit whatchanged --no-abbrev-commit >expect.whatchanged.full &&\n' span_id: 1117 ) (Token id:Id.Lit_Chars val:'\n' span_id:1118) (Token id: Id.Lit_Chars val: '\ttest_config log.abbrevCommit true &&\n' span_id: 1119 ) (Token id:Id.Lit_Chars val:'\n' span_id:1120) (Token id:Id.Lit_Chars val:'\tgit log >actual &&\n' span_id:1121) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.log.abbrev actual &&\n' span_id:1122) (Token id: Id.Lit_Chars val: '\tgit log --no-abbrev-commit >actual &&\n' span_id: 1123 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.log.full actual &&\n' span_id:1124) (Token id:Id.Lit_Chars val:'\n' span_id:1125) (Token id:Id.Lit_Chars val:'\tgit log --pretty=raw >actual &&\n' span_id:1126) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.log.raw actual &&\n' span_id:1127) (Token id:Id.Lit_Chars val:'\n' span_id:1128) (Token id:Id.Lit_Chars val:'\tgit reflog >actual &&\n' span_id:1129) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.reflog.abbrev actual &&\n' span_id:1130) (Token id: Id.Lit_Chars val: '\tgit reflog --no-abbrev-commit >actual &&\n' span_id: 1131 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.reflog.full actual &&\n' span_id:1132) (Token id:Id.Lit_Chars val:'\n' span_id:1133) (Token id:Id.Lit_Chars val:'\tgit whatchanged >actual &&\n' span_id:1134) (Token id: Id.Lit_Chars val: '\ttest_cmp expect.whatchanged.abbrev actual &&\n' span_id: 1135 ) (Token id:Id.Lit_Chars val:'\tgit whatchanged --no-abbrev-commit >actual &&\n' span_id:1136) (Token id: Id.Lit_Chars val: '\ttest_cmp expect.whatchanged.full actual\n' span_id: 1137 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'show added path under "--follow -M"' span_id:1144))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1148) (Token id: Id.Lit_Chars val: '\t# This tests for a regression introduced in v1.7.2-rc0~103^2~2\n' span_id: 1149 ) (Token id:Id.Lit_Chars val:'\ttest_create_repo regression &&\n' span_id:1150) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1151) (Token id:Id.Lit_Chars val:'\t\tcd regression &&\n' span_id:1152) (Token id: Id.Lit_Chars val: '\t\ttest_commit needs-another-commit &&\n' span_id: 1153 ) (Token id:Id.Lit_Chars val:'\t\ttest_commit foo.bar &&\n' span_id:1154) (Token id: Id.Lit_Chars val: '\t\tgit log -M --follow -p foo.bar.t &&\n' span_id: 1155 ) (Token id:Id.Lit_Chars val:'\t\tgit log -M --follow --stat foo.bar.t &&\n' span_id:1156) (Token id: Id.Lit_Chars val: '\t\tgit log -M --follow --name-only foo.bar.t\n' span_id: 1157 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1158) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git log -c --follow' span_id:1165))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1169) (Token id:Id.Lit_Chars val:'\ttest_create_repo follow-c &&\n' span_id:1170) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1171) (Token id:Id.Lit_Chars val:'\t\tcd follow-c &&\n' span_id:1172) (Token id:Id.Lit_Chars val:'\t\ttest_commit initial file original &&\n' span_id:1173) (Token id:Id.Lit_Chars val:'\t\tgit rm file &&\n' span_id:1174) (Token id:Id.Lit_Chars val:'\t\ttest_commit rename file2 original &&\n' span_id:1175) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard initial &&\n' span_id:1176) (Token id:Id.Lit_Chars val:'\t\ttest_commit modify file foo &&\n' span_id:1177) (Token id:Id.Lit_Chars val:'\t\tgit merge -m merge rename &&\n' span_id:1178) (Token id:Id.Lit_Chars val:'\t\tgit log -c --follow file2\n' span_id:1179) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1180) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1186) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1189) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1190)) (OF) } here_end_span_id: 1461 stdin_parts: [ ('* commit COMMIT_OBJECT_NAME\n') ('|\\ Merge: MERGE_PARENTS\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ('| | Merge HEADS DESCRIPTION\n') ('| |\n') ('| * commit COMMIT_OBJECT_NAME\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ('| | reach\n') ('| | ---\n') ('| | reach.t | 1 +\n') ('| | 1 file changed, 1 insertion(+)\n') ('| |\n') ('| | diff --git a/reach.t b/reach.t\n') ('| | new file mode 100644\n') ('| | index 0000000..10c9591\n') ('| | --- /dev/null\n') ('| | +++ b/reach.t\n') ('| | @@ -0,0 +1 @@\n') ('| | +reach\n') ('| |\n') ('| \\\n') ('*-. \\ commit COMMIT_OBJECT_NAME\n') ('|\\ \\ \\ Merge: MERGE_PARENTS\n') ('| | | | Author: A U Thor <author@example.com>\n') ('| | | |\n') ('| | | | Merge HEADS DESCRIPTION\n') ('| | | |\n') ('| | * | commit COMMIT_OBJECT_NAME\n') ('| | |/ Author: A U Thor <author@example.com>\n') ('| | |\n') ('| | | octopus-b\n') ('| | | ---\n') ('| | | octopus-b.t | 1 +\n') ('| | | 1 file changed, 1 insertion(+)\n') ('| | |\n') ('| | | diff --git a/octopus-b.t b/octopus-b.t\n') ('| | | new file mode 100644\n') ('| | | index 0000000..d5fcad0\n') ('| | | --- /dev/null\n') ('| | | +++ b/octopus-b.t\n') ('| | | @@ -0,0 +1 @@\n') ('| | | +octopus-b\n') ('| | |\n') ('| * | commit COMMIT_OBJECT_NAME\n') ('| |/ Author: A U Thor <author@example.com>\n') ('| |\n') ('| | octopus-a\n') ('| | ---\n') ('| | octopus-a.t | 1 +\n') ('| | 1 file changed, 1 insertion(+)\n') ('| |\n') ('| | diff --git a/octopus-a.t b/octopus-a.t\n') ('| | new file mode 100644\n') ('| | index 0000000..11ee015\n') ('| | --- /dev/null\n') ('| | +++ b/octopus-a.t\n') ('| | @@ -0,0 +1 @@\n') ('| | +octopus-a\n') ('| |\n') ('* | commit COMMIT_OBJECT_NAME\n') ('|/ Author: A U Thor <author@example.com>\n') ('|\n') ('| seventh\n') ('| ---\n') ('| seventh.t | 1 +\n') ('| 1 file changed, 1 insertion(+)\n') ('|\n') ('| diff --git a/seventh.t b/seventh.t\n') ('| new file mode 100644\n') ('| index 0000000..9744ffc\n') ('| --- /dev/null\n') ('| +++ b/seventh.t\n') ('| @@ -0,0 +1 @@\n') ('| +seventh\n') ('|\n') ('* commit COMMIT_OBJECT_NAME\n') ('|\\ Merge: MERGE_PARENTS\n') ('| | Author: A U Thor <author@example.com>\n') ('| |\n') ("| | Merge branch 'tangle'\n") ('| |\n') ('| * commit COMMIT_OBJECT_NAME\n') ('| |\\ Merge: MERGE_PARENTS\n') ('| | | Author: A U Thor <author@example.com>\n') ('| | |\n') ("| | | Merge branch 'side' (early part) into tangle\n") ('| | |\n') ('| * | commit COMMIT_OBJECT_NAME\n') ('| |\\ \\ Merge: MERGE_PARENTS\n') ('| | | | Author: A U Thor <author@example.com>\n') ('| | | |\n') ("| | | | Merge branch 'master' (early part) into tangle\n") ('| | | |\n') ('| * | | commit COMMIT_OBJECT_NAME\n') ('| | | | Author: A U Thor <author@example.com>\n') ('| | | |\n') ('| | | | tangle-a\n') ('| | | | ---\n') ('| | | | tangle-a | 1 +\n') ('| | | | 1 file changed, 1 insertion(+)\n') ('| | | |\n') ('| | | | diff --git a/tangle-a b/tangle-a\n') ('| | | | new file mode 100644\n') ('| | | | index 0000000..7898192\n') ('| | | | --- /dev/null\n') ('| | | | +++ b/tangle-a\n') ('| | | | @@ -0,0 +1 @@\n') ('| | | | +a\n') ('| | | |\n') ('* | | | commit COMMIT_OBJECT_NAME\n') ('|\\ \\ \\ \\ Merge: MERGE_PARENTS\n') ('| | | | | Author: A U Thor <author@example.com>\n') ('| | | | |\n') ("| | | | | Merge branch 'side'\n") ('| | | | |\n') ('| * | | | commit COMMIT_OBJECT_NAME\n') ('| | |_|/ Author: A U Thor <author@example.com>\n') ('| |/| |\n') ('| | | | side-2\n') ('| | | | ---\n') ('| | | | 2 | 1 +\n') ('| | | | 1 file changed, 1 insertion(+)\n') ('| | | |\n') ('| | | | diff --git a/2 b/2\n') ('| | | | new file mode 100644\n') ('| | | | index 0000000..0cfbf08\n') ('| | | | --- /dev/null\n') ('| | | | +++ b/2\n') ('| | | | @@ -0,0 +1 @@\n') ('| | | | +2\n') ('| | | |\n') ('| * | | commit COMMIT_OBJECT_NAME\n') ('| | | | Author: A U Thor <author@example.com>\n') ('| | | |\n') ('| | | | side-1\n') ('| | | | ---\n') ('| | | | 1 | 1 +\n') ('| | | | 1 file changed, 1 insertion(+)\n') ('| | | |\n') ('| | | | diff --git a/1 b/1\n') ('| | | | new file mode 100644\n') ('| | | | index 0000000..d00491f\n') ('| | | | --- /dev/null\n') ('| | | | +++ b/1\n') ('| | | | @@ -0,0 +1 @@\n') ('| | | | +1\n') ('| | | |\n') ('* | | | commit COMMIT_OBJECT_NAME\n') ('| | | | Author: A U Thor <author@example.com>\n') ('| | | |\n') ('| | | | Second\n') ('| | | | ---\n') ('| | | | one | 1 +\n') ('| | | | 1 file changed, 1 insertion(+)\n') ('| | | |\n') ('| | | | diff --git a/one b/one\n') ('| | | | new file mode 100644\n') ('| | | | index 0000000..9a33383\n') ('| | | | --- /dev/null\n') ('| | | | +++ b/one\n') ('| | | | @@ -0,0 +1 @@\n') ('| | | | +case\n') ('| | | |\n') ('* | | | commit COMMIT_OBJECT_NAME\n') ('| |_|/ Author: A U Thor <author@example.com>\n') ('|/| |\n') ('| | | sixth\n') ('| | | ---\n') ('| | | a/two | 1 -\n') ('| | | 1 file changed, 1 deletion(-)\n') ('| | |\n') ('| | | diff --git a/a/two b/a/two\n') ('| | | deleted file mode 100644\n') ('| | | index 9245af5..0000000\n') ('| | | --- a/a/two\n') ('| | | +++ /dev/null\n') ('| | | @@ -1 +0,0 @@\n') ('| | | -ni\n') ('| | |\n') ('* | | commit COMMIT_OBJECT_NAME\n') ('| | | Author: A U Thor <author@example.com>\n') ('| | |\n') ('| | | fifth\n') ('| | | ---\n') ('| | | a/two | 1 +\n') ('| | | 1 file changed, 1 insertion(+)\n') ('| | |\n') ('| | | diff --git a/a/two b/a/two\n') ('| | | new file mode 100644\n') ('| | | index 0000000..9245af5\n') ('| | | --- /dev/null\n') ('| | | +++ b/a/two\n') ('| | | @@ -0,0 +1 @@\n') ('| | | +ni\n') ('| | |\n') ('* | | commit COMMIT_OBJECT_NAME\n') ('|/ / Author: A U Thor <author@example.com>\n') ('| |\n') ('| | fourth\n') ('| | ---\n') ('| | ein | 1 +\n') ('| | 1 file changed, 1 insertion(+)\n') ('| |\n') ('| | diff --git a/ein b/ein\n') ('| | new file mode 100644\n') ('| | index 0000000..9d7e69f\n') ('| | --- /dev/null\n') ('| | +++ b/ein\n') ('| | @@ -0,0 +1 @@\n') ('| | +ichi\n') ('| |\n') ('* | commit COMMIT_OBJECT_NAME\n') ('|/ Author: A U Thor <author@example.com>\n') ('|\n') ('| third\n') ('| ---\n') ('| ichi | 1 +\n') ('| one | 1 -\n') ('| 2 files changed, 1 insertion(+), 1 deletion(-)\n') ('|\n') ('| diff --git a/ichi b/ichi\n') ('| new file mode 100644\n') ('| index 0000000..9d7e69f\n') ('| --- /dev/null\n') ('| +++ b/ichi\n') ('| @@ -0,0 +1 @@\n') ('| +ichi\n') ('| diff --git a/one b/one\n') ('| deleted file mode 100644\n') ('| index 9d7e69f..0000000\n') ('| --- a/one\n') ('| +++ /dev/null\n') ('| @@ -1 +0,0 @@\n') ('| -ichi\n') ('|\n') ('* commit COMMIT_OBJECT_NAME\n') ('| Author: A U Thor <author@example.com>\n') ('|\n') ('| second\n') ('| ---\n') ('| one | 2 +-\n') ('| 1 file changed, 1 insertion(+), 1 deletion(-)\n') ('|\n') ('| diff --git a/one b/one\n') ('| index 5626abf..9d7e69f 100644\n') ('| --- a/one\n') ('| +++ b/one\n') ('| @@ -1 +1 @@\n') ('| -one\n') ('| +ichi\n') ('|\n') ('* commit COMMIT_OBJECT_NAME\n') (' Author: A U Thor <author@example.com>\n') ('\n') (' initial\n') (' ---\n') (' one | 1 +\n') (' 1 file changed, 1 insertion(+)\n') ('\n') (' diff --git a/one b/one\n') (' new file mode 100644\n') (' index 0000000..5626abf\n') (' --- /dev/null\n') (' +++ b/one\n') (' @@ -0,0 +1 @@\n') (' +one\n') ] ) ] ) (command.ShFunction name: sanitize_output body: (command.BraceGroup children: [ (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/ *$//' span_id:1476))} {(-e)} { (SQ (Token id: Id.Lit_Chars val: 's/commit [0-9a-f]*$/commit COMMIT_OBJECT_NAME/' span_id: 1484 ) ) } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/Merge: [ 0-9a-f]*$/Merge: MERGE_PARENTS/' span_id:1492))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/Merge tag.*/Merge HEADS DESCRIPTION/' span_id:1500))} {(-e)} { (SQ (Token id: Id.Lit_Chars val: 's/Merge commit.*/Merge HEADS DESCRIPTION/' span_id: 1508 ) ) } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/, 0 deletions(-)//' span_id:1516))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/, 0 insertions(+)//' span_id:1524))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/ 1 files changed, / 1 file changed, /' span_id:1532))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/, 1 deletions(-)/, 1 deletion(-)/' span_id:1540))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/, 1 insertions(+)/, 1 insertion(+)/' span_id:1548))} ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --graph with diff and stats' span_id:1557))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1561) (Token id: Id.Lit_Chars val: '\tgit log --no-renames --graph --pretty=short --stat -p >actual &&\n' span_id: 1562 ) (Token id:Id.Lit_Chars val:'\tsanitize_output >actual.sanitized <actual &&\n' span_id:1563) (Token id: Id.Lit_Chars val: '\ttest_i18ncmp expect actual.sanitized\n' span_id: 1564 ) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1570) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1573) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1574)) (OF) } here_end_span_id: 1845 stdin_parts: [ ('*** * commit COMMIT_OBJECT_NAME\n') ('*** |\\ Merge: MERGE_PARENTS\n') ('*** | | Author: A U Thor <author@example.com>\n') ('*** | |\n') ('*** | | Merge HEADS DESCRIPTION\n') ('*** | |\n') ('*** | * commit COMMIT_OBJECT_NAME\n') ('*** | | Author: A U Thor <author@example.com>\n') ('*** | |\n') ('*** | | reach\n') ('*** | | ---\n') ('*** | | reach.t | 1 +\n') ('*** | | 1 file changed, 1 insertion(+)\n') ('*** | |\n') ('*** | | diff --git a/reach.t b/reach.t\n') ('*** | | new file mode 100644\n') ('*** | | index 0000000..10c9591\n') ('*** | | --- /dev/null\n') ('*** | | +++ b/reach.t\n') ('*** | | @@ -0,0 +1 @@\n') ('*** | | +reach\n') ('*** | |\n') ('*** | \\\n') ('*** *-. \\ commit COMMIT_OBJECT_NAME\n') ('*** |\\ \\ \\ Merge: MERGE_PARENTS\n') ('*** | | | | Author: A U Thor <author@example.com>\n') ('*** | | | |\n') ('*** | | | | Merge HEADS DESCRIPTION\n') ('*** | | | |\n') ('*** | | * | commit COMMIT_OBJECT_NAME\n') ('*** | | |/ Author: A U Thor <author@example.com>\n') ('*** | | |\n') ('*** | | | octopus-b\n') ('*** | | | ---\n') ('*** | | | octopus-b.t | 1 +\n') ('*** | | | 1 file changed, 1 insertion(+)\n') ('*** | | |\n') ('*** | | | diff --git a/octopus-b.t b/octopus-b.t\n') ('*** | | | new file mode 100644\n') ('*** | | | index 0000000..d5fcad0\n') ('*** | | | --- /dev/null\n') ('*** | | | +++ b/octopus-b.t\n') ('*** | | | @@ -0,0 +1 @@\n') ('*** | | | +octopus-b\n') ('*** | | |\n') ('*** | * | commit COMMIT_OBJECT_NAME\n') ('*** | |/ Author: A U Thor <author@example.com>\n') ('*** | |\n') ('*** | | octopus-a\n') ('*** | | ---\n') ('*** | | octopus-a.t | 1 +\n') ('*** | | 1 file changed, 1 insertion(+)\n') ('*** | |\n') ('*** | | diff --git a/octopus-a.t b/octopus-a.t\n') ('*** | | new file mode 100644\n') ('*** | | index 0000000..11ee015\n') ('*** | | --- /dev/null\n') ('*** | | +++ b/octopus-a.t\n') ('*** | | @@ -0,0 +1 @@\n') ('*** | | +octopus-a\n') ('*** | |\n') ('*** * | commit COMMIT_OBJECT_NAME\n') ('*** |/ Author: A U Thor <author@example.com>\n') ('*** |\n') ('*** | seventh\n') ('*** | ---\n') ('*** | seventh.t | 1 +\n') ('*** | 1 file changed, 1 insertion(+)\n') ('*** |\n') ('*** | diff --git a/seventh.t b/seventh.t\n') ('*** | new file mode 100644\n') ('*** | index 0000000..9744ffc\n') ('*** | --- /dev/null\n') ('*** | +++ b/seventh.t\n') ('*** | @@ -0,0 +1 @@\n') ('*** | +seventh\n') ('*** |\n') ('*** * commit COMMIT_OBJECT_NAME\n') ('*** |\\ Merge: MERGE_PARENTS\n') ('*** | | Author: A U Thor <author@example.com>\n') ('*** | |\n') ("*** | | Merge branch 'tangle'\n") ('*** | |\n') ('*** | * commit COMMIT_OBJECT_NAME\n') ('*** | |\\ Merge: MERGE_PARENTS\n') ('*** | | | Author: A U Thor <author@example.com>\n') ('*** | | |\n') ("*** | | | Merge branch 'side' (early part) into tangle\n") ('*** | | |\n') ('*** | * | commit COMMIT_OBJECT_NAME\n') ('*** | |\\ \\ Merge: MERGE_PARENTS\n') ('*** | | | | Author: A U Thor <author@example.com>\n') ('*** | | | |\n') ("*** | | | | Merge branch 'master' (early part) into tangle\n") ('*** | | | |\n') ('*** | * | | commit COMMIT_OBJECT_NAME\n') ('*** | | | | Author: A U Thor <author@example.com>\n') ('*** | | | |\n') ('*** | | | | tangle-a\n') ('*** | | | | ---\n') ('*** | | | | tangle-a | 1 +\n') ('*** | | | | 1 file changed, 1 insertion(+)\n') ('*** | | | |\n') ('*** | | | | diff --git a/tangle-a b/tangle-a\n') ('*** | | | | new file mode 100644\n') ('*** | | | | index 0000000..7898192\n') ('*** | | | | --- /dev/null\n') ('*** | | | | +++ b/tangle-a\n') ('*** | | | | @@ -0,0 +1 @@\n') ('*** | | | | +a\n') ('*** | | | |\n') ('*** * | | | commit COMMIT_OBJECT_NAME\n') ('*** |\\ \\ \\ \\ Merge: MERGE_PARENTS\n') ('*** | | | | | Author: A U Thor <author@example.com>\n') ('*** | | | | |\n') ("*** | | | | | Merge branch 'side'\n") ('*** | | | | |\n') ('*** | * | | | commit COMMIT_OBJECT_NAME\n') ('*** | | |_|/ Author: A U Thor <author@example.com>\n') ('*** | |/| |\n') ('*** | | | | side-2\n') ('*** | | | | ---\n') ('*** | | | | 2 | 1 +\n') ('*** | | | | 1 file changed, 1 insertion(+)\n') ('*** | | | |\n') ('*** | | | | diff --git a/2 b/2\n') ('*** | | | | new file mode 100644\n') ('*** | | | | index 0000000..0cfbf08\n') ('*** | | | | --- /dev/null\n') ('*** | | | | +++ b/2\n') ('*** | | | | @@ -0,0 +1 @@\n') ('*** | | | | +2\n') ('*** | | | |\n') ('*** | * | | commit COMMIT_OBJECT_NAME\n') ('*** | | | | Author: A U Thor <author@example.com>\n') ('*** | | | |\n') ('*** | | | | side-1\n') ('*** | | | | ---\n') ('*** | | | | 1 | 1 +\n') ('*** | | | | 1 file changed, 1 insertion(+)\n') ('*** | | | |\n') ('*** | | | | diff --git a/1 b/1\n') ('*** | | | | new file mode 100644\n') ('*** | | | | index 0000000..d00491f\n') ('*** | | | | --- /dev/null\n') ('*** | | | | +++ b/1\n') ('*** | | | | @@ -0,0 +1 @@\n') ('*** | | | | +1\n') ('*** | | | |\n') ('*** * | | | commit COMMIT_OBJECT_NAME\n') ('*** | | | | Author: A U Thor <author@example.com>\n') ('*** | | | |\n') ('*** | | | | Second\n') ('*** | | | | ---\n') ('*** | | | | one | 1 +\n') ('*** | | | | 1 file changed, 1 insertion(+)\n') ('*** | | | |\n') ('*** | | | | diff --git a/one b/one\n') ('*** | | | | new file mode 100644\n') ('*** | | | | index 0000000..9a33383\n') ('*** | | | | --- /dev/null\n') ('*** | | | | +++ b/one\n') ('*** | | | | @@ -0,0 +1 @@\n') ('*** | | | | +case\n') ('*** | | | |\n') ('*** * | | | commit COMMIT_OBJECT_NAME\n') ('*** | |_|/ Author: A U Thor <author@example.com>\n') ('*** |/| |\n') ('*** | | | sixth\n') ('*** | | | ---\n') ('*** | | | a/two | 1 -\n') ('*** | | | 1 file changed, 1 deletion(-)\n') ('*** | | |\n') ('*** | | | diff --git a/a/two b/a/two\n') ('*** | | | deleted file mode 100644\n') ('*** | | | index 9245af5..0000000\n') ('*** | | | --- a/a/two\n') ('*** | | | +++ /dev/null\n') ('*** | | | @@ -1 +0,0 @@\n') ('*** | | | -ni\n') ('*** | | |\n') ('*** * | | commit COMMIT_OBJECT_NAME\n') ('*** | | | Author: A U Thor <author@example.com>\n') ('*** | | |\n') ('*** | | | fifth\n') ('*** | | | ---\n') ('*** | | | a/two | 1 +\n') ('*** | | | 1 file changed, 1 insertion(+)\n') ('*** | | |\n') ('*** | | | diff --git a/a/two b/a/two\n') ('*** | | | new file mode 100644\n') ('*** | | | index 0000000..9245af5\n') ('*** | | | --- /dev/null\n') ('*** | | | +++ b/a/two\n') ('*** | | | @@ -0,0 +1 @@\n') ('*** | | | +ni\n') ('*** | | |\n') ('*** * | | commit COMMIT_OBJECT_NAME\n') ('*** |/ / Author: A U Thor <author@example.com>\n') ('*** | |\n') ('*** | | fourth\n') ('*** | | ---\n') ('*** | | ein | 1 +\n') ('*** | | 1 file changed, 1 insertion(+)\n') ('*** | |\n') ('*** | | diff --git a/ein b/ein\n') ('*** | | new file mode 100644\n') ('*** | | index 0000000..9d7e69f\n') ('*** | | --- /dev/null\n') ('*** | | +++ b/ein\n') ('*** | | @@ -0,0 +1 @@\n') ('*** | | +ichi\n') ('*** | |\n') ('*** * | commit COMMIT_OBJECT_NAME\n') ('*** |/ Author: A U Thor <author@example.com>\n') ('*** |\n') ('*** | third\n') ('*** | ---\n') ('*** | ichi | 1 +\n') ('*** | one | 1 -\n') ('*** | 2 files changed, 1 insertion(+), 1 deletion(-)\n') ('*** |\n') ('*** | diff --git a/ichi b/ichi\n') ('*** | new file mode 100644\n') ('*** | index 0000000..9d7e69f\n') ('*** | --- /dev/null\n') ('*** | +++ b/ichi\n') ('*** | @@ -0,0 +1 @@\n') ('*** | +ichi\n') ('*** | diff --git a/one b/one\n') ('*** | deleted file mode 100644\n') ('*** | index 9d7e69f..0000000\n') ('*** | --- a/one\n') ('*** | +++ /dev/null\n') ('*** | @@ -1 +0,0 @@\n') ('*** | -ichi\n') ('*** |\n') ('*** * commit COMMIT_OBJECT_NAME\n') ('*** | Author: A U Thor <author@example.com>\n') ('*** |\n') ('*** | second\n') ('*** | ---\n') ('*** | one | 2 +-\n') ('*** | 1 file changed, 1 insertion(+), 1 deletion(-)\n') ('*** |\n') ('*** | diff --git a/one b/one\n') ('*** | index 5626abf..9d7e69f 100644\n') ('*** | --- a/one\n') ('*** | +++ b/one\n') ('*** | @@ -1 +1 @@\n') ('*** | -one\n') ('*** | +ichi\n') ('*** |\n') ('*** * commit COMMIT_OBJECT_NAME\n') ('*** Author: A U Thor <author@example.com>\n') ('***\n') ('*** initial\n') ('*** ---\n') ('*** one | 1 +\n') ('*** 1 file changed, 1 insertion(+)\n') ('***\n') ('*** diff --git a/one b/one\n') ('*** new file mode 100644\n') ('*** index 0000000..5626abf\n') ('*** --- /dev/null\n') ('*** +++ b/one\n') ('*** @@ -0,0 +1 @@\n') ('*** +one\n') ] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'log --line-prefix="*** " --graph with diff and stats' span_id: 1850 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1854) (Token id: Id.Lit_Chars val: '\tgit log --line-prefix="*** " --no-renames --graph --pretty=short --stat -p >actual &&\n' span_id: 1855 ) (Token id:Id.Lit_Chars val:'\tsanitize_output >actual.sanitized <actual &&\n' span_id:1856) (Token id: Id.Lit_Chars val: '\ttest_i18ncmp expect actual.sanitized\n' span_id: 1857 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'dotdot is a parent directory' span_id:1864))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1868) (Token id:Id.Lit_Chars val:'\tmkdir -p a/b &&\n' span_id:1869) (Token id:Id.Lit_Chars val:'\t( echo sixth && echo fifth ) >expect &&\n' span_id:1870) (Token id: Id.Lit_Chars val: '\t( cd a/b && git log --format=%s .. ) >actual &&\n' span_id: 1871 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1872) ) } ) (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'setup signed branch' span_id:1881))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1885) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git reset --hard && git checkout master" &&\n' span_id: 1886 ) (Token id:Id.Lit_Chars val:'\tgit checkout -b signed master &&\n' span_id:1887) (Token id:Id.Lit_Chars val:'\techo foo >foo &&\n' span_id:1888) (Token id:Id.Lit_Chars val:'\tgit add foo &&\n' span_id:1889) (Token id:Id.Lit_Chars val:'\tgit commit -S -m signed_commit\n' span_id:1890) ) } ) (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'log --graph --show-signature' span_id:1899))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1903) (Token id: Id.Lit_Chars val: '\tgit log --graph --show-signature -n1 signed >actual &&\n' span_id: 1904 ) (Token id:Id.Lit_Chars val:'\tgrep "^| gpg: Signature made" actual &&\n' span_id:1905) (Token id: Id.Lit_Chars val: '\tgrep "^| gpg: Good signature" actual\n' span_id: 1906 ) ) } ) (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'log --graph --show-signature for merged tag' span_id:1915))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1919) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git reset --hard && git checkout master" &&\n' span_id: 1920 ) (Token id:Id.Lit_Chars val:'\tgit checkout -b plain master &&\n' span_id:1921) (Token id:Id.Lit_Chars val:'\techo aaa >bar &&\n' span_id:1922) (Token id:Id.Lit_Chars val:'\tgit add bar &&\n' span_id:1923) (Token id:Id.Lit_Chars val:'\tgit commit -m bar_commit &&\n' span_id:1924) (Token id:Id.Lit_Chars val:'\tgit checkout -b tagged master &&\n' span_id:1925) (Token id:Id.Lit_Chars val:'\techo bbb >baz &&\n' span_id:1926) (Token id:Id.Lit_Chars val:'\tgit add baz &&\n' span_id:1927) (Token id:Id.Lit_Chars val:'\tgit commit -m baz_commit &&\n' span_id:1928) (Token id:Id.Lit_Chars val:'\tgit tag -s -m signed_tag_msg signed_tag &&\n' span_id:1929) (Token id:Id.Lit_Chars val:'\tgit checkout plain &&\n' span_id:1930) (Token id:Id.Lit_Chars val:'\tgit merge --no-ff -m msg signed_tag &&\n' span_id:1931) (Token id: Id.Lit_Chars val: '\tgit log --graph --show-signature -n1 plain >actual &&\n' span_id: 1932 ) (Token id:Id.Lit_Chars val:'\tgrep "^|\\\\\\ merged tag" actual &&\n' span_id:1933) (Token id: Id.Lit_Chars val: '\tgrep "^| | gpg: Signature made" actual &&\n' span_id: 1934 ) (Token id:Id.Lit_Chars val:'\tgrep "^| | gpg: Good signature" actual\n' span_id:1935) ) } ) (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'--no-show-signature overrides --show-signature' span_id:1944))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1948) (Token id: Id.Lit_Chars val: '\tgit log -1 --show-signature --no-show-signature signed >actual &&\n' span_id: 1949 ) (Token id:Id.Lit_Chars val:'\t! grep "^gpg:" actual\n' span_id:1950) ) } ) (C {(test_expect_success)} {(GPG)} { (SQ (Token id: Id.Lit_Chars val: 'log.showsignature=true behaves like --show-signature' span_id: 1959 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1963) (Token id: Id.Lit_Chars val: '\ttest_config log.showsignature true &&\n' span_id: 1964 ) (Token id:Id.Lit_Chars val:'\tgit log -1 signed >actual &&\n' span_id:1965) (Token id: Id.Lit_Chars val: '\tgrep "gpg: Signature made" actual &&\n' span_id: 1966 ) (Token id:Id.Lit_Chars val:'\tgrep "gpg: Good signature" actual\n' span_id:1967) ) } ) (C {(test_expect_success)} {(GPG)} { (SQ (Token id: Id.Lit_Chars val: '--no-show-signature overrides log.showsignature=true' span_id: 1976 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1980) (Token id: Id.Lit_Chars val: '\ttest_config log.showsignature true &&\n' span_id: 1981 ) (Token id:Id.Lit_Chars val:'\tgit log -1 --no-show-signature signed >actual &&\n' span_id:1982) (Token id:Id.Lit_Chars val:'\t! grep "^gpg:" actual\n' span_id:1983) ) } ) (C {(test_expect_success)} {(GPG)} { (SQ (Token id: Id.Lit_Chars val: '--show-signature overrides log.showsignature=false' span_id: 1992 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1996) (Token id: Id.Lit_Chars val: '\ttest_config log.showsignature false &&\n' span_id: 1997 ) (Token id:Id.Lit_Chars val:'\tgit log -1 --show-signature signed >actual &&\n' span_id:1998) (Token id: Id.Lit_Chars val: '\tgrep "gpg: Signature made" actual &&\n' span_id: 1999 ) (Token id:Id.Lit_Chars val:'\tgrep "gpg: Good signature" actual\n' span_id:2000) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --graph --no-walk is forbidden' span_id:2007))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2011) (Token id: Id.Lit_Chars val: '\ttest_must_fail git log --graph --no-walk\n' span_id: 2012 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log diagnoses bogus HEAD' span_id:2019))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2023) (Token id:Id.Lit_Chars val:'\tgit init empty &&\n' span_id:2024) (Token id:Id.Lit_Chars val:'\ttest_must_fail git -C empty log 2>stderr &&\n' span_id:2025) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep does.not.have.any.commits stderr &&\n' span_id: 2026 ) (Token id:Id.Lit_Chars val:'\techo 1234abcd >empty/.git/refs/heads/master &&\n' span_id:2027) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -C empty log 2>stderr &&\n' span_id: 2028 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep broken stderr &&\n' span_id:2029) (Token id: Id.Lit_Chars val: '\techo "ref: refs/heads/invalid.lock" >empty/.git/HEAD &&\n' span_id: 2030 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git -C empty log 2>stderr &&\n' span_id:2031) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep broken stderr &&\n' span_id:2032) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -C empty log --default totally-bogus 2>stderr &&\n' span_id: 2033 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep broken stderr\n' span_id:2034) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up --source tests' span_id:2041))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2045) (Token id:Id.Lit_Chars val:'\tgit checkout --orphan source-a &&\n' span_id:2046) (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:2047) (Token id:Id.Lit_Chars val:'\ttest_commit two &&\n' span_id:2048) (Token id:Id.Lit_Chars val:'\tgit checkout -b source-b HEAD^ &&\n' span_id:2049) (Token id:Id.Lit_Chars val:'\ttest_commit three\n' span_id:2050) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --source paints branch names' span_id:2057))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2061) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:2062) (Token id:Id.Lit_Chars val:'\t09e12a9\tsource-b three\n' span_id:2063) (Token id:Id.Lit_Chars val:'\t8e393e1\tsource-a two\n' span_id:2064) (Token id:Id.Lit_Chars val:'\t1ac6c77\tsource-b one\n' span_id:2065) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2066) (Token id: Id.Lit_Chars val: '\tgit log --oneline --source source-a source-b >actual &&\n' span_id: 2067 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2068) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --source paints tag names' span_id:2075))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2079) (Token id:Id.Lit_Chars val:'\tgit tag -m tagged source-tag &&\n' span_id:2080) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:2081) (Token id:Id.Lit_Chars val:'\t09e12a9\tsource-tag three\n' span_id:2082) (Token id:Id.Lit_Chars val:'\t8e393e1\tsource-a two\n' span_id:2083) (Token id:Id.Lit_Chars val:'\t1ac6c77\tsource-tag one\n' span_id:2084) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2085) (Token id: Id.Lit_Chars val: '\tgit log --oneline --source source-tag source-a >actual &&\n' span_id: 2086 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:2087) ) } ) (C {(test_done)}) ] )