(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'signals work as we expect'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[16])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('three\n') ('two\n') ('one\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [19]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'sigchain works'>)} 
      {
        (SQ <'\n'> <'\t{ test-sigchain >actual; ret=$?; } &&\n'> <'\t{\n'> 
          <'\t\t# Signal death by raise() on Windows acts like exit(3),\n'> <'\t\t# regardless of the signal number. So we must allow that\n'> 
          <'\t\t# as well as the normal signal check.\n'> <'\t\ttest_match_signal 15 "$ret" ||\n'> <'\t\ttest "$ret" = 3\n'> <'\t} &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(KW_Bang '!') (MINGW)} 
      {(SQ <'signals are propagated using shell convention'>)} 
      {
        (SQ <'\n'> <'\t# we use exec here to avoid any sub-shell interpretation\n'> 
          <'\t# of the exit code\n'> <'\tgit config alias.sigterm "!exec test-sigchain" &&\n'> <'\ttest_expect_code 143 git sigterm\n'>
        )
      }
    )
    (FuncDef
      name: large_git
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(test_seq)} {(1)} {(100)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [78 84]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      children: [
                        (C {(git)} {(diff)} {(--cached)} {(--binary)})
                        (ControlFlow token:<ControlFlow_Return return>)
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [87 103]
                )
              spids: [77 -1]
            )
          ]
          spids: [69]
        )
      spids: [64 68]
    )
    (C {(test_expect_success)} {(SQ <'create blob'>)} 
      {(SQ <'\n'> <'\ttest-genrandom foo 16384 >file &&\n'> <'\tgit add file\n'>)}
    )
    (C {(test_expect_success)} {(KW_Bang '!') (MINGW)} {(SQ <'a constipated git dies with SIGPIPE'>)} 
      {
        (SQ <'\n'> <'\tOUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) &&\n'> 
          <'\ttest_match_signal 13 "$OUT"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(KW_Bang '!') (MINGW)} 
      {(SQ <'a constipated git dies with SIGPIPE even if parent ignores it'>)} 
      {
        (SQ <'\n'> <'\tOUT=$( ((trap "" PIPE; large_git; echo $? 1>&3) | :) 3>&1 ) &&\n'> 
          <'\ttest_match_signal 13 "$OUT"\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)