(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:'basic tests for fast-export --anonymize' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup simple repo' span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id:Id.Lit_Chars val:'\ttest_commit base &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\ttest_commit foo &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit checkout -b other HEAD^ &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tmkdir subdir &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\ttest_commit subdir/bar &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\ttest_commit subdir/xyzzy &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit tag -m "annotated tag" mytag\n' span_id:28) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'export anonymized stream' span_id:35))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) (Token id: Id.Lit_Chars val: '\tgit fast-export --anonymize --all >stream\n' span_id: 40 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stream omits path names' span_id:50))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:54) (Token id:Id.Lit_Chars val:'\t! grep base stream &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\t! grep foo stream &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\t! grep subdir stream &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\t! grep bar stream &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\t! grep xyzzy stream\n' span_id:59) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stream allows master as refname' span_id:66))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:70) (Token id:Id.Lit_Chars val:'\tgrep master stream\n' span_id:71) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stream omits other refnames' span_id:78))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:82) (Token id:Id.Lit_Chars val:'\t! grep other stream &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\t! grep mytag stream\n' span_id:84) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stream omits identities' span_id:91))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:95) (Token id: Id.Lit_Chars val: '\t! grep "$GIT_COMMITTER_NAME" stream &&\n' span_id: 96 ) (Token id:Id.Lit_Chars val:'\t! grep "$GIT_COMMITTER_EMAIL" stream &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\t! grep "$GIT_AUTHOR_NAME" stream &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\t! grep "$GIT_AUTHOR_EMAIL" stream\n' span_id:99) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stream omits tag message' span_id:106))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:110) (Token id:Id.Lit_Chars val:'\t! grep "annotated tag" stream\n' span_id:111) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'import stream to new repository' span_id:124))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:128) (Token id:Id.Lit_Chars val:'\tgit init new &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\tcd new &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\tgit fast-import <../stream\n' span_id:131) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'result has two branches' span_id:138))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:142) (Token id: Id.Lit_Chars val: '\tgit for-each-ref --format="%(refname)" refs/heads >branches &&\n' span_id: 143 ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 2 branches &&\n' span_id:144) (Token id: Id.Lit_Chars val: '\tother_branch=$(grep -v refs/heads/master branches)\n' span_id: 145 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'repo has original shape and timestamps' span_id:152))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:156) (Token id:Id.Lit_Chars val:'\tshape () {\n' span_id:157) (Token id: Id.Lit_Chars val: '\t\tgit log --format="%m %ct" --left-right --boundary "$@"\n' span_id: 158 ) (Token id:Id.Lit_Chars val:'\t} &&\n' span_id:159) (Token id: Id.Lit_Chars val: '\t(cd .. && shape master...other) >expect &&\n' span_id: 160 ) (Token id:Id.Lit_Chars val:'\tshape master...$other_branch >actual &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:162) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'root tree has original shape' span_id:169))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:173) (Token id: Id.Lit_Chars val: '\t# the output entries are not necessarily in the same\n' span_id: 174 ) (Token id: Id.Lit_Chars val: '\t# order, but we know at least that we will have one tree\n' span_id: 175 ) (Token id:Id.Lit_Chars val:'\t# and one blob, so just check the sorted order\n' span_id:176) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:178) (Token id:Id.Lit_Chars val:'\ttree\n' span_id:179) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:180) (Token id:Id.Lit_Chars val:'\tgit ls-tree $other_branch >root &&\n' span_id:181) (Token id: Id.Lit_Chars val: '\tcut -d" " -f2 <root | sort >actual &&\n' span_id: 182 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:183) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'paths in subdir ended up in one tree' span_id:190))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:194) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:195) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:196) (Token id:Id.Lit_Chars val:'\tblob\n' span_id:197) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:198) (Token id:Id.Lit_Chars val:'\ttree=$(grep tree root | cut -f2) &&\n' span_id:199) (Token id: Id.Lit_Chars val: '\tgit ls-tree $other_branch:$tree >tree &&\n' span_id: 200 ) (Token id:Id.Lit_Chars val:'\tcut -d" " -f2 <tree >actual &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:202) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tag points to branch tip' span_id:209))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id: Id.Lit_Chars val: '\tgit rev-parse $other_branch >expect &&\n' span_id: 214 ) (Token id: Id.Lit_Chars val: '\tgit for-each-ref --format="%(*objectname)" | grep . >actual &&\n' span_id: 215 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:216) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'idents are shared' span_id:223))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:227) (Token id: Id.Lit_Chars val: '\tgit log --all --format="%an <%ae>" >authors &&\n' span_id: 228 ) (Token id:Id.Lit_Chars val:'\tsort -u authors >unique &&\n' span_id:229) (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 unique &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\tgit log --all --format="%cn <%ce>" >committers &&\n' span_id:231) (Token id:Id.Lit_Chars val:'\tsort -u committers >unique &&\n' span_id:232) (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 unique &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\t! test_cmp authors committers\n' span_id:234) ) } ) (C {(test_done)}) ] )