(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"adding and checking out large blobs">)}
          spids: [7]
        )
      ]
      spids: [7]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <"\n"> <"\t# clone does not allow us to pass core.bigfilethreshold to\n"> 
          <"\t# new repos, so set core.bigfilethreshold globally\n"> <"\tgit config --global core.bigfilethreshold 200k &&\n"> <"\tprintf \"%2000000s\" X >large1 &&\n"> 
          <"\tcp large1 large2 &&\n"> <"\tcp large1 large3 &&\n"> <"\tprintf \"%2500000s\" Y >huge &&\n"> <"\tGIT_ALLOC_LIMIT=1500k &&\n"> 
          <"\texport GIT_ALLOC_LIMIT\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"add a large file or two">)} 
      {
        (SQ <"\n"> <"\tgit add large1 huge large2 &&\n"> 
          <"\t# make sure we got a single packfile and no loose objects\n"> <"\tbad= count=0 idx= &&\n"> <"\tfor p in .git/objects/pack/pack-*.pack\n"> <"\tdo\n"> 
          <"\t\tcount=$(( $count + 1 ))\n"> <"\t\tif test -f \"$p\" && idx=${p%.pack}.idx && test -f \"$idx\"\n"> <"\t\tthen\n"> 
          <"\t\t\tcontinue\n"> <"\t\tfi\n"> <"\t\tbad=t\n"> <"\tdone &&\n"> <"\ttest -z \"$bad\" &&\n"> <"\ttest $count = 1 &&\n"> 
          <"\tcnt=$(git show-index <\"$idx\" | wc -l) &&\n"> <"\ttest $cnt = 2 &&\n"> <"\tfor l in .git/objects/??/??????????????????????????????????????\n"> 
          <"\tdo\n"> <"\t\ttest -f \"$l\" || continue\n"> <"\t\tbad=t\n"> <"\tdone &&\n"> <"\ttest -z \"$bad\" &&\n"> <"\n"> 
          <"\t# attempt to add another copy of the same\n"> <"\tgit add large3 &&\n"> <"\tbad= count=0 &&\n"> <"\tfor p in .git/objects/pack/pack-*.pack\n"> 
          <"\tdo\n"> <"\t\tcount=$(( $count + 1 ))\n"> 
          <"\t\tif test -f \"$p\" && idx=${p%.pack}.idx && test -f \"$idx\"\n"> <"\t\tthen\n"> <"\t\t\tcontinue\n"> <"\t\tfi\n"> <"\t\tbad=t\n"> <"\tdone &&\n"> 
          <"\ttest -z \"$bad\" &&\n"> <"\ttest $count = 1\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"checkout a large file">)} 
      {
        (SQ <"\n"> <"\tlarge1=$(git rev-parse :large1) &&\n"> 
          <"\tgit update-index --add --cacheinfo 100644 $large1 another &&\n"> <"\tgit checkout another &&\n"> <"\ttest_cmp large1 another\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"packsize limit">)} 
      {
        (SQ <"\n"> <"\ttest_create_repo mid &&\n"> <"\t(\n"> <"\t\tcd mid &&\n"> 
          <"\t\tgit config core.bigfilethreshold 64k &&\n"> <"\t\tgit config pack.packsizelimit 256k &&\n"> <"\n"> 
          <"\t\t# mid1 and mid2 will fit within 256k limit but\n"> <"\t\t# appending mid3 will bust the limit and will\n"> <"\t\t# result in a separate packfile.\n"> 
          <"\t\ttest-genrandom \"a\" $(( 66 * 1024 )) >mid1 &&\n"> <"\t\ttest-genrandom \"b\" $(( 80 * 1024 )) >mid2 &&\n"> 
          <"\t\ttest-genrandom \"c\" $(( 128 * 1024 )) >mid3 &&\n"> <"\t\tgit add mid1 mid2 mid3 &&\n"> <"\n"> <"\t\tcount=0\n"> 
          <"\t\tfor pi in .git/objects/pack/pack-*.idx\n"> <"\t\tdo\n"> <"\t\t\ttest -f \"$pi\" && count=$(( $count + 1 ))\n"> <"\t\tdone &&\n"> 
          <"\t\ttest $count = 2 &&\n"> <"\n"> <"\t\t(\n"> <"\t\t\tgit hash-object --stdin <mid1\n"> <"\t\t\tgit hash-object --stdin <mid2\n"> 
          <"\t\t\tgit hash-object --stdin <mid3\n"> <"\t\t) |\n"> <"\t\tsort >expect &&\n"> <"\n"> <"\t\tfor pi in .git/objects/pack/pack-*.idx\n"> 
          <"\t\tdo\n"> <"\t\t\tgit show-index <\"$pi\"\n"> <"\t\tdone |\n"> 
          <"\t\tsed -e \"s/^[0-9]* \\([0-9a-f]*\\) .*/\\1/\" |\n"> <"\t\tsort >actual &&\n"> <"\n"> <"\t\ttest_cmp expect actual\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"diff --raw">)} 
      {
        (SQ <"\n"> <"\tgit commit -q -m initial &&\n"> <"\techo modified >>large1 &&\n"> 
          <"\tgit add large1 &&\n"> <"\tgit commit -q -m modified &&\n"> <"\tgit diff --raw HEAD^\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"diff --stat">)} {(SQ <"\n"> <"\tgit diff --stat HEAD^ HEAD\n">)})
    (C {(test_expect_success)} {(SQ <diff>)} 
      {
        (SQ <"\n"> <"\tgit diff HEAD^ HEAD >actual &&\n"> <"\tgrep \"Binary files.*differ\" actual\n">)
      }
    )
    (C {(test_expect_success)} {(SQ <"diff --cached">)} 
      {
        (SQ <"\n"> <"\tgit diff --cached HEAD^ >actual &&\n"> 
          <"\tgrep \"Binary files.*differ\" actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <hash-object>)} {(SQ <"\n"> <"\tgit hash-object large1\n">)})
    (C {(test_expect_success)} {(SQ <"cat-file a large file">)} 
      {(SQ <"\n"> <"\tgit cat-file blob :large1 >/dev/null\n">)}
    )
    (C {(test_expect_success)} {(SQ <"cat-file a large file from a tag">)} 
      {
        (SQ <"\n"> <"\tgit tag -m largefile largefiletag :large1 &&\n"> 
          <"\tgit cat-file blob largefiletag >/dev/null\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"git-show a large file">)} 
      {(SQ <"\n"> <"\tgit show :large1 >/dev/null\n"> <"\n">)}
    )
    (C {(test_expect_success)} {(SQ <index-pack>)} 
      {
        (SQ <"\n"> <"\tgit clone file://\"$(pwd)\"/.git foo &&\n"> 
          <
"\tGIT_DIR=non-existent git index-pack --strict --verify foo/.git/objects/pack/*.pack\n"
          >
        )
      }
    )
    (C {(test_expect_success)} {(SQ <repack>)} {(SQ <"\n"> <"\tgit repack -ad\n">)})
    (C {(test_expect_success)} {(SQ <"pack-objects with large loose object">)} 
      {
        (SQ <"\n"> <"\tSHA1=$(git hash-object huge) &&\n"> <"\ttest_create_repo loose &&\n"> 
          <"\techo $SHA1 | git pack-objects --stdout |\n"> <"\t\tGIT_ALLOC_LIMIT=0 GIT_DIR=loose/.git git unpack-objects &&\n"> 
          <"\techo $SHA1 | GIT_DIR=loose/.git git pack-objects pack &&\n"> <"\ttest_create_repo packed &&\n"> <"\tmv pack-* packed/.git/objects/pack &&\n"> 
          <"\tGIT_DIR=packed/.git git cat-file blob $SHA1 >actual &&\n"> <"\ttest_cmp huge actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"tar achiving">)} 
      {(SQ <"\n"> <"\tgit archive --format=tar HEAD >/dev/null\n">)}
    )
    (C {(test_expect_success)} {(SQ <"zip achiving, store only">)} 
      {(SQ <"\n"> <"\tgit archive --format=zip -0 HEAD >/dev/null\n">)}
    )
    (C {(test_expect_success)} {(SQ <"zip achiving, deflate">)} 
      {(SQ <"\n"> <"\tgit archive --format=zip HEAD >/dev/null\n">)}
    )
    (C {(test_expect_success)} {(SQ <"fsck large blobs">)} 
      {(SQ <"\n"> <"\tgit fsck 2>err &&\n"> <"\ttest_must_be_empty err\n">)}
    )
    (C {(test_done)})
  ]
)