(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 shortlog\n' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:27))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:31) (Token id:Id.Lit_Chars val:'\techo 1 >a1 &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit add a1 &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\ttree=$(git write-tree) &&\n' span_id:34) (Token id: Id.Lit_Chars val: '\tcommit=$(printf "%s\\n" "Test" "" | git commit-tree "$tree") &&\n' span_id: 35 ) (Token id:Id.Lit_Chars val:'\tgit update-ref HEAD "$commit" &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\n' span_id:37) (Token id:Id.Lit_Chars val:'\techo 2 >a1 &&\n' span_id:38) (Token id: Id.Lit_Chars val: '\tgit commit --quiet -m "This is a very, very long first line for the commit message to see if it is wrapped correctly" a1 &&\n' span_id: 39 ) (Token id:Id.Lit_Chars val:'\n' span_id:40) (Token id: Id.Lit_Chars val: '\t# test if the wrapping is still valid\n' span_id: 41 ) (Token id:Id.Lit_Chars val:'\t# when replacing all is by treble clefs.\n' span_id:42) (Token id:Id.Lit_Chars val:'\techo 3 >a1 &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tgit commit --quiet -m "$(\n' span_id:44) (Token id: Id.Lit_Chars val: '\t\techo "This is a very, very long first line for the commit message to see if it is wrapped correctly" |\n' span_id: 45 ) (Token id:Id.Lit_Chars val:'\t\tsed "s/i/1234/g" |\n' span_id:46) (Token id: Id.Lit_Chars val: '\t\ttr 1234 "\\360\\235\\204\\236")" a1 &&\n' span_id: 47 ) (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\t# now fsck up the utf8\n' span_id:49) (Token id:Id.Lit_Chars val:'\tgit config i18n.commitencoding non-utf-8 &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\techo 4 >a1 &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\tgit commit --quiet -m "$(\n' span_id:52) (Token id: Id.Lit_Chars val: '\t\techo "This is a very, very long first line for the commit message to see if it is wrapped correctly" |\n' span_id: 53 ) (Token id:Id.Lit_Chars val:'\t\tsed "s/i/1234/g" |\n' span_id:54) (Token id: Id.Lit_Chars val: '\t\ttr 1234 "\\370\\235\\204\\236")" a1 &&\n' span_id: 55 ) (Token id:Id.Lit_Chars val:'\n' span_id:56) (Token id:Id.Lit_Chars val:'\techo 5 >a1 &&\n' span_id:57) (Token id: Id.Lit_Chars val: '\tgit commit --quiet -m "a\t\t\t\t\t\t\t\t12\t34\t56\t78" a1 &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\techo 6 >a1 &&\n' span_id:60) (Token id: Id.Lit_Chars val: '\tgit commit --quiet -m "Commit by someone else" \\\n' span_id: 61 ) (Token id:Id.Lit_Chars val:'\t\t--author="Someone else <not!me>" a1 &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'\tcat >expect.template <<-\\EOF\n' span_id:64) (Token id:Id.Lit_Chars val:'\tA U Thor (5):\n' span_id:65) (Token id:Id.Lit_Chars val:'\t SUBJECT\n' span_id:66) (Token id:Id.Lit_Chars val:'\t SUBJECT\n' span_id:67) (Token id:Id.Lit_Chars val:'\t SUBJECT\n' span_id:68) (Token id:Id.Lit_Chars val:'\t SUBJECT\n' span_id:69) (Token id:Id.Lit_Chars val:'\t SUBJECT\n' span_id:70) (Token id:Id.Lit_Chars val:'\n' span_id:71) (Token id:Id.Lit_Chars val:'\tSomeone else (1):\n' span_id:72) (Token id:Id.Lit_Chars val:'\t SUBJECT\n' span_id:73) (Token id:Id.Lit_Chars val:'\n' span_id:74) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:75) ) } ) (command.ShFunction name: fuzz body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [86] ) ] ) (command.Simple words: [ {(sed)} { (DQ ('\n') ('\t\t\ts/') ($ Id.VSub_DollarName '$_x40') ('/OBJECT_NAME/g\n') ('\t\t\ts/') ($ Id.VSub_DollarName '$_x05') ('/OBJID/g\n') ('\t\t\ts/^ ') (Id.Lit_Other '\\') ('{6') (Id.Lit_Other '\\') ('}[CTa].*/ SUBJECT/g\n') ('\t\t\ts/^ ') (Id.Lit_Other '\\') ('{8') (Id.Lit_Other '\\') ('}[^ ].*/ CONTINUATION/g\n') ('\t\t') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:115) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$file'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:120) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$file') (.fuzzy))} ) ] ) (command.Simple words: [{(sed)} {(DQ ('/CONTINUATION/ d'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:135) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$file') (.fuzzy))} ) ] ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'default output format' span_id:147))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id:Id.Lit_Chars val:'\tgit shortlog HEAD >log &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\tfuzz log >log.predictable &&\n' span_id:153) (Token id: Id.Lit_Chars val: '\ttest_cmp expect.template log.predictable\n' span_id: 154 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pretty format' span_id:161))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:165) (Token id: Id.Lit_Chars val: '\tsed s/SUBJECT/OBJECT_NAME/ expect.template >expect &&\n' span_id: 166 ) (Token id:Id.Lit_Chars val:'\tgit shortlog --format="%H" HEAD >log &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\tfuzz log >log.predictable &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\ttest_cmp expect log.predictable\n' span_id:169) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:--abbrev span_id:176))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id: Id.Lit_Chars val: '\tsed s/SUBJECT/OBJID/ expect.template >expect &&\n' span_id: 181 ) (Token id:Id.Lit_Chars val:'\tgit shortlog --format="%h" --abbrev=5 HEAD >log &&\n' span_id:182) (Token id:Id.Lit_Chars val:'\tfuzz log >log.predictable &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\ttest_cmp expect log.predictable\n' span_id:184) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'output from user-defined format is re-wrapped' span_id:191))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:195) (Token id: Id.Lit_Chars val: '\tsed "s/SUBJECT/two lines/" expect.template >expect &&\n' span_id: 196 ) (Token id:Id.Lit_Chars val:'\tgit shortlog --format="two%nlines" HEAD >log &&\n' span_id:197) (Token id:Id.Lit_Chars val:'\tfuzz log >log.predictable &&\n' span_id:198) (Token id:Id.Lit_Chars val:'\ttest_cmp expect log.predictable\n' span_id:199) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'shortlog wrapping' span_id:209))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id:Id.Lit_Chars val:'\tcat >expect <<\\EOF &&\n' span_id:214) (Token id:Id.Lit_Chars val:'A U Thor (5):\n' span_id:215) (Token id:Id.Lit_Chars val:' Test\n' span_id:216) (Token id: Id.Lit_Chars val: ' This is a very, very long first line for the commit message to see if\n' span_id: 217 ) (Token id:Id.Lit_Chars val:' it is wrapped correctly\n' span_id:218) (Token id: Id.Lit_Chars val: ' Th\xf0\x9d\x84\x9es \xf0\x9d\x84\x9es a very, very long f\xf0\x9d\x84\x9erst l\xf0\x9d\x84\x9ene for the comm\xf0\x9d\x84\x9et message to see \xf0\x9d\x84\x9ef\n' span_id: 219 ) (Token id: Id.Lit_Chars val: ' \xf0\x9d\x84\x9et \xf0\x9d\x84\x9es wrapped correctly\n' span_id: 220 ) (Token id: Id.Lit_Chars val: ' Th\xf8\x9d\x84\x9es \xf8\x9d\x84\x9es a very, very long f\xf8\x9d\x84\x9erst l\xf8\x9d\x84\x9ene for the comm\xf8\x9d\x84\x9et\n' span_id: 221 ) (Token id: Id.Lit_Chars val: ' message to see \xf8\x9d\x84\x9ef \xf8\x9d\x84\x9et \xf8\x9d\x84\x9es wrapped correctly\n' span_id: 222 ) (Token id:Id.Lit_Chars val:' a\t\t\t\t\t\t\t\t12\t34\n' span_id:223) (Token id:Id.Lit_Chars val:' 56\t78\n' span_id:224) (Token id:Id.Lit_Chars val:'\n' span_id:225) (Token id:Id.Lit_Chars val:'Someone else (1):\n' span_id:226) (Token id:Id.Lit_Chars val:' Commit by someone else\n' span_id:227) (Token id:Id.Lit_Chars val:'\n' span_id:228) (Token id:Id.Lit_Chars val:'EOF\n' span_id:229) (Token id:Id.Lit_Chars val:'\tgit shortlog -w HEAD >out &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\ttest_cmp expect out\n' span_id:231) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'shortlog from non-git directory' span_id:241))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:245) (Token id: Id.Lit_Chars val: '\tgit log --no-expand-tabs HEAD >log &&\n' span_id: 246 ) (Token id:Id.Lit_Chars val:'\tGIT_DIR=non-existing git shortlog -w <log >out &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\ttest_cmp expect out\n' span_id:248) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'shortlog can read --format=raw output' span_id:258))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:262) (Token id:Id.Lit_Chars val:'\tgit log --format=raw HEAD >log &&\n' span_id:263) (Token id:Id.Lit_Chars val:'\tGIT_DIR=non-existing git shortlog -w <log >out &&\n' span_id:264) (Token id:Id.Lit_Chars val:'\ttest_cmp expect out\n' span_id:265) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'shortlog should add newline when input line matches wraplen' span_id: 272 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:276) (Token id:Id.Lit_Chars val:'\tcat >expect <<\\EOF &&\n' span_id:277) (Token id:Id.Lit_Chars val:'A U Thor (2):\n' span_id:278) (Token id: Id.Lit_Chars val: ' bbbbbbbbbbbbbbbbbb: bbbbbbbb bbb bbbb bbbbbbb bb bbbb bbb bbbbb bbbbbb\n' span_id: 279 ) (Token id: Id.Lit_Chars val: ' aaaaaaaaaaaaaaaaaaaaaa: aaaaaa aaaaaaaaaa aaaa aaaaaaaa aa aaaa aa aaa\n' span_id: 280 ) (Token id:Id.Lit_Chars val:'\n' span_id:281) (Token id:Id.Lit_Chars val:'EOF\n' span_id:282) (Token id:Id.Lit_Chars val:'\tgit shortlog -w >out <<\\EOF &&\n' span_id:283) (Token id:Id.Lit_Chars val:'commit 0000000000000000000000000000000000000001\n' span_id:284) (Token id:Id.Lit_Chars val:'Author: A U Thor <author@example.com>\n' span_id:285) (Token id:Id.Lit_Chars val:'Date: Thu Apr 7 15:14:13 2005 -0700\n' span_id:286) (Token id:Id.Lit_Chars val:'\n' span_id:287) (Token id: Id.Lit_Chars val: ' aaaaaaaaaaaaaaaaaaaaaa: aaaaaa aaaaaaaaaa aaaa aaaaaaaa aa aaaa aa aaa\n' span_id: 288 ) (Token id:Id.Lit_Chars val:'\n' span_id:289) (Token id: Id.Lit_Chars val: 'commit 0000000000000000000000000000000000000002\n' span_id: 290 ) (Token id:Id.Lit_Chars val:'Author: A U Thor <author@example.com>\n' span_id:291) (Token id:Id.Lit_Chars val:'Date: Thu Apr 7 15:14:13 2005 -0700\n' span_id:292) (Token id:Id.Lit_Chars val:'\n' span_id:293) (Token id: Id.Lit_Chars val: ' bbbbbbbbbbbbbbbbbb: bbbbbbbb bbb bbbb bbbbbbb bb bbbb bbb bbbbb bbbbbb\n' span_id: 294 ) (Token id:Id.Lit_Chars val:'\n' span_id:295) (Token id:Id.Lit_Chars val:'EOF\n' span_id:296) (Token id:Id.Lit_Chars val:'\ttest_cmp expect out\n' span_id:297) ) } ) (command.ShFunction name: iconvfromutf8toiso88591 body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(printf)} {(DQ ('%s'))} {(DQ ($ Id.VSub_Star '$*'))}) (C {(iconv)} {(-f)} {(UTF-8)} {(-t)} {(ISO8859-1)}) ] negated: F ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DSCHO) op: assign_op.Equal rhs: { (DQ ('J\xc3\xb6h\xc3\xa4nn\xc3\xabs ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:336) ) ('Dsch\xc3\xb6') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:338)) (' Schind\xc3\xablin') ) } spids: [333] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DSCHOE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$DSCHO') (' <Johannes.Schindelin@gmx.de>'))} spids: [342] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MSG1) op: assign_op.Equal rhs: {(DQ ('set a1 to 2 and some non-ASCII chars: \xc3\x84\xc3\x9f\xc3\xb8'))} spids: [348] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MSG2) op: assign_op.Equal rhs: {(DQ ('set a1 to 3 and some non-ASCII chars: \xc3\xa1\xc3\xa6\xc3\xaf'))} spids: [353] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:360) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:364) fd: -1 here_begin: {(EOF)} here_end_span_id: 378 stdin_parts: [ ($ Id.VSub_DollarName '$DSCHO') (' (2):\n') (' ') ($ Id.VSub_DollarName '$MSG1') ('\n') (' ') ($ Id.VSub_DollarName '$MSG2') ('\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:'shortlog encoding' span_id:386))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:390) (Token id:Id.Lit_Chars val:'\tgit reset --hard "$commit" &&\n' span_id:391) (Token id:Id.Lit_Chars val:'\tgit config --unset i18n.commitencoding &&\n' span_id:392) (Token id:Id.Lit_Chars val:'\techo 2 > a1 &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\tgit commit --quiet -m "$MSG1" --author="$DSCHOE" a1 &&\n' span_id:394) (Token id: Id.Lit_Chars val: '\tgit config i18n.commitencoding "ISO8859-1" &&\n' span_id: 395 ) (Token id:Id.Lit_Chars val:'\techo 3 > a1 &&\n' span_id:396) (Token id: Id.Lit_Chars val: '\tgit commit --quiet -m "$(iconvfromutf8toiso88591 "$MSG2")" \\\n' span_id: 397 ) (Token id:Id.Lit_Chars val:'\t\t--author="$(iconvfromutf8toiso88591 "$DSCHOE")" a1 &&\n' span_id:398) (Token id: Id.Lit_Chars val: '\tgit config --unset i18n.commitencoding &&\n' span_id: 399 ) (Token id:Id.Lit_Chars val:'\tgit shortlog HEAD~2.. > out &&\n' span_id:400) (Token id:Id.Lit_Chars val:'test_cmp expect out' span_id:401) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'shortlog with revision pseudo options' span_id:408))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:412) (Token id:Id.Lit_Chars val:'\tgit shortlog --all &&\n' span_id:413) (Token id:Id.Lit_Chars val:'\tgit shortlog --branches &&\n' span_id:414) (Token id: Id.Lit_Chars val: '\tgit shortlog --exclude=refs/heads/m* --all\n' span_id: 415 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'shortlog with --output=<file>' span_id:422))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:426) (Token id: Id.Lit_Chars val: '\tgit shortlog --output=shortlog -1 master >output &&\n' span_id: 427 ) (Token id:Id.Lit_Chars val:'\ttest ! -s output &&\n' span_id:428) (Token id:Id.Lit_Chars val:'\ttest_line_count = 3 shortlog\n' span_id:429) ) } ) (C {(test_done)}) ] )