(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'test git fast-import unpack limit'>)}
          spids: [3]
        )
      ]
      spids: [3]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <'create loose objects on import'>)} 
      {
        (SQ <'\n'> <'\ttest_tick &&\n'> <'\tcat >input <<-INPUT_END &&\n'> 
          <'\tcommit refs/heads/master\n'> <'\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n'> <'\tdata <<COMMIT\n'> 
          <'\tinitial\n'> <'\tCOMMIT\n'> <'\n'> <'\tdone\n'> <'\tINPUT_END\n'> <'\n'> 
          <'\tgit -c fastimport.unpackLimit=2 fast-import --done <input &&\n'> <'\tgit fsck --no-progress &&\n'> <'\ttest $(find .git/objects/?? -type f | wc -l) -eq 2 &&\n'> 
          <'\ttest $(find .git/objects/pack -type f | wc -l) -eq 0\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'bigger packs are preserved'>)} 
      {
        (SQ <'\n'> <'\ttest_tick &&\n'> <'\tcat >input <<-INPUT_END &&\n'> 
          <'\tcommit refs/heads/master\n'> <'\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n'> <'\tdata <<COMMIT\n'> 
          <'\tincremental should create a pack\n'> <'\tCOMMIT\n'> <'\tfrom refs/heads/master^0\n'> <'\n'> <'\tcommit refs/heads/branch\n'> 
          <'\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n'> <'\tdata <<COMMIT\n'> <'\tbranch\n'> <'\tCOMMIT\n'> <'\n'> <'\tdone\n'> <'\tINPUT_END\n'> <'\n'> 
          <'\tgit -c fastimport.unpackLimit=2 fast-import --done <input &&\n'> <'\tgit fsck --no-progress &&\n'> <'\ttest $(find .git/objects/?? -type f | wc -l) -eq 2 &&\n'> 
          <'\ttest $(find .git/objects/pack -type f | wc -l) -eq 2\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'lookups after checkpoint works'>)} 
      {
        (SQ <'\n'> <'\thello_id=$(echo hello | git hash-object --stdin -t blob) &&\n'> 
          <'\tid="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE" &&\n'> <'\tbefore=$(git rev-parse refs/heads/master^0) &&\n'> <'\t(\n'> <'\t\tcat <<-INPUT_END &&\n'> 
          <'\t\tblob\n'> <'\t\tmark :1\n'> <'\t\tdata 6\n'> <'\t\thello\n'> <'\n'> <'\t\tcommit refs/heads/master\n'> 
          <'\t\tmark :2\n'> <'\t\tcommitter $id\n'> <'\t\tdata <<COMMIT\n'> <'\t\tcheckpoint after this\n'> <'\t\tCOMMIT\n'> 
          <'\t\tfrom refs/heads/master^0\n'> <'\t\tM 100644 :1 hello\n'> <'\n'> <'\t\t# pre-checkpoint\n'> <'\t\tcat-blob :1\n'> 
          <'\t\tcat-blob $hello_id\n'> <'\t\tcheckpoint\n'> <'\t\t# post-checkpoint\n'> <'\t\tcat-blob :1\n'> <'\t\tcat-blob $hello_id\n'> 
          <'\t\tINPUT_END\n'> <'\n'> <'\t\tn=0 &&\n'> <'\t\tfrom=$before &&\n'> <'\t\twhile test x"$from" = x"$before"\n'> <'\t\tdo\n'> 
          <'\t\t\tif test $n -gt 30\n'> <'\t\t\tthen\n'> <'\t\t\t\techo >&2 "checkpoint did not update branch"\n'> <'\t\t\t\texit 1\n'> 
          <'\t\t\telse\n'> <'\t\t\t\tn=$(($n + 1))\n'> <'\t\t\tfi &&\n'> <'\t\t\tsleep 1 &&\n'> 
          <'\t\t\tfrom=$(git rev-parse refs/heads/master^0)\n'> <'\t\tdone &&\n'> <'\t\tcat <<-INPUT_END &&\n'> <'\t\tcommit refs/heads/master\n'> 
          <'\t\tcommitter $id\n'> <'\t\tdata <<COMMIT\n'> <'\t\tmake sure from "unpacked sha1 reference" works, too\n'> <'\t\tCOMMIT\n'> 
          <'\t\tfrom $from\n'> <'\t\tINPUT_END\n'> <'\t\techo done\n'> 
          <'\t) | git -c fastimport.unpackLimit=100 fast-import --done &&\n'> <'\ttest $(find .git/objects/?? -type f | wc -l) -eq 6 &&\n'> 
          <'\ttest $(find .git/objects/pack -type f | wc -l) -eq 2\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)