(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: 'blame output in various formats on a simple case' span_id: 6 ) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id:Id.Lit_Chars val:'\techo a >file &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m one &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo b >>file &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\techo c >>file &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\techo d >>file &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit commit -a -m two\n' span_id:30) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:36) fd:-1 arg_word:{(expect)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:39) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:41))} here_end_span_id: 48 stdin_parts: [ ('^baf5e0b (A U Thor 2005-04-07 15:13:13 -0700 1) a\n') ('8825379d (A U Thor 2005-04-07 15:14:13 -0700 2) b\n') ('8825379d (A U Thor 2005-04-07 15:14:13 -0700 3) c\n') ('8825379d (A U Thor 2005-04-07 15:14:13 -0700 4) d\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'normal blame output' span_id:52))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:56) (Token id:Id.Lit_Chars val:'\tgit blame file >actual &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:58) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ID1) op: assign_op.Equal rhs: {(baf5e0b3869e0b2b2beb395a3720c7b51eac94fc)} spids: [62] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMMIT1) op: assign_op.Equal rhs: { (SQ (Token id:Id.Lit_Chars val:'author A U Thor\n' span_id:67) (Token id: Id.Lit_Chars val: 'author-mail <author@example.com>\n' span_id: 68 ) (Token id:Id.Lit_Chars val:'author-time 1112911993\n' span_id:69) (Token id:Id.Lit_Chars val:'author-tz -0700\n' span_id:70) (Token id:Id.Lit_Chars val:'committer C O Mitter\n' span_id:71) (Token id: Id.Lit_Chars val: 'committer-mail <committer@example.com>\n' span_id: 72 ) (Token id:Id.Lit_Chars val:'committer-time 1112911993\n' span_id:73) (Token id:Id.Lit_Chars val:'committer-tz -0700\n' span_id:74) (Token id:Id.Lit_Chars val:'summary one\n' span_id:75) (Token id:Id.Lit_Chars val:'boundary\n' span_id:76) (Token id:Id.Lit_Chars val:'filename file' span_id:77) ) } spids: [65] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ID2) op: assign_op.Equal rhs: {(8825379dfb8a1267b58e8e5bcf69eec838f685ec)} spids: [80] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMMIT2) op: assign_op.Equal rhs: { (SQ (Token id:Id.Lit_Chars val:'author A U Thor\n' span_id:85) (Token id: Id.Lit_Chars val: 'author-mail <author@example.com>\n' span_id: 86 ) (Token id:Id.Lit_Chars val:'author-time 1112912053\n' span_id:87) (Token id:Id.Lit_Chars val:'author-tz -0700\n' span_id:88) (Token id:Id.Lit_Chars val:'committer C O Mitter\n' span_id:89) (Token id: Id.Lit_Chars val: 'committer-mail <committer@example.com>\n' span_id: 90 ) (Token id:Id.Lit_Chars val:'committer-time 1112912053\n' span_id:91) (Token id:Id.Lit_Chars val:'committer-tz -0700\n' span_id:92) (Token id:Id.Lit_Chars val:'summary two\n' span_id:93) (Token id: Id.Lit_Chars val: 'previous baf5e0b3869e0b2b2beb395a3720c7b51eac94fc file\n' span_id: 94 ) (Token id:Id.Lit_Chars val:'filename file' span_id:95) ) } spids: [83] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:101) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:104) fd: -1 here_begin: {(EOF)} here_end_span_id: 124 stdin_parts: [ ($ Id.VSub_DollarName '$ID1') (' 1 1 1\n') ($ Id.VSub_DollarName '$COMMIT1') ('\n') ('\ta\n') ($ Id.VSub_DollarName '$ID2') (' 2 2 3\n') ($ Id.VSub_DollarName '$COMMIT2') ('\n') ('\tb\n') ($ Id.VSub_DollarName '$ID2') (' 3 3\n') ('\tc\n') ($ Id.VSub_DollarName '$ID2') (' 4 4\n') ('\td\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blame --porcelain output' span_id:128))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:132) (Token id: Id.Lit_Chars val: '\tgit blame --porcelain file >actual &&\n' span_id: 133 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:134) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:140) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:143) fd: -1 here_begin: {(EOF)} here_end_span_id: 167 stdin_parts: [ ($ Id.VSub_DollarName '$ID1') (' 1 1 1\n') ($ Id.VSub_DollarName '$COMMIT1') ('\n') ('\ta\n') ($ Id.VSub_DollarName '$ID2') (' 2 2 3\n') ($ Id.VSub_DollarName '$COMMIT2') ('\n') ('\tb\n') ($ Id.VSub_DollarName '$ID2') (' 3 3\n') ($ Id.VSub_DollarName '$COMMIT2') ('\n') ('\tc\n') ($ Id.VSub_DollarName '$ID2') (' 4 4\n') ($ Id.VSub_DollarName '$COMMIT2') ('\n') ('\td\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blame --line-porcelain output' span_id:171))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:175) (Token id: Id.Lit_Chars val: '\tgit blame --line-porcelain file >actual &&\n' span_id: 176 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:177) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--porcelain detects first non-blank line as subject' span_id: 184 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:188) (Token id:Id.Lit_Chars val:'\t(\n' span_id:189) (Token id:Id.Lit_Chars val:'\t\tGIT_INDEX_FILE=.git/tmp-index &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\texport GIT_INDEX_FILE &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\t\techo "This is it" >single-file &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\t\tgit add single-file &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\ttree=$(git write-tree) &&\n' span_id:194) (Token id: Id.Lit_Chars val: '\t\tcommit=$(printf "%s\\n%s\\n%s\\n\\n\\n \\noneline\\n\\nbody\\n" \\\n' span_id: 195 ) (Token id:Id.Lit_Chars val:'\t\t\t"tree $tree" \\\n' span_id:196) (Token id: Id.Lit_Chars val: '\t\t\t"author A <a@b.c> 123456789 +0000" \\\n' span_id: 197 ) (Token id:Id.Lit_Chars val:'\t\t\t"committer C <c@d.e> 123456789 +0000" |\n' span_id:198) (Token id: Id.Lit_Chars val: '\t\tgit hash-object -w -t commit --stdin) &&\n' span_id: 199 ) (Token id: Id.Lit_Chars val: '\t\tgit blame --porcelain $commit -- single-file >output &&\n' span_id: 200 ) (Token id:Id.Lit_Chars val:'\t\tgrep "^summary oneline$" output\n' span_id:201) (Token id:Id.Lit_Chars val:'\t)\n' span_id:202) ) } ) (C {(test_done)}) ] )