(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:'check quarantine of objects during push' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'create picky dest repo' span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\tgit init --bare dest.git &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\twrite_script dest.git/hooks/pre-receive <<-\\EOF\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\twhile read old new ref; do\n' span_id:24) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest "$(git log -1 --format=%s $new)" = reject && exit 1\n'
            span_id: 25
          ) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:26) (Token id:Id.Lit_Chars val:'\texit 0\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:28)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'accepted objects work' span_id:35))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\ttest_commit ok &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit push dest.git HEAD &&\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\tcommit=$(git rev-parse HEAD) &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit --git-dir=dest.git cat-file commit $commit\n' span_id:43)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rejected objects are not installed' span_id:50))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\ttest_commit reject &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\tcommit=$(git rev-parse HEAD) &&\n' span_id:56) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git push dest.git reject &&\n'
            span_id: 57
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git --git-dir=dest.git cat-file commit $commit\n'
            span_id: 58
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rejected objects are removed' span_id:65))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\techo "incoming-*" >expect &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\t(cd dest.git/objects && echo incoming-*) >actual &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:72)
        )
      }
    )
    (C {(test_done)})
  ]
)