(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"check receive input limits">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (FuncDef
      name: test_pack_input_limit
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number "$1"))}
              arms: [
                (case_arm
                  pat_list: [{(index)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:unpack_limit)
                          op: Equal
                          rhs: {(1)}
                          spids: [44]
                        )
                      ]
                      spids: [44]
                    )
                  ]
                  spids: [41 42 47 -1]
                )
                (case_arm
                  pat_list: [{(unpack)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:unpack_limit)
                          op: Equal
                          rhs: {(10000)}
                          spids: [53]
                        )
                      ]
                      spids: [53]
                    )
                  ]
                  spids: [50 51 56 -1]
                )
              ]
              spids: [32 38 59]
            )
            (C {(test_expect_success)} {(SQ <"prepare destination repository">)} 
              {(SQ <"\n"> <"\t\trm -fr dest &&\n"> <"\t\tgit --bare init dest\n"> <"\t">)}
            )
            (C {(test_expect_success)} {(DQ ("set unpacklimit to ") ($ VSub_Name "$unpack_limit"))} 
              {
                (SQ <"\n"> <"\t\tgit --git-dir=dest config receive.unpacklimit \"$unpack_limit\"\n"> 
                  <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(SQ <"setting receive.maxInputSize to 512 rejects push">)} 
              {
                (SQ <"\n"> <"\t\tgit --git-dir=dest config receive.maxInputSize 512 &&\n"> 
                  <"\t\ttest_must_fail git push dest HEAD\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(SQ <"bumping limit to 4k allows push">)} 
              {
                (SQ <"\n"> <"\t\tgit --git-dir=dest config receive.maxInputSize 4k &&\n"> 
                  <"\t\tgit push dest HEAD\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(SQ <"prepare destination repository (again)">)} 
              {(SQ <"\n"> <"\t\trm -fr dest &&\n"> <"\t\tgit --bare init dest\n"> <"\t">)}
            )
            (C {(test_expect_success)} {(SQ <"lifting the limit allows push">)} 
              {
                (SQ <"\n"> <"\t\tgit --git-dir=dest config receive.maxInputSize 0 &&\n"> 
                  <"\t\tgit push dest HEAD\n"> <"\t">
                )
              }
            )
          ]
          spids: [29]
        )
      spids: [24 28]
    )
    (C {(test_expect_success)} {(DQ ("create known-size (1024 bytes) commit"))} 
      {
        (SQ <"\n"> <"\ttest-genrandom foo 1024 >one-k &&\n"> <"\tgit add one-k &&\n"> 
          <"\ttest_commit one-k\n">
        )
      }
    )
    (C {(test_pack_input_limit)} {(index)})
    (C {(test_pack_input_limit)} {(unpack)})
    (C {(test_done)})
  ]
)