(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)})
  ]
)