(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 with invalid commit headers' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\ttest_commit foo &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD |\n' span_id:25) (Token id:Id.Lit_Chars val:'\tsed "/^author /s/>/>-<>/" >broken_email.commit &&\n' span_id:26) (Token id: Id.Lit_Chars val: '\tgit hash-object -w -t commit broken_email.commit >broken_email.hash &&\n' span_id: 27 ) (Token id: Id.Lit_Chars val: '\tgit update-ref refs/heads/broken_email $(cat broken_email.hash)\n' span_id: 28 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fsck notices broken commit' span_id:35))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) (Token id:Id.Lit_Chars val:'\ttest_must_fail git fsck 2>actual &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep invalid.author actual\n' span_id:41) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git log with broken author email' span_id:48))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\t{\n' span_id:53) (Token id: Id.Lit_Chars val: '\t\techo commit $(cat broken_email.hash)\n' span_id: 54 ) (Token id:Id.Lit_Chars val:'\t\techo "Author: A U Thor <author@example.com>"\n' span_id:55) (Token id: Id.Lit_Chars val: '\t\techo "Date: Thu Apr 7 15:13:13 2005 -0700"\n' span_id: 56 ) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\techo " foo"\n' span_id:58) (Token id:Id.Lit_Chars val:'\t} >expect.out &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\t: >expect.err &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\n' span_id:61) (Token id: Id.Lit_Chars val: '\tgit log broken_email >actual.out 2>actual.err &&\n' span_id: 62 ) (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.out actual.out &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.err actual.err\n' span_id:65) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git log --format with broken author email' span_id:72))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:76) (Token id: Id.Lit_Chars val: '\techo "A U Thor+author@example.com+Thu Apr 7 15:13:13 2005 -0700" >expect.out &&\n' span_id: 77 ) (Token id:Id.Lit_Chars val:'\t: >expect.err &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\n' span_id:79) (Token id: Id.Lit_Chars val: '\tgit log --format="%an+%ae+%ad" broken_email >actual.out 2>actual.err &&\n' span_id: 80 ) (Token id:Id.Lit_Chars val:'\n' span_id:81) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.out actual.out &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.err actual.err\n' span_id:83) ) } ) (command.ShFunction name: munge_author_date body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(git)} {(cat-file)} {(commit)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:105) fd: -1 arg_word: {(commit.orig)} ) ] ) (command.Simple words: [ {(sed)} { (DQ ('s/^') (Id.Lit_Other '\\') ('(author .*>') (Id.Lit_Other '\\') (') [0-9]*/') (Id.Lit_Other '\\') ('1 ') ($ Id.VSub_Number '$2') (/) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:125) fd: -1 arg_word: {(commit.orig)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:128) fd: -1 arg_word: {(commit.munge)} ) ] ) (C {(git)} {(hash-object)} {(-w)} {(-t)} {(commit)} {(commit.munge)}) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unparsable dates produce sentinel value' span_id:152))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:156) (Token id: Id.Lit_Chars val: '\tcommit=$(munge_author_date HEAD totally_bogus) &&\n' span_id: 157 ) (Token id:Id.Lit_Chars val:'\techo "Date: Thu Jan 1 00:00:00 1970 +0000" >expect &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\tgit log -1 $commit >actual.full &&\n' span_id:159) (Token id:Id.Lit_Chars val:'\tgrep Date <actual.full >actual &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:161) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unparsable dates produce sentinel value (%ad)' span_id:168))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:172) (Token id: Id.Lit_Chars val: '\tcommit=$(munge_author_date HEAD totally_bogus) &&\n' span_id: 173 ) (Token id:Id.Lit_Chars val:'\techo >expect &&\n' span_id:174) (Token id: Id.Lit_Chars val: '\tgit log -1 --format=%ad $commit >actual &&\n' span_id: 175 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:176) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'date parser recognizes integer overflow' span_id:186))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:190) (Token id: Id.Lit_Chars val: '\tcommit=$(munge_author_date HEAD 18446744073709551617) &&\n' span_id: 191 ) (Token id:Id.Lit_Chars val:'\techo "Thu Jan 1 00:00:00 1970 +0000" >expect &&\n' span_id:192) (Token id: Id.Lit_Chars val: '\tgit log -1 --format=%ad $commit >actual &&\n' span_id: 193 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:194) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'date parser recognizes time_t overflow' span_id:204))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:208) (Token id: Id.Lit_Chars val: '\tcommit=$(munge_author_date HEAD 18446744073709551614) &&\n' span_id: 209 ) (Token id:Id.Lit_Chars val:'\techo "Thu Jan 1 00:00:00 1970 +0000" >expect &&\n' span_id:210) (Token id: Id.Lit_Chars val: '\tgit log -1 --format=%ad $commit >actual &&\n' span_id: 211 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:212) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'absurdly far-in-future date' span_id:222))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:226) (Token id: Id.Lit_Chars val: '\tcommit=$(munge_author_date HEAD 999999999999999999) &&\n' span_id: 227 ) (Token id:Id.Lit_Chars val:'\tgit log -1 --format=%ad $commit\n' span_id:228) ) } ) (C {(test_done)}) ] )