(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"basic tests for fast-export --anonymize">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <"setup simple repo">)} 
      {
        (SQ <"\n"> <"\ttest_commit base &&\n"> <"\ttest_commit foo &&\n"> 
          <"\tgit checkout -b other HEAD^ &&\n"> <"\tmkdir subdir &&\n"> <"\ttest_commit subdir/bar &&\n"> <"\ttest_commit subdir/xyzzy &&\n"> 
          <"\tgit tag -m \"annotated tag\" mytag\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"export anonymized stream">)} 
      {(SQ <"\n"> <"\tgit fast-export --anonymize --all >stream\n">)}
    )
    (C {(test_expect_success)} {(SQ <"stream omits path names">)} 
      {
        (SQ <"\n"> <"\t! grep base stream &&\n"> <"\t! grep foo stream &&\n"> 
          <"\t! grep subdir stream &&\n"> <"\t! grep bar stream &&\n"> <"\t! grep xyzzy stream\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"stream allows master as refname">)} 
      {(SQ <"\n"> <"\tgrep master stream\n">)}
    )
    (C {(test_expect_success)} {(SQ <"stream omits other refnames">)} 
      {(SQ <"\n"> <"\t! grep other stream &&\n"> <"\t! grep mytag stream\n">)}
    )
    (C {(test_expect_success)} {(SQ <"stream omits identities">)} 
      {
        (SQ <"\n"> <"\t! grep \"$GIT_COMMITTER_NAME\" stream &&\n"> 
          <"\t! grep \"$GIT_COMMITTER_EMAIL\" stream &&\n"> <"\t! grep \"$GIT_AUTHOR_NAME\" stream &&\n"> <"\t! grep \"$GIT_AUTHOR_EMAIL\" stream\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"stream omits tag message">)} 
      {(SQ <"\n"> <"\t! grep \"annotated tag\" stream\n">)}
    )
    (C {(test_expect_success)} {(SQ <"import stream to new repository">)} 
      {(SQ <"\n"> <"\tgit init new &&\n"> <"\tcd new &&\n"> <"\tgit fast-import <../stream\n">)}
    )
    (C {(test_expect_success)} {(SQ <"result has two branches">)} 
      {
        (SQ <"\n"> <"\tgit for-each-ref --format=\"%(refname)\" refs/heads >branches &&\n"> 
          <"\ttest_line_count = 2 branches &&\n"> <"\tother_branch=$(grep -v refs/heads/master branches)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"repo has original shape and timestamps">)} 
      {
        (SQ <"\n"> <"\tshape () {\n"> 
          <"\t\tgit log --format=\"%m %ct\" --left-right --boundary \"$@\"\n"> <"\t} &&\n"> <"\t(cd .. && shape master...other) >expect &&\n"> 
          <"\tshape master...$other_branch >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"root tree has original shape">)} 
      {
        (SQ <"\n"> <"\t# the output entries are not necessarily in the same\n"> 
          <"\t# order, but we know at least that we will have one tree\n"> <"\t# and one blob, so just check the sorted order\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tblob\n"> 
          <"\ttree\n"> <"\tEOF\n"> <"\tgit ls-tree $other_branch >root &&\n"> <"\tcut -d\" \" -f2 <root | sort >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"paths in subdir ended up in one tree">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tblob\n"> <"\tblob\n"> <"\tEOF\n"> 
          <"\ttree=$(grep tree root | cut -f2) &&\n"> <"\tgit ls-tree $other_branch:$tree >tree &&\n"> <"\tcut -d\" \" -f2 <tree >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"tag points to branch tip">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse $other_branch >expect &&\n"> 
          <"\tgit for-each-ref --format=\"%(*objectname)\" | grep . >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"idents are shared">)} 
      {
        (SQ <"\n"> <"\tgit log --all --format=\"%an <%ae>\" >authors &&\n"> 
          <"\tsort -u authors >unique &&\n"> <"\ttest_line_count = 1 unique &&\n"> <"\tgit log --all --format=\"%cn <%ce>\" >committers &&\n"> 
          <"\tsort -u committers >unique &&\n"> <"\ttest_line_count = 1 unique &&\n"> <"\t! test_cmp authors committers\n">
        )
      }
    )
    (C {(test_done)})
  ]
)