(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:'git send-email' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PREREQ)
          op: assign_op.Equal
          rhs: {(DQ (PERL))}
          spids: [17]
        )
      ]
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'prepare reference tree' span_id:28))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:32) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "1A quick brown fox jumps over the" >file &&\n'
            span_id: 33
          ) (Token id:Id.Lit_Chars val:'\techo "lazy dog" >>file &&\n' span_id:34) 
          (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_NAME="A" git commit -a -m "Initial."\n' span_id:36)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Setup helper tool' span_id:45))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:49) 
          (Token
            id: Id.Lit_Chars
            val: '\twrite_script fake.sendmail <<-\\EOF &&\n'
            span_id: 50
          ) (Token id:Id.Lit_Chars val:'\tshift\n' span_id:51) 
          (Token id:Id.Lit_Chars val:'\toutput=1\n' span_id:52) (Token id:Id.Lit_Chars val:'\twhile test -f commandline$output\n' span_id:53) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\toutput=$(($output+1))\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\tdone\n' span_id:56) (Token id:Id.Lit_Chars val:'\tfor a\n' span_id:57) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\t\techo "!$a!"\n' span_id:59) (Token id:Id.Lit_Chars val:'\tdone >commandline$output\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\tcat >"msgtxt$output"\n' span_id:61) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tgit add fake.sendmail &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_NAME="A" git commit -a -m "Second."\n' span_id:64)
        )
      }
    )
    (command.ShFunction
      name: clean_fake_sendmail
      body: 
        (command.BraceGroup
          children: [(C {(rm)} {(-f)} {(commandline) (Id.Lit_Star '*')} {(msgtxt) (Id.Lit_Star '*')})]
        )
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Extract patches' span_id:94))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:98) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tpatches=$(git format-patch -s --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1)\n'
            span_id: 99
          )
        )
      }
    )
    (command.ShFunction
      name: test_no_confirm
      body: 
        (command.BraceGroup
          children: [
            (C {(rm)} {(-f)} {(no_confirm_okay)})
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {(echo)} {(n)})
                    (command.Simple
                      words: [
                        {(git)}
                        {(send-email)}
                        {(--from) (Id.Lit_Equals '=') (DQ ('Example <from@example.com>'))}
                        {(--to) (Id.Lit_Equals '=') (nobody) (Id.Lit_Splice '@example') (.com)}
                        {(--smtp-server) (Id.Lit_Equals '=') 
                          (DQ 
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:159)
                              command_list: (command.CommandList children:[(C {(pwd)})])
                            ) (/fake.sendmail)
                          )
                        }
                        {($ Id.VSub_At '$@')}
                        {($ Id.VSub_DollarName '$patches')}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:173)
                          fd: -1
                          arg_word: {(stdout)}
                        )
                      ]
                      more_env: [(env_pair name:GIT_SEND_EMAIL_NOTTY val:{(1)} spids:[129])]
                    )
                  ]
                  negated: F
                )
                (C {(test_must_fail)} {(grep)} {(DQ ('Send this email'))} {(stdout)})
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:192)
                      fd: -1
                      arg_word: {(no_confirm_okay)}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: check_no_confirm
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Pipeline
                      children: [(C {(test)} {(-f)} {(no_confirm_okay)})]
                      negated: T
                    )
                  ]
                  action: [
                    (C {(say)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 'confirm test failed; skipping remaining tests to prevent hanging'
                            span_id: 226
                          )
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PREREQ)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$PREREQ') (',CHECK_NO_CONFIRM'))}
                          spids: [230]
                        )
                      ]
                    )
                  ]
                  spids: [209 220]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:240)
              arg_word: {(0)}
            )
          ]
        )
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'No confirm with --suppress-cc' span_id:252))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:256) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_no_confirm --suppress-cc=sob &&\n'
            span_id: 257
          ) (Token id:Id.Lit_Chars val:'\tcheck_no_confirm\n' span_id:258)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'No confirm with --confirm=never' span_id:268))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\ttest_no_confirm --confirm=never &&\n' span_id:273) (Token id:Id.Lit_Chars val:'\tcheck_no_confirm\n' span_id:274)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'No confirm with sendemail.confirm=never' span_id:289))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:293) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config sendemail.confirm never &&\n'
            span_id: 294
          ) (Token id:Id.Lit_Chars val:'\ttest_no_confirm --compose --subject=foo &&\n' span_id:295) 
          (Token id:Id.Lit_Chars val:'\tcheck_no_confirm\n' span_id:296)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Send patches' span_id:305))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:309) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit send-email --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors\n'
            span_id: 310
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:319))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:323) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF\n' span_id:324) (Token id:Id.Lit_Chars val:'\t!nobody@example.com!\n' span_id:325) 
          (Token id:Id.Lit_Chars val:'\t!author@example.com!\n' span_id:326) (Token id:Id.Lit_Chars val:'\t!one@example.com!\n' span_id:327) 
          (Token id:Id.Lit_Chars val:'\t!two@example.com!\n' span_id:328) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:329)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Verify commandline' span_id:338))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:342) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected commandline1\n' span_id:343)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Send patches with --envelope-sender' span_id:352))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:356) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:357) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit send-email --envelope-sender="Patch Contributor <patch@example.com>" --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors\n'
            span_id: 358
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:367))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:371) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF\n' span_id:372) (Token id:Id.Lit_Chars val:'\t!patch@example.com!\n' span_id:373) 
          (Token id:Id.Lit_Chars val:'\t!-i!\n' span_id:374) (Token id:Id.Lit_Chars val:'\t!nobody@example.com!\n' span_id:375) 
          (Token id:Id.Lit_Chars val:'\t!author@example.com!\n' span_id:376) (Token id:Id.Lit_Chars val:'\t!one@example.com!\n' span_id:377) 
          (Token id:Id.Lit_Chars val:'\t!two@example.com!\n' span_id:378) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:379)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Verify commandline' span_id:388))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:392) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected commandline1\n' span_id:393)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Send patches with --envelope-sender=auto' span_id:402))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:406) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:407) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit send-email --envelope-sender=auto --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors\n'
            span_id: 408
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:417))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:421) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF\n' span_id:422) (Token id:Id.Lit_Chars val:'\t!nobody@example.com!\n' span_id:423) 
          (Token id:Id.Lit_Chars val:'\t!-i!\n' span_id:424) (Token id:Id.Lit_Chars val:'\t!nobody@example.com!\n' span_id:425) 
          (Token id:Id.Lit_Chars val:'\t!author@example.com!\n' span_id:426) (Token id:Id.Lit_Chars val:'\t!one@example.com!\n' span_id:427) 
          (Token id:Id.Lit_Chars val:'\t!two@example.com!\n' span_id:428) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:429)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Verify commandline' span_id:438))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:442) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected commandline1\n' span_id:443)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect for cc trailer' span_id:452))} 
      {
        (DQ ('\n') ('cat >expected-cc <<') (Id.Lit_Other '\\') ('EOF\n') ('!recipient@example.com!\n') 
          ('!author@example.com!\n') ('!one@example.com!\n') ('!two@example.com!\n') ('!three@example.com!\n') ('!four@example.com!\n') 
          ('!five@example.com!\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'cc trailer with various syntax' span_id:476))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:480) 
          (Token id:Id.Lit_Chars val:'\ttest_commit cc-trailer &&\n' span_id:481) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard HEAD^" &&\n' span_id:482) 
          (Token id:Id.Lit_Chars val:'\tgit commit --amend -F - <<-EOF &&\n' span_id:483) (Token id:Id.Lit_Chars val:'\tTest Cc: trailers.\n' span_id:484) 
          (Token id:Id.Lit_Chars val:'\n' span_id:485) (Token id:Id.Lit_Chars val:'\tCc: one@example.com\n' span_id:486) 
          (Token
            id: Id.Lit_Chars
            val: '\tCc: <two@example.com> # this is part of the name\n'
            span_id: 487
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tCc: <three@example.com>, <four@example.com> # not.five@example.com\n'
            span_id: 488
          ) (Token id:Id.Lit_Chars val:'\tCc: "Some # Body" <five@example.com> [part.of.name.too]\n' span_id:489) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:490) (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:491) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit send-email -1 --to=recipient@example.com \\\n'
            span_id: 492
          ) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" &&\n' span_id:493) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected-cc commandline1\n' span_id:494)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:503))} 
      {
        (DQ ('\n') ('cat >expected-show-all-headers <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('0001-Second.patch\n') ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(mbox) Adding cc: One <one@example.com> from line 'Cc: One <one@example.com>, two@example.com'\n"
          ) ("(mbox) Adding cc: two@example.com from line 'Cc: One <one@example.com>, two@example.com'\n") 
          ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') ('RCPT TO:<to@example.com>\n') 
          ('RCPT TO:<cc@example.com>\n') ('RCPT TO:<author@example.com>\n') ('RCPT TO:<one@example.com>\n') ('RCPT TO:<two@example.com>\n') 
          ('RCPT TO:<bcc@example.com>\n') ('From: Example <from@example.com>\n') ('To: to@example.com\n') ('Cc: cc@example.com,\n') 
          ('\tA <author@example.com>,\n') ('\tOne <one@example.com>,\n') ('\ttwo@example.com\n') ('Subject: [PATCH 1/1] Second.\n') 
          ('Date: DATE-STRING\n') ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') 
          ('In-Reply-To: <unique-message-id@example.com>\n') ('References: <unique-message-id@example.com>\n') ('\n') ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (command.ShFunction
      name: test_suppress_self
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
              ]
              children: [
                (C {(test_commit)} {($ Id.VSub_Number '$3')})
                (C {(test_when_finished)} {(DQ ('git reset --hard HEAD^'))})
                (command.Simple
                  words: [{(write_script)} {(cccmd-sed)}]
                  redirects: [
                    (redir.HereDoc
                      op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:571)
                      fd: -1
                      here_begin: {(EOF)}
                      here_end_span_id: 583
                      stdin_parts: [
                        ('sed -n -e s/^cccmd--//p ')
                        (Id.Right_DoubleQuote '"')
                        (word_part.EscapedLiteral
                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:578)
                        )
                        (1)
                        (Id.Right_DoubleQuote '"')
                        ('\n')
                      ]
                    )
                  ]
                )
                (C {(git)} {(commit)} {(--amend)} 
                  {(--author) (Id.Lit_Equals '=') 
                    (DQ ($ Id.VSub_Number '$1') (' <') ($ Id.VSub_Number '$2') ('>'))
                  } {(-F)} {(-)}
                )
                (C {(clean_fake_sendmail)})
                (command.Simple
                  words: [{(git)} {(format-patch)} {(--stdout)} {(-1)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:621)
                      fd: -1
                      arg_word: {(DQ (suppress-self-) ($ Id.VSub_Number '$3') (.patch))}
                    )
                  ]
                )
                (C {(git)} {(send-email)} 
                  {(--from) (Id.Lit_Equals '=') 
                    (DQ ($ Id.VSub_Number '$1') (' <') ($ Id.VSub_Number '$2') ('>'))
                  } {(--to) (Id.Lit_Equals '=') (nobody) (Id.Lit_Splice '@example') (.com)} 
                  {(--cc-cmd) (Id.Lit_Equals '=') (./cccmd-sed)} {(--suppress-cc) (Id.Lit_Equals '=') (self)} 
                  {(--smtp-server) (Id.Lit_Equals '=') 
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:670)
                        command_list: (command.CommandList children:[(C {(pwd)})])
                      ) (/fake.sendmail)
                    )
                  } {(suppress-self-) ($ Id.VSub_Number '$3') (.patch)}
                )
                (C {(mv)} {(msgtxt1)} {(msgtxt1-) ($ Id.VSub_Number '$3')})
                (command.Simple
                  words: [
                    {(sed)}
                    {(-e)}
                    {(SQ (Token id:Id.Lit_Chars val:'/^$/q' span_id:701))}
                    {(msgtxt1-) ($ Id.VSub_Number '$3')}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:707)
                      fd: -1
                      arg_word: {(DQ (msghdr1-) ($ Id.VSub_Number '$3'))}
                    )
                  ]
                )
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:716)
                      fd: -1
                      arg_word: {(DQ (expected-no-cc-) ($ Id.VSub_Number '$3'))}
                    )
                  ]
                )
                (command.Subshell
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [
                                {(grep)}
                                {(SQ (Token id:Id.Lit_Chars val:'^Cc:' span_id:730))}
                                {(msghdr1-) ($ Id.VSub_Number '$3')}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:736)
                                  fd: -1
                                  arg_word: {(DQ (actual-no-cc-) ($ Id.VSub_Number '$3'))}
                                )
                              ]
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:741)
                        )
                        (C {(test_cmp)} {(expected-no-cc-) ($ Id.VSub_Number '$3')} 
                          {(actual-no-cc-) ($ Id.VSub_Number '$3')}
                        )
                      ]
                    )
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: test_suppress_self_unquoted
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(test_suppress_self)}
                {(DQ ($ Id.VSub_Number '$1'))}
                {(DQ ($ Id.VSub_Number '$2'))}
                {(DQ (unquoted-) ($ Id.VSub_Number '$3'))}
              ]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:779)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 811
                  stdin_parts: [
                    ('test suppress-cc.self unquoted-')
                    ($ Id.VSub_Number '$3')
                    (' with name ')
                    ($ Id.VSub_Number '$1')
                    (' email ')
                    ($ Id.VSub_Number '$2')
                    ('\n')
                    ('\n')
                    (unquoted-)
                    ($ Id.VSub_Number '$3')
                    ('\n')
                    ('\n')
                    (cccmd--)
                    ($ Id.VSub_Number '$1')
                    (' <')
                    ($ Id.VSub_Number '$2')
                    ('>\n')
                    ('\n')
                    ('Cc: ')
                    ($ Id.VSub_Number '$1')
                    (' <')
                    ($ Id.VSub_Number '$2')
                    ('>\n')
                    ('Signed-off-by: ')
                    ($ Id.VSub_Number '$1')
                    (' <')
                    ($ Id.VSub_Number '$2')
                    ('>\n')
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: test_suppress_self_quoted
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(test_suppress_self)}
                {(DQ ($ Id.VSub_Number '$1'))}
                {(DQ ($ Id.VSub_Number '$2'))}
                {(DQ (quoted-) ($ Id.VSub_Number '$3'))}
              ]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:838)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 886
                  stdin_parts: [
                    ('test suppress-cc.self quoted-')
                    ($ Id.VSub_Number '$3')
                    (' with name ')
                    ($ Id.VSub_Number '$1')
                    (' email ')
                    ($ Id.VSub_Number '$2')
                    ('\n')
                    ('\n')
                    (quoted-)
                    ($ Id.VSub_Number '$3')
                    ('\n')
                    ('\n')
                    (cccmd--)
                    (Id.Right_DoubleQuote '"')
                    ($ Id.VSub_Number '$1')
                    (Id.Right_DoubleQuote '"')
                    (' <')
                    ($ Id.VSub_Number '$2')
                    ('>\n')
                    ('\n')
                    ('Cc: ')
                    ($ Id.VSub_Number '$1')
                    (' <')
                    ($ Id.VSub_Number '$2')
                    ('>\n')
                    ('Cc: ')
                    (Id.Right_DoubleQuote '"')
                    ($ Id.VSub_Number '$1')
                    (Id.Right_DoubleQuote '"')
                    (' <')
                    ($ Id.VSub_Number '$2')
                    ('>\n')
                    ('Signed-off-by: ')
                    ($ Id.VSub_Number '$1')
                    (' <')
                    ($ Id.VSub_Number '$2')
                    ('>\n')
                    ('Signed-off-by: ')
                    (Id.Right_DoubleQuote '"')
                    ($ Id.VSub_Number '$1')
                    (Id.Right_DoubleQuote '"')
                    (' <')
                    ($ Id.VSub_Number '$2')
                    ('>\n')
                  ]
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'self name is suppressed' span_id:895))} 
      {
        (DQ ('\n') ("\ttest_suppress_self_unquoted 'A U Thor' 'author@example.com' ") 
          ("\t\t'self_name_suppressed'\n")
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'self name with dot is suppressed' span_id:911))} 
      {
        (DQ ('\n') ("\ttest_suppress_self_quoted 'A U. Thor' 'author@example.com' ") 
          ("\t\t'self_name_dot_suppressed'\n")
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'non-ascii self name is suppressed' span_id:927))} 
      {
        (DQ ('\n') 
          (
"\ttest_suppress_self_quoted 'F\xc3\xbc\xc3\xb1n\xc3\xbd N\xc3\xa2m\xc3\xa9' 'odd_?=mail@example.com' "
          ) ("\t\t'non_ascii_self_suppressed'\n")
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'long non-ascii self name is suppressed' span_id:949))} 
      {
        (DQ ('\n') 
          (
"\ttest_suppress_self_quoted '\xc6\x91\xc3\xbc\xc3\xb1n\xc3\xad\xc4\x99\xc5\x99 \xe2\x82\xac. N\xc3\xa2\xe1\xb9\x81\xc3\xa9' 'odd_?=mail@example.com' "
          ) ("\t\t'long_non_ascii_self_suppressed'\n")
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sanitized self name is suppressed' span_id:965))} 
      {
        (DQ ('\n') ("\ttest_suppress_self_unquoted '") 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:971)
          ) ('A U. Thor') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:973)) 
          ("' 'author@example.com' ") ("\t\t'self_name_sanitized_suppressed'\n")
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Show all headers' span_id:985))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:989) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:990) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:991) 
          (Token id:Id.Lit_Chars val:'\t\t--suppress-cc=sob \\\n' span_id:992) (Token id:Id.Lit_Chars val:'\t\t--from="Example <from@example.com>" \\\n' span_id:993) 
          (Token id:Id.Lit_Chars val:'\t\t--to=to@example.com \\\n' span_id:994) (Token id:Id.Lit_Chars val:'\t\t--cc=cc@example.com \\\n' span_id:995) 
          (Token id:Id.Lit_Chars val:'\t\t--bcc=bcc@example.com \\\n' span_id:996) (Token id:Id.Lit_Chars val:'\t\t--in-reply-to="<unique-message-id@example.com>" \\\n' span_id:997) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server relay.example.com \\\n'
            span_id: 998
          ) (Token id:Id.Lit_Chars val:'\t\t$patches |\n' span_id:999) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed\t-e "s/^\\(Date:\\).*/\\1 DATE-STRING/" \\\n'
            span_id: 1000
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t-e "s/^\\(Message-Id:\\).*/\\1 MESSAGE-ID-STRING/" \\\n'
            span_id: 1001
          ) (Token id:Id.Lit_Chars val:'\t\t-e "s/^\\(X-Mailer:\\).*/\\1 X-MAILER-STRING/" \\\n' span_id:1002) 
          (Token id:Id.Lit_Chars val:'\t\t>actual-show-all-headers &&\n' span_id:1003) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expected-show-all-headers actual-show-all-headers\n'
            span_id: 1004
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Prompting works' span_id:1013))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1017) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1018) (Token id:Id.Lit_Chars val:'\t(echo "to@example.com"\n' span_id:1019) 
          (Token id:Id.Lit_Chars val:'\t echo ""\n' span_id:1020) (Token id:Id.Lit_Chars val:'\t) | GIT_SEND_EMAIL_NOTTY=1 git send-email \\\n' span_id:1021) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 1022
          ) (Token id:Id.Lit_Chars val:'\t\t$patches \\\n' span_id:1023) 
          (Token id:Id.Lit_Chars val:'\t\t2>errors &&\n' span_id:1024) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgrep "^From: A U Thor <author@example.com>\\$" msgtxt1 &&\n'
            span_id: 1025
          ) (Token id:Id.Lit_Chars val:'\t\tgrep "^To: to@example.com\\$" msgtxt1\n' span_id:1026)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ') (Id.Lit_Comma ',') (AUTOIDENT)} 
      {(SQ (Token id:Id.Lit_Chars val:'implicit ident is allowed' span_id:1037))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1041) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1042) (Token id:Id.Lit_Chars val:'\t(sane_unset GIT_AUTHOR_NAME &&\n' span_id:1043) 
          (Token id:Id.Lit_Chars val:'\tsane_unset GIT_AUTHOR_EMAIL &&\n' span_id:1044) (Token id:Id.Lit_Chars val:'\tsane_unset GIT_COMMITTER_NAME &&\n' span_id:1045) 
          (Token id:Id.Lit_Chars val:'\tsane_unset GIT_COMMITTER_EMAIL &&\n' span_id:1046) (Token id:Id.Lit_Chars val:'\tGIT_SEND_EMAIL_NOTTY=1 git send-email \\\n' span_id:1047) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 1048
          ) (Token id:Id.Lit_Chars val:'\t\t--to=to@example.com \\\n' span_id:1049) 
          (Token id:Id.Lit_Chars val:'\t\t$patches </dev/null 2>errors\n' span_id:1050) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1051)
        )
      }
    )
    (C {(test_expect_success)} 
      {($ Id.VSub_DollarName '$PREREQ') (Id.Lit_Comma ',') (Id.KW_Bang '!') (AUTOIDENT)} {(SQ (Token id:Id.Lit_Chars val:'broken implicit ident aborts send-email' span_id:1063))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1067) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1068) (Token id:Id.Lit_Chars val:'\t(sane_unset GIT_AUTHOR_NAME &&\n' span_id:1069) 
          (Token id:Id.Lit_Chars val:'\tsane_unset GIT_AUTHOR_EMAIL &&\n' span_id:1070) (Token id:Id.Lit_Chars val:'\tsane_unset GIT_COMMITTER_NAME &&\n' span_id:1071) 
          (Token id:Id.Lit_Chars val:'\tsane_unset GIT_COMMITTER_EMAIL &&\n' span_id:1072) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_SEND_EMAIL_NOTTY=1 && export GIT_SEND_EMAIL_NOTTY &&\n'
            span_id: 1073
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git send-email \\\n' span_id:1074) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 1075
          ) (Token id:Id.Lit_Chars val:'\t\t--to=to@example.com \\\n' span_id:1076) 
          (Token id:Id.Lit_Chars val:'\t\t$patches </dev/null 2>errors &&\n' span_id:1077) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "tell me who you are" errors\n' span_id:1078) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1079)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup tocmd and cccmd scripts' span_id:1088))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1092) 
          (Token id:Id.Lit_Chars val:'\twrite_script tocmd-sed <<-\\EOF &&\n' span_id:1093) (Token id:Id.Lit_Chars val:'\tsed -n -e "s/^tocmd--//p" "$1"\n' span_id:1094) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1095) (Token id:Id.Lit_Chars val:'\twrite_script cccmd-sed <<-\\EOF\n' span_id:1096) 
          (Token id:Id.Lit_Chars val:'\tsed -n -e "s/^cccmd--//p" "$1"\n' span_id:1097) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1098)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'tocmd works' span_id:1107))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1111) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1112) (Token id:Id.Lit_Chars val:'\tcp $patches tocmd.patch &&\n' span_id:1113) 
          (Token
            id: Id.Lit_Chars
            val: '\techo tocmd--tocmd@example.com >>tocmd.patch &&\n'
            span_id: 1114
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1115) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 1116
          ) (Token id:Id.Lit_Chars val:'\t\t--to-cmd=./tocmd-sed \\\n' span_id:1117) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 1118
          ) (Token id:Id.Lit_Chars val:'\t\ttocmd.patch \\\n' span_id:1119) 
          (Token id:Id.Lit_Chars val:'\t\t&&\n' span_id:1120) (Token id:Id.Lit_Chars val:'\tgrep "^To: tocmd@example.com" msgtxt1\n' span_id:1121)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'cccmd works' span_id:1130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1134) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1135) (Token id:Id.Lit_Chars val:'\tcp $patches cccmd.patch &&\n' span_id:1136) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "cccmd--  cccmd@example.com" >>cccmd.patch &&\n'
            span_id: 1137
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1138) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 1139
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:1140) 
          (Token id:Id.Lit_Chars val:'\t\t--cc-cmd=./cccmd-sed \\\n' span_id:1141) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:1142) 
          (Token id:Id.Lit_Chars val:'\t\tcccmd.patch \\\n' span_id:1143) (Token id:Id.Lit_Chars val:'\t\t&&\n' span_id:1144) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^\tcccmd@example.com" msgtxt1\n'
            span_id: 1145
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'reject long lines' span_id:1154))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1158) 
          (Token id:Id.Lit_Chars val:'\tz8=zzzzzzzz &&\n' span_id:1159) (Token id:Id.Lit_Chars val:'\tz64=$z8$z8$z8$z8$z8$z8$z8$z8 &&\n' span_id:1160) 
          (Token
            id: Id.Lit_Chars
            val: '\tz512=$z64$z64$z64$z64$z64$z64$z64$z64 &&\n'
            span_id: 1161
          ) (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1162) 
          (Token id:Id.Lit_Chars val:'\tcp $patches longline.patch &&\n' span_id:1163) (Token id:Id.Lit_Chars val:'\techo $z512$z512 >>longline.patch &&\n' span_id:1164) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git send-email \\\n' span_id:1165) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:1166) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:1167) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:1168) 
          (Token id:Id.Lit_Chars val:'\t\t$patches longline.patch \\\n' span_id:1169) (Token id:Id.Lit_Chars val:'\t\t2>errors &&\n' span_id:1170) 
          (Token id:Id.Lit_Chars val:'\tgrep longline.patch errors\n' span_id:1171)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'no patch was sent' span_id:1180))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1184) 
          (Token id:Id.Lit_Chars val:'\t! test -e commandline1\n' span_id:1185)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Author From: in message body' span_id:1194))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1198) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1199) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1200) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 1201
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:1202) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 1203
          ) (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:1204) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed "1,/^\\$/d" <msgtxt1 >msgbody1 &&\n'
            span_id: 1205
          ) (Token id:Id.Lit_Chars val:'\tgrep "From: A <author@example.com>" msgbody1\n' span_id:1206)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Author From: not in message body' span_id:1215))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1219) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1220) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1221) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="A <author@example.com>" \\\n'
            span_id: 1222
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:1223) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 1224
          ) (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:1225) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed "1,/^\\$/d" <msgtxt1 >msgbody1 &&\n'
            span_id: 1226
          ) (Token id:Id.Lit_Chars val:'\t! grep "From: A <author@example.com>" msgbody1\n' span_id:1227)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'allow long lines with --no-validate' span_id:1236))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1240) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1241) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:1242) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:1243) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:1244) 
          (Token id:Id.Lit_Chars val:'\t\t--no-validate \\\n' span_id:1245) (Token id:Id.Lit_Chars val:'\t\t$patches longline.patch \\\n' span_id:1246) 
          (Token id:Id.Lit_Chars val:'\t\t2>errors\n' span_id:1247)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Invalid In-Reply-To' span_id:1256))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1260) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1261) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1262) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 1263
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:1264) 
          (Token id:Id.Lit_Chars val:'\t\t--in-reply-to=" " \\\n' span_id:1265) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:1266) 
          (Token id:Id.Lit_Chars val:'\t\t$patches \\\n' span_id:1267) (Token id:Id.Lit_Chars val:'\t\t2>errors &&\n' span_id:1268) 
          (Token
            id: Id.Lit_Chars
            val: '\t! grep "^In-Reply-To: < *>" msgtxt1\n'
            span_id: 1269
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'Valid In-Reply-To when prompting' span_id:1278))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1282) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1283) (Token id:Id.Lit_Chars val:'\t(echo "From Example <from@example.com>"\n' span_id:1284) 
          (Token
            id: Id.Lit_Chars
            val: '\t echo "To Example <to@example.com>"\n'
            span_id: 1285
          ) (Token id:Id.Lit_Chars val:'\t echo ""\n' span_id:1286) 
          (Token
            id: Id.Lit_Chars
            val: '\t) | GIT_SEND_EMAIL_NOTTY=1 git send-email \\\n'
            span_id: 1287
          ) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:1288) 
          (Token id:Id.Lit_Chars val:'\t\t$patches 2>errors &&\n' span_id:1289) (Token id:Id.Lit_Chars val:'\t! grep "^In-Reply-To: < *>" msgtxt1\n' span_id:1290)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'In-Reply-To without --chain-reply-to' span_id:1299))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1303) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1304) (Token id:Id.Lit_Chars val:'\techo "<unique-message-id@example.com>" >expect &&\n' span_id:1305) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1306) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:1307) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:1308) (Token id:Id.Lit_Chars val:'\t\t--no-chain-reply-to \\\n' span_id:1309) 
          (Token id:Id.Lit_Chars val:'\t\t--in-reply-to="$(cat expect)" \\\n' span_id:1310) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:1311) 
          (Token id:Id.Lit_Chars val:'\t\t$patches $patches $patches \\\n' span_id:1312) (Token id:Id.Lit_Chars val:'\t\t2>errors &&\n' span_id:1313) 
          (Token
            id: Id.Lit_Chars
            val: '\t# The first message is a reply to --in-reply-to\n'
            span_id: 1314
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^In-Reply-To: *\\(.*\\)/\\1/p" msgtxt1 >actual &&\n'
            span_id: 1315
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1316) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Second and subsequent messages are replies to the first one\n'
            span_id: 1317
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^Message-Id: *\\(.*\\)/\\1/p" msgtxt1 >expect &&\n'
            span_id: 1318
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^In-Reply-To: *\\(.*\\)/\\1/p" msgtxt2 >actual &&\n'
            span_id: 1319
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1320) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^In-Reply-To: *\\(.*\\)/\\1/p" msgtxt3 >actual &&\n'
            span_id: 1321
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1322)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'In-Reply-To with --chain-reply-to' span_id:1331))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1335) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1336) (Token id:Id.Lit_Chars val:'\techo "<unique-message-id@example.com>" >expect &&\n' span_id:1337) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1338) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:1339) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:1340) (Token id:Id.Lit_Chars val:'\t\t--chain-reply-to \\\n' span_id:1341) 
          (Token id:Id.Lit_Chars val:'\t\t--in-reply-to="$(cat expect)" \\\n' span_id:1342) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:1343) 
          (Token id:Id.Lit_Chars val:'\t\t$patches $patches $patches \\\n' span_id:1344) (Token id:Id.Lit_Chars val:'\t\t2>errors &&\n' span_id:1345) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^In-Reply-To: *\\(.*\\)/\\1/p" msgtxt1 >actual &&\n'
            span_id: 1346
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1347) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^Message-Id: *\\(.*\\)/\\1/p" msgtxt1 >expect &&\n'
            span_id: 1348
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^In-Reply-To: *\\(.*\\)/\\1/p" msgtxt2 >actual &&\n'
            span_id: 1349
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1350) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^Message-Id: *\\(.*\\)/\\1/p" msgtxt2 >expect &&\n'
            span_id: 1351
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n -e "s/^In-Reply-To: *\\(.*\\)/\\1/p" msgtxt3 >actual &&\n'
            span_id: 1352
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1353)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup fake editor' span_id:1362))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1366) 
          (Token id:Id.Lit_Chars val:'\twrite_script fake-editor <<-\\EOF\n' span_id:1367) (Token id:Id.Lit_Chars val:'\techo fake edit >>"$1"\n' span_id:1368) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1369)
        )
      }
    )
    (C {(test_set_editor)} 
      {
        (DQ 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1376)
            command_list: (command.CommandList children:[(C {(pwd)})])
          ) (/fake-editor)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--compose works' span_id:1388))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1392) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:1393) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:1394) 
          (Token id:Id.Lit_Chars val:'\t--compose --subject foo \\\n' span_id:1395) (Token id:Id.Lit_Chars val:'\t--from="Example <nobody@example.com>" \\\n' span_id:1396) 
          (Token id:Id.Lit_Chars val:'\t--to=nobody@example.com \\\n' span_id:1397) (Token id:Id.Lit_Chars val:'\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:1398) 
          (Token id:Id.Lit_Chars val:'\t$patches \\\n' span_id:1399) (Token id:Id.Lit_Chars val:'\t2>errors\n' span_id:1400)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'first message is compose text' span_id:1409))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1413) 
          (Token id:Id.Lit_Chars val:'\tgrep "^fake edit" msgtxt1\n' span_id:1414)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'second message is patch' span_id:1423))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1427) 
          (Token id:Id.Lit_Chars val:'\tgrep "Subject:.*Second" msgtxt2\n' span_id:1428)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:1437))} 
      {
        (DQ ('\n') ('cat >expected-suppress-sob <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('0001-Second.patch\n') ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(mbox) Adding cc: One <one@example.com> from line 'Cc: One <one@example.com>, two@example.com'\n"
          ) ("(mbox) Adding cc: two@example.com from line 'Cc: One <one@example.com>, two@example.com'\n") 
          ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') ('RCPT TO:<to@example.com>\n') 
          ('RCPT TO:<cc@example.com>\n') ('RCPT TO:<author@example.com>\n') ('RCPT TO:<one@example.com>\n') ('RCPT TO:<two@example.com>\n') 
          ('From: Example <from@example.com>\n') ('To: to@example.com\n') ('Cc: cc@example.com,\n') ('\tA <author@example.com>,\n') 
          ('\tOne <one@example.com>,\n') ('\ttwo@example.com\n') ('Subject: [PATCH 1/1] Second.\n') ('Date: DATE-STRING\n') 
          ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') ('\n') ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (command.ShFunction
      name: replace_variable_fields
      body: 
        (command.BraceGroup
          children: [
            (C {(sed)} {(-e)} 
              {
                (DQ ('s/^') (Id.Lit_Other '\\') ('(Date:') (Id.Lit_Other '\\') (').*/') 
                  (Id.Lit_Other '\\') ('1 DATE-STRING/')
                )
              } {(-e)} 
              {
                (DQ ('s/^') (Id.Lit_Other '\\') ('(Message-Id:') (Id.Lit_Other '\\') (').*/') 
                  (Id.Lit_Other '\\') ('1 MESSAGE-ID-STRING/')
                )
              } {(-e)} 
              {
                (DQ ('s/^') (Id.Lit_Other '\\') ('(X-Mailer:') (Id.Lit_Other '\\') (').*/') 
                  (Id.Lit_Other '\\') ('1 X-MAILER-STRING/')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: test_suppression
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {(git)} {(send-email)} {(--dry-run)} 
                      {(--suppress-cc) (Id.Lit_Equals '=') ($ Id.VSub_Number '$1')} 
                      {
                        (braced_var_sub
                          token: (Token id:Id.VSub_Number val:2 span_id:1549)
                          suffix_op: 
                            (suffix_op.Unary
                              op_id: Id.VTest_Plus
                              arg_word: {(DQ ('--suppress-cc=') ($ Id.VSub_Number '$2'))}
                            )
                        )
                      } {(--from) (Id.Lit_Equals '=') (DQ ('Example <from@example.com>'))} 
                      {(--to) (Id.Lit_Equals '=') (to) (Id.Lit_Splice '@example') (.com)} {(--smtp-server)} {(relay.example.com)} {($ Id.VSub_DollarName '$patches')}
                    )
                    (command.Simple
                      words: [{(replace_variable_fields)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:1589)
                          fd: -1
                          arg_word: 
                            {(actual-suppress-) ($ Id.VSub_Number '$1') 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Number val:2 span_id:1593)
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VTest_Plus
                                    arg_word: {(DQ (-) ($ Id.VSub_Number '$2'))}
                                  )
                              )
                            }
                        )
                      ]
                    )
                  ]
                  negated: F
                )
                (C {(test_cmp)} 
                  {(expected-suppress-) ($ Id.VSub_Number '$1') 
                    (braced_var_sub
                      token: (Token id:Id.VSub_Number val:2 span_id:1609)
                      suffix_op: 
                        (suffix_op.Unary
                          op_id: Id.VTest_Plus
                          arg_word: {(DQ (-) ($ Id.VSub_Number '$2'))}
                        )
                    )
                  } 
                  {(actual-suppress-) ($ Id.VSub_Number '$1') 
                    (braced_var_sub
                      token: (Token id:Id.VSub_Number val:2 span_id:1620)
                      suffix_op: 
                        (suffix_op.Unary
                          op_id: Id.VTest_Plus
                          arg_word: {(DQ (-) ($ Id.VSub_Number '$2'))}
                        )
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.cc set' span_id:1636))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1640) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config sendemail.cc cc@example.com &&\n'
            span_id: 1641
          ) (Token id:Id.Lit_Chars val:'\ttest_suppression sob\n' span_id:1642)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:1651))} 
      {
        (DQ ('\n') ('cat >expected-suppress-sob <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('0001-Second.patch\n') ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(mbox) Adding cc: One <one@example.com> from line 'Cc: One <one@example.com>, two@example.com'\n"
          ) ("(mbox) Adding cc: two@example.com from line 'Cc: One <one@example.com>, two@example.com'\n") 
          ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') ('RCPT TO:<to@example.com>\n') 
          ('RCPT TO:<author@example.com>\n') ('RCPT TO:<one@example.com>\n') ('RCPT TO:<two@example.com>\n') ('From: Example <from@example.com>\n') 
          ('To: to@example.com\n') ('Cc: A <author@example.com>,\n') ('\tOne <one@example.com>,\n') ('\ttwo@example.com\n') 
          ('Subject: [PATCH 1/1] Second.\n') ('Date: DATE-STRING\n') ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') ('\n') 
          ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.cc unset' span_id:1690))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1694) 
          (Token id:Id.Lit_Chars val:'\tgit config --unset sendemail.cc &&\n' span_id:1695) (Token id:Id.Lit_Chars val:'\ttest_suppression sob\n' span_id:1696)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:1705))} 
      {
        (DQ ('\n') ('cat >expected-suppress-cccmd <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('0001-Second.patch\n') ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(mbox) Adding cc: One <one@example.com> from line 'Cc: One <one@example.com>, two@example.com'\n"
          ) ("(mbox) Adding cc: two@example.com from line 'Cc: One <one@example.com>, two@example.com'\n") 
          (
"(body) Adding cc: C O Mitter <committer@example.com> from line 'Signed-off-by: C O Mitter <committer@example.com>'\n"
          ) ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') 
          ('RCPT TO:<to@example.com>\n') ('RCPT TO:<author@example.com>\n') ('RCPT TO:<one@example.com>\n') ('RCPT TO:<two@example.com>\n') 
          ('RCPT TO:<committer@example.com>\n') ('From: Example <from@example.com>\n') ('To: to@example.com\n') ('Cc: A <author@example.com>,\n') 
          ('\tOne <one@example.com>,\n') ('\ttwo@example.com,\n') ('\tC O Mitter <committer@example.com>\n') ('Subject: [PATCH 1/1] Second.\n') 
          ('Date: DATE-STRING\n') ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') ('\n') ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:sendemail.cccmd span_id:1747))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1751) 
          (Token id:Id.Lit_Chars val:'\twrite_script cccmd <<-\\EOF &&\n' span_id:1752) (Token id:Id.Lit_Chars val:'\techo cc-cmd@example.com\n' span_id:1753) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1754) (Token id:Id.Lit_Chars val:'\tgit config sendemail.cccmd ./cccmd &&\n' span_id:1755) 
          (Token id:Id.Lit_Chars val:'\ttest_suppression cccmd\n' span_id:1756)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:1765))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1769) 
          (Token id:Id.Lit_Chars val:'cat >expected-suppress-all <<\\EOF\n' span_id:1770) (Token id:Id.Lit_Chars val:'0001-Second.patch\n' span_id:1771) 
          (Token id:Id.Lit_Chars val:'Dry-OK. Log says:\n' span_id:1772) (Token id:Id.Lit_Chars val:'Server: relay.example.com\n' span_id:1773) 
          (Token id:Id.Lit_Chars val:'MAIL FROM:<from@example.com>\n' span_id:1774) (Token id:Id.Lit_Chars val:'RCPT TO:<to@example.com>\n' span_id:1775) 
          (Token id:Id.Lit_Chars val:'From: Example <from@example.com>\n' span_id:1776) (Token id:Id.Lit_Chars val:'To: to@example.com\n' span_id:1777) 
          (Token id:Id.Lit_Chars val:'Subject: [PATCH 1/1] Second.\n' span_id:1778) (Token id:Id.Lit_Chars val:'Date: DATE-STRING\n' span_id:1779) 
          (Token id:Id.Lit_Chars val:'Message-Id: MESSAGE-ID-STRING\n' span_id:1780) (Token id:Id.Lit_Chars val:'X-Mailer: X-MAILER-STRING\n' span_id:1781) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1782) (Token id:Id.Lit_Chars val:'Result: OK\n' span_id:1783) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:1784)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--suppress-cc=all' span_id:1793))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1797) 
          (Token id:Id.Lit_Chars val:'\ttest_suppression all\n' span_id:1798)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:1807))} 
      {
        (DQ ('\n') ('cat >expected-suppress-body <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('0001-Second.patch\n') ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(mbox) Adding cc: One <one@example.com> from line 'Cc: One <one@example.com>, two@example.com'\n"
          ) ("(mbox) Adding cc: two@example.com from line 'Cc: One <one@example.com>, two@example.com'\n") 
          ("(cc-cmd) Adding cc: cc-cmd@example.com from: './cccmd'\n") ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') 
          ('RCPT TO:<to@example.com>\n') ('RCPT TO:<author@example.com>\n') ('RCPT TO:<one@example.com>\n') ('RCPT TO:<two@example.com>\n') 
          ('RCPT TO:<cc-cmd@example.com>\n') ('From: Example <from@example.com>\n') ('To: to@example.com\n') ('Cc: A <author@example.com>,\n') 
          ('\tOne <one@example.com>,\n') ('\ttwo@example.com,\n') ('\tcc-cmd@example.com\n') ('Subject: [PATCH 1/1] Second.\n') 
          ('Date: DATE-STRING\n') ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') ('\n') ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--suppress-cc=body' span_id:1849))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1853) 
          (Token id:Id.Lit_Chars val:'\ttest_suppression body\n' span_id:1854)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:1863))} 
      {
        (DQ ('\n') ('cat >expected-suppress-body-cccmd <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('0001-Second.patch\n') ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(mbox) Adding cc: One <one@example.com> from line 'Cc: One <one@example.com>, two@example.com'\n"
          ) ("(mbox) Adding cc: two@example.com from line 'Cc: One <one@example.com>, two@example.com'\n") 
          ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') ('RCPT TO:<to@example.com>\n') 
          ('RCPT TO:<author@example.com>\n') ('RCPT TO:<one@example.com>\n') ('RCPT TO:<two@example.com>\n') ('From: Example <from@example.com>\n') 
          ('To: to@example.com\n') ('Cc: A <author@example.com>,\n') ('\tOne <one@example.com>,\n') ('\ttwo@example.com\n') 
          ('Subject: [PATCH 1/1] Second.\n') ('Date: DATE-STRING\n') ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') ('\n') 
          ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--suppress-cc=body --suppress-cc=cccmd' span_id:1902))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1906) 
          (Token id:Id.Lit_Chars val:'\ttest_suppression body cccmd\n' span_id:1907)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:1916))} 
      {
        (DQ ('\n') ('cat >expected-suppress-sob <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('0001-Second.patch\n') ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(mbox) Adding cc: One <one@example.com> from line 'Cc: One <one@example.com>, two@example.com'\n"
          ) ("(mbox) Adding cc: two@example.com from line 'Cc: One <one@example.com>, two@example.com'\n") 
          ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') ('RCPT TO:<to@example.com>\n') 
          ('RCPT TO:<author@example.com>\n') ('RCPT TO:<one@example.com>\n') ('RCPT TO:<two@example.com>\n') ('From: Example <from@example.com>\n') 
          ('To: to@example.com\n') ('Cc: A <author@example.com>,\n') ('\tOne <one@example.com>,\n') ('\ttwo@example.com\n') 
          ('Subject: [PATCH 1/1] Second.\n') ('Date: DATE-STRING\n') ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') ('\n') 
          ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--suppress-cc=sob' span_id:1955))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1959) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_might_fail git config --unset sendemail.cccmd &&\n'
            span_id: 1960
          ) (Token id:Id.Lit_Chars val:'\ttest_suppression sob\n' span_id:1961)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:1970))} 
      {
        (DQ ('\n') ('cat >expected-suppress-bodycc <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('0001-Second.patch\n') ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(mbox) Adding cc: One <one@example.com> from line 'Cc: One <one@example.com>, two@example.com'\n"
          ) ("(mbox) Adding cc: two@example.com from line 'Cc: One <one@example.com>, two@example.com'\n") 
          (
"(body) Adding cc: C O Mitter <committer@example.com> from line 'Signed-off-by: C O Mitter <committer@example.com>'\n"
          ) ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') 
          ('RCPT TO:<to@example.com>\n') ('RCPT TO:<author@example.com>\n') ('RCPT TO:<one@example.com>\n') ('RCPT TO:<two@example.com>\n') 
          ('RCPT TO:<committer@example.com>\n') ('From: Example <from@example.com>\n') ('To: to@example.com\n') ('Cc: A <author@example.com>,\n') 
          ('\tOne <one@example.com>,\n') ('\ttwo@example.com,\n') ('\tC O Mitter <committer@example.com>\n') ('Subject: [PATCH 1/1] Second.\n') 
          ('Date: DATE-STRING\n') ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') ('\n') ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--suppress-cc=bodycc' span_id:2012))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2016) 
          (Token id:Id.Lit_Chars val:'\ttest_suppression bodycc\n' span_id:2017)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:2026))} 
      {
        (DQ ('\n') ('cat >expected-suppress-cc <<') (Id.Lit_Other '\\') ('EOF\n') ('0001-Second.patch\n') 
          ("(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'\n") 
          (
"(body) Adding cc: C O Mitter <committer@example.com> from line 'Signed-off-by: C O Mitter <committer@example.com>'\n"
          ) ('Dry-OK. Log says:\n') ('Server: relay.example.com\n') ('MAIL FROM:<from@example.com>\n') 
          ('RCPT TO:<to@example.com>\n') ('RCPT TO:<author@example.com>\n') ('RCPT TO:<committer@example.com>\n') 
          ('From: Example <from@example.com>\n') ('To: to@example.com\n') ('Cc: A <author@example.com>,\n') ('\tC O Mitter <committer@example.com>\n') 
          ('Subject: [PATCH 1/1] Second.\n') ('Date: DATE-STRING\n') ('Message-Id: MESSAGE-ID-STRING\n') ('X-Mailer: X-MAILER-STRING\n') ('\n') 
          ('Result: OK\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--suppress-cc=cc' span_id:2062))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2066) 
          (Token id:Id.Lit_Chars val:'\ttest_suppression cc\n' span_id:2067)
        )
      }
    )
    (command.ShFunction
      name: test_confirm
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {(echo)} {(y)})
                    (command.Simple
                      words: [
                        {(git)}
                        {(send-email)}
                        {(--from) (Id.Lit_Equals '=') (DQ ('Example <nobody@example.com>'))}
                        {(--to) (Id.Lit_Equals '=') (nobody) (Id.Lit_Splice '@example') (.com)}
                        {(--smtp-server) (Id.Lit_Equals '=') 
                          (DQ 
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2117)
                              command_list: (command.CommandList children:[(C {(pwd)})])
                            ) (/fake.sendmail)
                          )
                        }
                        {($ Id.VSub_At '$@')}
                        {($ Id.VSub_DollarName '$patches')}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:2129)
                          fd: -1
                          arg_word: {(stdout)}
                        )
                      ]
                      more_env: [(env_pair name:GIT_SEND_EMAIL_NOTTY val:{(1)} spids:[2087])]
                    )
                  ]
                  negated: F
                )
                (C {(grep)} {(DQ ('Send this email'))} {(stdout)})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--confirm=always' span_id:2151))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2155) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_confirm --confirm=always --suppress-cc=all\n'
            span_id: 2156
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--confirm=auto' span_id:2165))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2169) 
          (Token id:Id.Lit_Chars val:'\ttest_confirm --confirm=auto\n' span_id:2170)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--confirm=cc' span_id:2179))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2183) 
          (Token id:Id.Lit_Chars val:'\ttest_confirm --confirm=cc\n' span_id:2184)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--confirm=compose' span_id:2193))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2197) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_confirm --confirm=compose --compose\n'
            span_id: 2198
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'confirm by default (due to cc)' span_id:2207))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2211) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git config sendemail.confirm never &&\n'
            span_id: 2212
          ) (Token id:Id.Lit_Chars val:'\tgit config --unset sendemail.confirm &&\n' span_id:2213) 
          (Token id:Id.Lit_Chars val:'\ttest_confirm\n' span_id:2214)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'confirm by default (due to --compose)' span_id:2223))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2227) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git config sendemail.confirm never &&\n'
            span_id: 2228
          ) (Token id:Id.Lit_Chars val:'\tgit config --unset sendemail.confirm &&\n' span_id:2229) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_confirm --suppress-cc=all --compose\n'
            span_id: 2230
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'confirm detects EOF (inform assumes y)' span_id:2239))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2243) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git config sendemail.confirm never &&\n'
            span_id: 2244
          ) (Token id:Id.Lit_Chars val:'\tgit config --unset sendemail.confirm &&\n' span_id:2245) 
          (Token id:Id.Lit_Chars val:'\trm -fr outdir &&\n' span_id:2246) (Token id:Id.Lit_Chars val:'\tgit format-patch -2 -o outdir &&\n' span_id:2247) 
          (Token id:Id.Lit_Chars val:'\tGIT_SEND_EMAIL_NOTTY=1 \\\n' span_id:2248) (Token id:Id.Lit_Chars val:'\t\tgit send-email \\\n' span_id:2249) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2250
          ) (Token id:Id.Lit_Chars val:'\t\t\t--to=nobody@example.com \\\n' span_id:2251) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 2252
          ) (Token id:Id.Lit_Chars val:'\t\t\toutdir/*.patch </dev/null\n' span_id:2253)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'confirm detects EOF (auto causes failure)' span_id:2262))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2266) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git config sendemail.confirm never &&\n'
            span_id: 2267
          ) (Token id:Id.Lit_Chars val:'\tgit config sendemail.confirm auto &&\n' span_id:2268) 
          (Token id:Id.Lit_Chars val:'\tGIT_SEND_EMAIL_NOTTY=1 &&\n' span_id:2269) (Token id:Id.Lit_Chars val:'\texport GIT_SEND_EMAIL_NOTTY &&\n' span_id:2270) 
          (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git send-email \\\n' span_id:2271) (Token id:Id.Lit_Chars val:'\t\t\t--from="Example <nobody@example.com>" \\\n' span_id:2272) 
          (Token id:Id.Lit_Chars val:'\t\t\t--to=nobody@example.com \\\n' span_id:2273) (Token id:Id.Lit_Chars val:'\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2274) 
          (Token id:Id.Lit_Chars val:'\t\t\t$patches </dev/null\n' span_id:2275)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'confirm does not loop forever' span_id:2284))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2288) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git config sendemail.confirm never &&\n'
            span_id: 2289
          ) (Token id:Id.Lit_Chars val:'\tgit config sendemail.confirm auto &&\n' span_id:2290) 
          (Token id:Id.Lit_Chars val:'\tGIT_SEND_EMAIL_NOTTY=1 &&\n' span_id:2291) (Token id:Id.Lit_Chars val:'\texport GIT_SEND_EMAIL_NOTTY &&\n' span_id:2292) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tyes "bogus" | test_must_fail git send-email \\\n'
            span_id: 2293
          ) (Token id:Id.Lit_Chars val:'\t\t\t--from="Example <nobody@example.com>" \\\n' span_id:2294) 
          (Token id:Id.Lit_Chars val:'\t\t\t--to=nobody@example.com \\\n' span_id:2295) (Token id:Id.Lit_Chars val:'\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2296) 
          (Token id:Id.Lit_Chars val:'\t\t\t$patches\n' span_id:2297)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'utf8 Cc is rfc2047 encoded' span_id:2306))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2310) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2311) (Token id:Id.Lit_Chars val:'\trm -fr outdir &&\n' span_id:2312) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit format-patch -1 -o outdir --cc="\xc3\xa0\xc3\xa9\xc3\xac\xc3\xb6\xc3\xba <utf8@example.com>" &&\n'
            span_id: 2313
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2314) 
          (Token
            id: Id.Lit_Chars
            val: '\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2315
          ) (Token id:Id.Lit_Chars val:'\t--to=nobody@example.com \\\n' span_id:2316) 
          (Token
            id: Id.Lit_Chars
            val: '\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 2317
          ) (Token id:Id.Lit_Chars val:'\toutdir/*.patch &&\n' span_id:2318) 
          (Token id:Id.Lit_Chars val:'\tgrep "^\t" msgtxt1 |\n' span_id:2319) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "=?UTF-8?q?=C3=A0=C3=A9=C3=AC=C3=B6=C3=BA?= <utf8@example.com>"\n'
            span_id: 2320
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--compose adds MIME for utf8 body' span_id:2329))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2333) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2334) (Token id:Id.Lit_Chars val:'\twrite_script fake-editor-utf8 <<-\\EOF &&\n' span_id:2335) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "utf8 body: \xc3\xa0\xc3\xa9\xc3\xac\xc3\xb6\xc3\xba" >>"$1"\n'
            span_id: 2336
          ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2337) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_EDITOR="\\"$(pwd)/fake-editor-utf8\\"" \\\n'
            span_id: 2338
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2339) 
          (Token id:Id.Lit_Chars val:'\t\t--compose --subject foo \\\n' span_id:2340) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:2341) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2342) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2343) 
          (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:2344) (Token id:Id.Lit_Chars val:'\tgrep "^utf8 body" msgtxt1 &&\n' span_id:2345) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^Content-Type: text/plain; charset=UTF-8" msgtxt1\n'
            span_id: 2346
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--compose respects user mime type' span_id:2355))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2359) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2360) (Token id:Id.Lit_Chars val:'\twrite_script fake-editor-utf8-mime <<-\\EOF &&\n' span_id:2361) 
          (Token id:Id.Lit_Chars val:'\tcat >"$1" <<-\\EOM\n' span_id:2362) (Token id:Id.Lit_Chars val:'\tMIME-Version: 1.0\n' span_id:2363) 
          (Token
            id: Id.Lit_Chars
            val: '\tContent-Type: text/plain; charset=iso-8859-1\n'
            span_id: 2364
          ) (Token id:Id.Lit_Chars val:'\tContent-Transfer-Encoding: 8bit\n' span_id:2365) 
          (Token id:Id.Lit_Chars val:'\tSubject: foo\n' span_id:2366) (Token id:Id.Lit_Chars val:'\n' span_id:2367) 
          (Token
            id: Id.Lit_Chars
            val: '\tutf8 body: \xc3\xa0\xc3\xa9\xc3\xac\xc3\xb6\xc3\xba\n'
            span_id: 2368
          ) (Token id:Id.Lit_Chars val:'\tEOM\n' span_id:2369) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2370) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_EDITOR="\\"$(pwd)/fake-editor-utf8-mime\\"" \\\n'
            span_id: 2371
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2372) 
          (Token id:Id.Lit_Chars val:'\t\t--compose --subject foo \\\n' span_id:2373) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:2374) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2375) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2376) 
          (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:2377) (Token id:Id.Lit_Chars val:'\tgrep "^utf8 body" msgtxt1 &&\n' span_id:2378) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^Content-Type: text/plain; charset=iso-8859-1" msgtxt1 &&\n'
            span_id: 2379
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! grep "^Content-Type: text/plain; charset=UTF-8" msgtxt1\n'
            span_id: 2380
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--compose adds MIME for utf8 subject' span_id:2389))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2393) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2394) (Token id:Id.Lit_Chars val:'\tGIT_EDITOR="\\"$(pwd)/fake-editor\\"" \\\n' span_id:2395) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2396) (Token id:Id.Lit_Chars val:'\t\t--compose --subject utf8-s\xc3\xbcbj\xc3\xabct \\\n' span_id:2397) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2398
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2399) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 2400
          ) (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:2401) 
          (Token id:Id.Lit_Chars val:'\tgrep "^fake edit" msgtxt1 &&\n' span_id:2402) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^Subject: =?UTF-8?q?utf8-s=C3=BCbj=C3=ABct?=" msgtxt1\n'
            span_id: 2403
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'utf8 author is correctly passed on' span_id:2412))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2416) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2417) (Token id:Id.Lit_Chars val:'\ttest_commit weird_author &&\n' span_id:2418) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "git reset --hard HEAD^" &&\n'
            span_id: 2419
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit commit --amend --author "F\xc3\xbc\xc3\xb1n\xc3\xbd N\xc3\xa2m\xc3\xa9 <odd_?=mail@example.com>" &&\n'
            span_id: 2420
          ) (Token id:Id.Lit_Chars val:'\tgit format-patch --stdout -1 >funny_name.patch &&\n' span_id:2421) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit send-email --from="Example <nobody@example.com>" \\\n'
            span_id: 2422
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2423) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 2424
          ) (Token id:Id.Lit_Chars val:'\t\tfunny_name.patch &&\n' span_id:2425) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgrep "^From: F\xc3\xbc\xc3\xb1n\xc3\xbd N\xc3\xa2m\xc3\xa9 <odd_?=mail@example.com>" msgtxt1\n'
            span_id: 2426
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'utf8 sender is not duplicated' span_id:2435))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2439) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2440) (Token id:Id.Lit_Chars val:'\ttest_commit weird_sender &&\n' span_id:2441) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "git reset --hard HEAD^" &&\n'
            span_id: 2442
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit commit --amend --author "F\xc3\xbc\xc3\xb1n\xc3\xbd N\xc3\xa2m\xc3\xa9 <odd_?=mail@example.com>" &&\n'
            span_id: 2443
          ) (Token id:Id.Lit_Chars val:'\tgit format-patch --stdout -1 >funny_name.patch &&\n' span_id:2444) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit send-email --from="F\xc3\xbc\xc3\xb1n\xc3\xbd N\xc3\xa2m\xc3\xa9 <odd_?=mail@example.com>" \\\n'
            span_id: 2445
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2446) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 2447
          ) (Token id:Id.Lit_Chars val:'\t\tfunny_name.patch &&\n' span_id:2448) 
          (Token id:Id.Lit_Chars val:'\tgrep "^From: " msgtxt1 >msgfrom &&\n' span_id:2449) (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 msgfrom\n' span_id:2450)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.composeencoding works' span_id:2459))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2463) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2464) (Token id:Id.Lit_Chars val:'\tgit config sendemail.composeencoding iso-8859-1 &&\n' span_id:2465) 
          (Token
            id: Id.Lit_Chars
            val: '\twrite_script fake-editor-utf8 <<-\\EOF &&\n'
            span_id: 2466
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "utf8 body: \xc3\xa0\xc3\xa9\xc3\xac\xc3\xb6\xc3\xba" >>"$1"\n'
            span_id: 2467
          ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2468) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_EDITOR="\\"$(pwd)/fake-editor-utf8\\"" \\\n'
            span_id: 2469
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2470) 
          (Token id:Id.Lit_Chars val:'\t\t--compose --subject foo \\\n' span_id:2471) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:2472) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2473) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2474) 
          (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:2475) (Token id:Id.Lit_Chars val:'\tgrep "^utf8 body" msgtxt1 &&\n' span_id:2476) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^Content-Type: text/plain; charset=iso-8859-1" msgtxt1\n'
            span_id: 2477
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--compose-encoding works' span_id:2486))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2490) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2491) (Token id:Id.Lit_Chars val:'\twrite_script fake-editor-utf8 <<-\\EOF &&\n' span_id:2492) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "utf8 body: \xc3\xa0\xc3\xa9\xc3\xac\xc3\xb6\xc3\xba" >>"$1"\n'
            span_id: 2493
          ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2494) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_EDITOR="\\"$(pwd)/fake-editor-utf8\\"" \\\n'
            span_id: 2495
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2496) 
          (Token id:Id.Lit_Chars val:'\t\t--compose-encoding iso-8859-1 \\\n' span_id:2497) (Token id:Id.Lit_Chars val:'\t\t--compose --subject foo \\\n' span_id:2498) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2499
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2500) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 2501
          ) (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:2502) 
          (Token id:Id.Lit_Chars val:'\tgrep "^utf8 body" msgtxt1 &&\n' span_id:2503) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^Content-Type: text/plain; charset=iso-8859-1" msgtxt1\n'
            span_id: 2504
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--compose-encoding overrides sendemail.composeencoding'
            span_id: 2513
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2517) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2518) (Token id:Id.Lit_Chars val:'\tgit config sendemail.composeencoding iso-8859-1 &&\n' span_id:2519) 
          (Token
            id: Id.Lit_Chars
            val: '\twrite_script fake-editor-utf8 <<-\\EOF &&\n'
            span_id: 2520
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "utf8 body: \xc3\xa0\xc3\xa9\xc3\xac\xc3\xb6\xc3\xba" >>"$1"\n'
            span_id: 2521
          ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2522) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_EDITOR="\\"$(pwd)/fake-editor-utf8\\"" \\\n'
            span_id: 2523
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2524) 
          (Token id:Id.Lit_Chars val:'\t\t--compose-encoding iso-8859-2 \\\n' span_id:2525) (Token id:Id.Lit_Chars val:'\t\t--compose --subject foo \\\n' span_id:2526) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2527
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2528) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 2529
          ) (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:2530) 
          (Token id:Id.Lit_Chars val:'\tgrep "^utf8 body" msgtxt1 &&\n' span_id:2531) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^Content-Type: text/plain; charset=iso-8859-2" msgtxt1\n'
            span_id: 2532
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--compose-encoding adds correct MIME for subject'
            span_id: 2541
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2545) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2546) (Token id:Id.Lit_Chars val:'\tGIT_EDITOR="\\"$(pwd)/fake-editor\\"" \\\n' span_id:2547) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2548) (Token id:Id.Lit_Chars val:'\t\t--compose-encoding iso-8859-2 \\\n' span_id:2549) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--compose --subject utf8-s\xc3\xbcbj\xc3\xabct \\\n'
            span_id: 2550
          ) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:2551) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2552) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2553) 
          (Token id:Id.Lit_Chars val:'\t\t$patches &&\n' span_id:2554) (Token id:Id.Lit_Chars val:'\tgrep "^fake edit" msgtxt1 &&\n' span_id:2555) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^Subject: =?iso-8859-2?q?utf8-s=C3=BCbj=C3=ABct?=" msgtxt1\n'
            span_id: 2556
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'detects ambiguous reference/file conflict' span_id:2565))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2569) 
          (Token id:Id.Lit_Chars val:'\techo master >master &&\n' span_id:2570) (Token id:Id.Lit_Chars val:'\tgit add master &&\n' span_id:2571) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m"add master" &&\n' span_id:2572) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git send-email --dry-run master 2>errors &&\n'
            span_id: 2573
          ) (Token id:Id.Lit_Chars val:'\tgrep disambiguate errors\n' span_id:2574)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'feed two files' span_id:2583))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2587) 
          (Token id:Id.Lit_Chars val:'\trm -fr outdir &&\n' span_id:2588) (Token id:Id.Lit_Chars val:'\tgit format-patch -2 -o outdir &&\n' span_id:2589) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2590) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2591) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2592
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2593) 
          (Token
            id: Id.Lit_Chars
            val: '\t\toutdir/000?-*.patch 2>errors >out &&\n'
            span_id: 2594
          ) (Token id:Id.Lit_Chars val:'\tgrep "^Subject: " out >subjects &&\n' span_id:2595) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "z$(sed -n -e 1p subjects)" = "zSubject: [PATCH 1/2] Second." &&\n'
            span_id: 2596
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "z$(sed -n -e 2p subjects)" = "zSubject: [PATCH 2/2] add master"\n'
            span_id: 2597
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'in-reply-to but no threading' span_id:2606))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2610) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2611) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2612) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2613
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2614) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--in-reply-to="<in-reply-id@example.com>" \\\n'
            span_id: 2615
          ) (Token id:Id.Lit_Chars val:'\t\t--no-thread \\\n' span_id:2616) 
          (Token id:Id.Lit_Chars val:'\t\t$patches |\n' span_id:2617) (Token id:Id.Lit_Chars val:'\tgrep "In-Reply-To: <in-reply-id@example.com>"\n' span_id:2618)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'no in-reply-to and no threading' span_id:2627))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2631) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2632) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2633) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2634
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2635) 
          (Token id:Id.Lit_Chars val:'\t\t--no-thread \\\n' span_id:2636) (Token id:Id.Lit_Chars val:'\t\t$patches $patches >stdout &&\n' span_id:2637) 
          (Token id:Id.Lit_Chars val:'\t! grep "In-Reply-To: " stdout\n' span_id:2638)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'threading but no chain-reply-to' span_id:2647))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2651) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2652) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2653) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2654
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2655) 
          (Token id:Id.Lit_Chars val:'\t\t--thread \\\n' span_id:2656) (Token id:Id.Lit_Chars val:'\t\t--no-chain-reply-to \\\n' span_id:2657) 
          (Token id:Id.Lit_Chars val:'\t\t$patches $patches >stdout &&\n' span_id:2658) (Token id:Id.Lit_Chars val:'\tgrep "In-Reply-To: " stdout\n' span_id:2659)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.to works' span_id:2668))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2672) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --replace-all sendemail.to "Somebody <somebody@ex.com>" &&\n'
            span_id: 2673
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2674) 
          (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2675) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:2676) 
          (Token id:Id.Lit_Chars val:'\t\t$patches $patches >stdout &&\n' span_id:2677) (Token id:Id.Lit_Chars val:'\tgrep "To: Somebody <somebody@ex.com>" stdout\n' span_id:2678)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--no-to overrides sendemail.to' span_id:2687))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2691) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2692) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2693) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2694
          ) (Token id:Id.Lit_Chars val:'\t\t--no-to \\\n' span_id:2695) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2696) (Token id:Id.Lit_Chars val:'\t\t$patches $patches >stdout &&\n' span_id:2697) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "To: nobody@example.com" stdout &&\n'
            span_id: 2698
          ) (Token id:Id.Lit_Chars val:'\t! grep "To: Somebody <somebody@ex.com>" stdout\n' span_id:2699)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.cc works' span_id:2708))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2712) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --replace-all sendemail.cc "Somebody <somebody@ex.com>" &&\n'
            span_id: 2713
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2714) 
          (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2715) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:2716) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2717) (Token id:Id.Lit_Chars val:'\t\t$patches $patches >stdout &&\n' span_id:2718) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "Cc: Somebody <somebody@ex.com>" stdout\n'
            span_id: 2719
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--no-cc overrides sendemail.cc' span_id:2728))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2732) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2733) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2734) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2735
          ) (Token id:Id.Lit_Chars val:'\t\t--no-cc \\\n' span_id:2736) 
          (Token id:Id.Lit_Chars val:'\t\t--cc=bodies@example.com \\\n' span_id:2737) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2738) 
          (Token id:Id.Lit_Chars val:'\t\t$patches $patches >stdout &&\n' span_id:2739) (Token id:Id.Lit_Chars val:'\tgrep "Cc: bodies@example.com" stdout &&\n' span_id:2740) 
          (Token
            id: Id.Lit_Chars
            val: '\t! grep "Cc: Somebody <somebody@ex.com>" stdout\n'
            span_id: 2741
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.bcc works' span_id:2750))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2754) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --replace-all sendemail.bcc "Other <other@ex.com>" &&\n'
            span_id: 2755
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2756) 
          (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2757) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:2758) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2759) (Token id:Id.Lit_Chars val:'\t\t--smtp-server relay.example.com \\\n' span_id:2760) 
          (Token id:Id.Lit_Chars val:'\t\t$patches $patches >stdout &&\n' span_id:2761) (Token id:Id.Lit_Chars val:'\tgrep "RCPT TO:<other@ex.com>" stdout\n' span_id:2762)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--no-bcc overrides sendemail.bcc' span_id:2771))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2775) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2776) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2777) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2778
          ) (Token id:Id.Lit_Chars val:'\t\t--no-bcc \\\n' span_id:2779) 
          (Token id:Id.Lit_Chars val:'\t\t--bcc=bodies@example.com \\\n' span_id:2780) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2781) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server relay.example.com \\\n'
            span_id: 2782
          ) (Token id:Id.Lit_Chars val:'\t\t$patches $patches >stdout &&\n' span_id:2783) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "RCPT TO:<bodies@example.com>" stdout &&\n'
            span_id: 2784
          ) (Token id:Id.Lit_Chars val:'\t! grep "RCPT TO:<other@ex.com>" stdout\n' span_id:2785)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'patches To headers are used by default' span_id:2794))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2798) 
          (Token
            id: Id.Lit_Chars
            val: '\tpatch=$(git format-patch -1 --to="bodies@example.com") &&\n'
            span_id: 2799
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm $patch" &&\n' span_id:2800) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2801) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2802) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2803
          ) (Token id:Id.Lit_Chars val:'\t\t--smtp-server relay.example.com \\\n' span_id:2804) 
          (Token id:Id.Lit_Chars val:'\t\t$patch >stdout &&\n' span_id:2805) (Token id:Id.Lit_Chars val:'\tgrep "RCPT TO:<bodies@example.com>" stdout\n' span_id:2806)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'patches To headers are appended to' span_id:2815))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2819) 
          (Token
            id: Id.Lit_Chars
            val: '\tpatch=$(git format-patch -1 --to="bodies@example.com") &&\n'
            span_id: 2820
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm $patch" &&\n' span_id:2821) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2822) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2823) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2824
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:2825) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server relay.example.com \\\n'
            span_id: 2826
          ) (Token id:Id.Lit_Chars val:'\t\t$patch >stdout &&\n' span_id:2827) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "RCPT TO:<bodies@example.com>" stdout &&\n'
            span_id: 2828
          ) (Token id:Id.Lit_Chars val:'\tgrep "RCPT TO:<nobody@example.com>" stdout\n' span_id:2829)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'To headers from files reset each patch' span_id:2838))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2842) 
          (Token
            id: Id.Lit_Chars
            val: '\tpatch1=$(git format-patch -1 --to="bodies@example.com") &&\n'
            span_id: 2843
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tpatch2=$(git format-patch -1 --to="other@example.com" HEAD~) &&\n'
            span_id: 2844
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm $patch1 && rm $patch2" &&\n' span_id:2845) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:2846) (Token id:Id.Lit_Chars val:'\t\t--dry-run \\\n' span_id:2847) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 2848
          ) (Token id:Id.Lit_Chars val:'\t\t--to="nobody@example.com" \\\n' span_id:2849) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server relay.example.com \\\n'
            span_id: 2850
          ) (Token id:Id.Lit_Chars val:'\t\t$patch1 $patch2 >stdout &&\n' span_id:2851) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(grep -c "RCPT TO:<bodies@example.com>" stdout) = 1 &&\n'
            span_id: 2852
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(grep -c "RCPT TO:<nobody@example.com>" stdout) = 2 &&\n'
            span_id: 2853
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(grep -c "RCPT TO:<other@example.com>" stdout) = 1\n'
            span_id: 2854
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:2863))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2867) 
          (Token id:Id.Lit_Chars val:'cat >email-using-8bit <<\\EOF\n' span_id:2868) 
          (Token
            id: Id.Lit_Chars
            val: 'From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001\n'
            span_id: 2869
          ) (Token id:Id.Lit_Chars val:'Message-Id: <bogus-message-id@example.com>\n' span_id:2870) 
          (Token id:Id.Lit_Chars val:'From: author@example.com\n' span_id:2871) (Token id:Id.Lit_Chars val:'Date: Sat, 12 Jun 2010 15:53:58 +0200\n' span_id:2872) 
          (Token id:Id.Lit_Chars val:'Subject: subject goes here\n' span_id:2873) (Token id:Id.Lit_Chars val:'\n' span_id:2874) 
          (Token
            id: Id.Lit_Chars
            val: 'Dieser deutsche Text enth\xc3\xa4lt einen Umlaut!\n'
            span_id: 2875
          ) (Token id:Id.Lit_Chars val:'EOF\n' span_id:2876)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:2885))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2889) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "Subject: subject goes here" >expected\n'
            span_id: 2890
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'ASCII subject is not RFC2047 quoted' span_id:2899))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2903) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2904) (Token id:Id.Lit_Chars val:'\techo bogus |\n' span_id:2905) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit send-email --from=author@example.com --to=nobody@example.com \\\n'
            span_id: 2906
          ) (Token id:Id.Lit_Chars val:'\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2907) 
          (Token id:Id.Lit_Chars val:'\t\t\t--8bit-encoding=UTF-8 \\\n' span_id:2908) (Token id:Id.Lit_Chars val:'\t\t\temail-using-8bit >stdout &&\n' span_id:2909) 
          (Token id:Id.Lit_Chars val:'\tgrep "Subject" msgtxt1 >actual &&\n' span_id:2910) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2911)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:2920))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2924) 
          (Token id:Id.Lit_Chars val:'\tcat >content-type-decl <<-\\EOF\n' span_id:2925) (Token id:Id.Lit_Chars val:'\tMIME-Version: 1.0\n' span_id:2926) 
          (Token
            id: Id.Lit_Chars
            val: '\tContent-Type: text/plain; charset=UTF-8\n'
            span_id: 2927
          ) (Token id:Id.Lit_Chars val:'\tContent-Transfer-Encoding: 8bit\n' span_id:2928) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2929)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'asks about and fixes 8bit encodings' span_id:2938))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2942) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2943) (Token id:Id.Lit_Chars val:'\techo |\n' span_id:2944) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit send-email --from=author@example.com --to=nobody@example.com \\\n'
            span_id: 2945
          ) (Token id:Id.Lit_Chars val:'\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2946) 
          (Token id:Id.Lit_Chars val:'\t\t\temail-using-8bit >stdout &&\n' span_id:2947) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "do not declare a Content-Transfer-Encoding" stdout &&\n'
            span_id: 2948
          ) (Token id:Id.Lit_Chars val:'\tgrep email-using-8bit stdout &&\n' span_id:2949) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "Which 8bit encoding" stdout &&\n'
            span_id: 2950
          ) (Token id:Id.Lit_Chars val:'\tegrep "Content|MIME" msgtxt1 >actual &&\n' span_id:2951) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp actual content-type-decl\n' span_id:2952)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.8bitEncoding works' span_id:2961))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2965) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2966) (Token id:Id.Lit_Chars val:'\tgit config sendemail.assume8bitEncoding UTF-8 &&\n' span_id:2967) 
          (Token id:Id.Lit_Chars val:'\techo bogus |\n' span_id:2968) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit send-email --from=author@example.com --to=nobody@example.com \\\n'
            span_id: 2969
          ) (Token id:Id.Lit_Chars val:'\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2970) 
          (Token id:Id.Lit_Chars val:'\t\t\temail-using-8bit >stdout &&\n' span_id:2971) (Token id:Id.Lit_Chars val:'\tegrep "Content|MIME" msgtxt1 >actual &&\n' span_id:2972) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp actual content-type-decl\n' span_id:2973)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--8bit-encoding overrides sendemail.8bitEncoding'
            span_id: 2982
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2986) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:2987) (Token id:Id.Lit_Chars val:'\tgit config sendemail.assume8bitEncoding "bogus too" &&\n' span_id:2988) 
          (Token id:Id.Lit_Chars val:'\techo bogus |\n' span_id:2989) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit send-email --from=author@example.com --to=nobody@example.com \\\n'
            span_id: 2990
          ) (Token id:Id.Lit_Chars val:'\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:2991) 
          (Token id:Id.Lit_Chars val:'\t\t\t--8bit-encoding=UTF-8 \\\n' span_id:2992) (Token id:Id.Lit_Chars val:'\t\t\temail-using-8bit >stdout &&\n' span_id:2993) 
          (Token
            id: Id.Lit_Chars
            val: '\tegrep "Content|MIME" msgtxt1 >actual &&\n'
            span_id: 2994
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp actual content-type-decl\n' span_id:2995)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3004))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3008) 
          (Token id:Id.Lit_Chars val:'\tcat >email-using-8bit <<-\\EOF\n' span_id:3009) 
          (Token
            id: Id.Lit_Chars
            val: '\tFrom fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001\n'
            span_id: 3010
          ) (Token id:Id.Lit_Chars val:'\tMessage-Id: <bogus-message-id@example.com>\n' span_id:3011) 
          (Token id:Id.Lit_Chars val:'\tFrom: author@example.com\n' span_id:3012) (Token id:Id.Lit_Chars val:'\tDate: Sat, 12 Jun 2010 15:53:58 +0200\n' span_id:3013) 
          (Token
            id: Id.Lit_Chars
            val: '\tSubject: Dieser Betreff enth\xc3\xa4lt auch einen Umlaut!\n'
            span_id: 3014
          ) (Token id:Id.Lit_Chars val:'\n' span_id:3015) 
          (Token id:Id.Lit_Chars val:'\tNothing to see here.\n' span_id:3016) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3017)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3026))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3030) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF\n' span_id:3031) 
          (Token
            id: Id.Lit_Chars
            val: '\tSubject: =?UTF-8?q?Dieser=20Betreff=20enth=C3=A4lt=20auch=20einen=20Umlaut!?=\n'
            span_id: 3032
          ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3033)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--8bit-encoding also treats subject' span_id:3042))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3046) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3047) (Token id:Id.Lit_Chars val:'\techo bogus |\n' span_id:3048) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit send-email --from=author@example.com --to=nobody@example.com \\\n'
            span_id: 3049
          ) (Token id:Id.Lit_Chars val:'\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3050) 
          (Token id:Id.Lit_Chars val:'\t\t\t--8bit-encoding=UTF-8 \\\n' span_id:3051) (Token id:Id.Lit_Chars val:'\t\t\temail-using-8bit >stdout &&\n' span_id:3052) 
          (Token id:Id.Lit_Chars val:'\tgrep "Subject" msgtxt1 >actual &&\n' span_id:3053) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3054)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3063))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3067) 
          (Token id:Id.Lit_Chars val:'\tcat >email-using-8bit <<-\\EOF\n' span_id:3068) 
          (Token
            id: Id.Lit_Chars
            val: '\tFrom fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001\n'
            span_id: 3069
          ) (Token id:Id.Lit_Chars val:'\tMessage-Id: <bogus-message-id@example.com>\n' span_id:3070) 
          (Token
            id: Id.Lit_Chars
            val: '\tFrom: A U Thor <author@example.com>\n'
            span_id: 3071
          ) (Token id:Id.Lit_Chars val:'\tDate: Sat, 12 Jun 2010 15:53:58 +0200\n' span_id:3072) 
          (Token
            id: Id.Lit_Chars
            val: '\tContent-Type: text/plain; charset=UTF-8\n'
            span_id: 3073
          ) (Token id:Id.Lit_Chars val:'\tSubject: Nothing to see here.\n' span_id:3074) 
          (Token id:Id.Lit_Chars val:'\n' span_id:3075) (Token id:Id.Lit_Chars val:'\tDieser Betreff enth\xc3\xa4lt auch einen Umlaut!\n' span_id:3076) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3077)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'sendemail.transferencoding=7bit fails on 8bit data'
            span_id: 3086
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3090) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3091) (Token id:Id.Lit_Chars val:'\tgit config sendemail.transferEncoding 7bit &&\n' span_id:3092) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git send-email \\\n' span_id:3093) (Token id:Id.Lit_Chars val:'\t\t--transfer-encoding=7bit \\\n' span_id:3094) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 3095
          ) (Token id:Id.Lit_Chars val:'\t\temail-using-8bit \\\n' span_id:3096) 
          (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3097) (Token id:Id.Lit_Chars val:'\tgrep "cannot send message as 7bit" errors &&\n' span_id:3098) 
          (Token id:Id.Lit_Chars val:'\ttest -z "$(ls msgtxt*)"\n' span_id:3099)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--transfer-encoding overrides sendemail.transferEncoding'
            span_id: 3108
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3112) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3113) (Token id:Id.Lit_Chars val:'\tgit config sendemail.transferEncoding 8bit &&\n' span_id:3114) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git send-email \\\n' span_id:3115) (Token id:Id.Lit_Chars val:'\t\t--transfer-encoding=7bit \\\n' span_id:3116) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 3117
          ) (Token id:Id.Lit_Chars val:'\t\temail-using-8bit \\\n' span_id:3118) 
          (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3119) (Token id:Id.Lit_Chars val:'\tgrep "cannot send message as 7bit" errors &&\n' span_id:3120) 
          (Token id:Id.Lit_Chars val:'\ttest -z "$(ls msgtxt*)"\n' span_id:3121)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.transferencoding=8bit' span_id:3130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3134) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3135) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3136) 
          (Token id:Id.Lit_Chars val:'\t\t--transfer-encoding=8bit \\\n' span_id:3137) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3138) 
          (Token id:Id.Lit_Chars val:'\t\temail-using-8bit \\\n' span_id:3139) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3140) 
          (Token id:Id.Lit_Chars val:'\tsed ' span_id:3141)
        ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) 
        (SQ (Token id:Id.Lit_Chars val:' msgtxt1 >actual &&\n' span_id:3150) 
          (Token id:Id.Lit_Chars val:'\tsed ' span_id:3151)
        ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) 
        (SQ (Token id:Id.Lit_Chars val:' email-using-8bit >expected &&\n' span_id:3160) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3161)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3170))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3174) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF\n' span_id:3175) (Token id:Id.Lit_Chars val:'\tDieser Betreff enth=C3=A4lt auch einen Umlaut!\n' span_id:3176) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3177)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '8-bit and sendemail.transferencoding=quoted-printable'
            span_id: 3186
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3190) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3191) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3192) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--transfer-encoding=quoted-printable \\\n'
            span_id: 3193
          ) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3194) 
          (Token id:Id.Lit_Chars val:'\t\temail-using-8bit \\\n' span_id:3195) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3196) 
          (Token id:Id.Lit_Chars val:'\tsed ' span_id:3197)
        ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) 
        (SQ (Token id:Id.Lit_Chars val:' msgtxt1 >actual &&\n' span_id:3206) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3207)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3216))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3220) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF\n' span_id:3221) 
          (Token
            id: Id.Lit_Chars
            val: '\tRGllc2VyIEJldHJlZmYgZW50aMOkbHQgYXVjaCBlaW5lbiBVbWxhdXQhCg==\n'
            span_id: 3222
          ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3223)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'8-bit and sendemail.transferencoding=base64' span_id:3232))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3236) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3237) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3238) 
          (Token id:Id.Lit_Chars val:'\t\t--transfer-encoding=base64 \\\n' span_id:3239) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3240) 
          (Token id:Id.Lit_Chars val:'\t\temail-using-8bit \\\n' span_id:3241) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3242) 
          (Token id:Id.Lit_Chars val:'\tsed ' span_id:3243)
        ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) 
        (SQ (Token id:Id.Lit_Chars val:' msgtxt1 >actual &&\n' span_id:3252) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3253)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3262))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3266) 
          (Token id:Id.Lit_Chars val:'\tcat >email-using-qp <<-\\EOF\n' span_id:3267) 
          (Token
            id: Id.Lit_Chars
            val: '\tFrom fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001\n'
            span_id: 3268
          ) (Token id:Id.Lit_Chars val:'\tMessage-Id: <bogus-message-id@example.com>\n' span_id:3269) 
          (Token
            id: Id.Lit_Chars
            val: '\tFrom: A U Thor <author@example.com>\n'
            span_id: 3270
          ) (Token id:Id.Lit_Chars val:'\tDate: Sat, 12 Jun 2010 15:53:58 +0200\n' span_id:3271) 
          (Token id:Id.Lit_Chars val:'\tMIME-Version: 1.0\n' span_id:3272) (Token id:Id.Lit_Chars val:'\tContent-Transfer-Encoding: quoted-printable\n' span_id:3273) 
          (Token
            id: Id.Lit_Chars
            val: '\tContent-Type: text/plain; charset=UTF-8\n'
            span_id: 3274
          ) (Token id:Id.Lit_Chars val:'\tSubject: Nothing to see here.\n' span_id:3275) 
          (Token id:Id.Lit_Chars val:'\n' span_id:3276) (Token id:Id.Lit_Chars val:'\tDieser Betreff enth=C3=A4lt auch einen Umlaut!\n' span_id:3277) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3278)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'convert from quoted-printable to base64' span_id:3287))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3291) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3292) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3293) 
          (Token id:Id.Lit_Chars val:'\t\t--transfer-encoding=base64 \\\n' span_id:3294) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3295) 
          (Token id:Id.Lit_Chars val:'\t\temail-using-qp \\\n' span_id:3296) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3297) 
          (Token id:Id.Lit_Chars val:'\tsed ' span_id:3298)
        ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) 
        (SQ (Token id:Id.Lit_Chars val:' msgtxt1 >actual &&\n' span_id:3307) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3308)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3317))} 
      {
        (DQ ('\n') ("tr -d '") 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:3323)
          ) ("015' | tr '%' '") 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:3325)
          ) ("015' >email-using-crlf <<EOF\n") 
          ('From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001\n') ('Message-Id: <bogus-message-id@example.com>\n') ('From: A U Thor <author@example.com>\n') 
          ('Date: Sat, 12 Jun 2010 15:53:58 +0200\n') ('Content-Type: text/plain; charset=UTF-8\n') ('Subject: Nothing to see here.\n') ('\n') 
          ('Look, I have a CRLF and an = sign!%\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3344))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3348) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF\n' span_id:3349) (Token id:Id.Lit_Chars val:'\tLook, I have a CRLF and an =3D sign!=0D\n' span_id:3350) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3351)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'CRLF and sendemail.transferencoding=quoted-printable'
            span_id: 3360
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3364) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3365) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3366) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--transfer-encoding=quoted-printable \\\n'
            span_id: 3367
          ) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3368) 
          (Token id:Id.Lit_Chars val:'\t\temail-using-crlf \\\n' span_id:3369) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3370) 
          (Token id:Id.Lit_Chars val:'\tsed ' span_id:3371)
        ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) 
        (SQ (Token id:Id.Lit_Chars val:' msgtxt1 >actual &&\n' span_id:3380) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3381)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:3390))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3394) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF\n' span_id:3395) (Token id:Id.Lit_Chars val:'\tTG9vaywgSSBoYXZlIGEgQ1JMRiBhbmQgYW4gPSBzaWduIQ0K\n' span_id:3396) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:3397)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'CRLF and sendemail.transferencoding=base64' span_id:3406))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3410) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3411) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3412) 
          (Token id:Id.Lit_Chars val:'\t\t--transfer-encoding=base64 \\\n' span_id:3413) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3414) 
          (Token id:Id.Lit_Chars val:'\t\temail-using-crlf \\\n' span_id:3415) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3416) 
          (Token id:Id.Lit_Chars val:'\tsed ' span_id:3417)
        ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) 
        (SQ (Token id:Id.Lit_Chars val:' msgtxt1 >actual &&\n' span_id:3426) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3427)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'refusing to send cover letter template' span_id:3446))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3450) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3451) (Token id:Id.Lit_Chars val:'\trm -fr outdir &&\n' span_id:3452) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit format-patch --cover-letter -2 -o outdir &&\n'
            span_id: 3453
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git send-email \\\n' span_id:3454) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 3455
          ) (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:3456) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
            span_id: 3457
          ) (Token id:Id.Lit_Chars val:'\t\toutdir/0002-*.patch \\\n' span_id:3458) 
          (Token id:Id.Lit_Chars val:'\t\toutdir/0000-*.patch \\\n' span_id:3459) (Token id:Id.Lit_Chars val:'\t\toutdir/0001-*.patch \\\n' span_id:3460) 
          (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3461) (Token id:Id.Lit_Chars val:'\tgrep "SUBJECT HERE" errors &&\n' span_id:3462) 
          (Token id:Id.Lit_Chars val:'\ttest -z "$(ls msgtxt*)"\n' span_id:3463)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--force sends cover letter template anyway' span_id:3472))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3476) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3477) (Token id:Id.Lit_Chars val:'\trm -fr outdir &&\n' span_id:3478) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit format-patch --cover-letter -2 -o outdir &&\n'
            span_id: 3479
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3480) 
          (Token id:Id.Lit_Chars val:'\t\t--force \\\n' span_id:3481) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:3482) 
          (Token id:Id.Lit_Chars val:'\t\t--to=nobody@example.com \\\n' span_id:3483) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3484) 
          (Token id:Id.Lit_Chars val:'\t\toutdir/0002-*.patch \\\n' span_id:3485) (Token id:Id.Lit_Chars val:'\t\toutdir/0000-*.patch \\\n' span_id:3486) 
          (Token id:Id.Lit_Chars val:'\t\toutdir/0001-*.patch \\\n' span_id:3487) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3488) 
          (Token id:Id.Lit_Chars val:'\t! grep "SUBJECT HERE" errors &&\n' span_id:3489) (Token id:Id.Lit_Chars val:'\ttest -n "$(ls msgtxt*)"\n' span_id:3490)
        )
      }
    )
    (command.ShFunction
      name: test_cover_addresses
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:header)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [3502]
                )
              ]
            )
            (C {(shift)})
            (command.AndOr
              ops: [
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
              ]
              children: [
                (C {(clean_fake_sendmail)})
                (C {(rm)} {(-fr)} {(outdir)})
                (C {(git)} {(format-patch)} {(--cover-letter)} {(-2)} {(-o)} {(outdir)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cover)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3541)
                            command_list: 
                              (command.CommandList
                                children: [(C {(echo)} {(outdir/0000-) (Id.Lit_Star '*') (.patch)})]
                              )
                          )
                        }
                      spids: [3540]
                    )
                  ]
                )
                (C {(mv)} {($ Id.VSub_DollarName '$cover')} {(cover-to-edit.patch)})
                (command.Simple
                  words: [
                    {(perl)}
                    {(-pe)}
                    {
                      (DQ ('s/^From:/') ($ Id.VSub_DollarName '$header') (': extra') (Id.Lit_Other '\\') 
                        ('@address.com') (Id.Lit_Other '\\') ('nFrom:/')
                      )
                    }
                    {(cover-to-edit.patch)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:3577)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$cover'))}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(git)}
                    {(send-email)}
                    {(--force)}
                    {(--from) (Id.Lit_Equals '=') (DQ ('Example <nobody@example.com>'))}
                    {(--no-to)}
                    {(--no-cc)}
                    {(DQ ($ Id.VSub_At '$@'))}
                    {(--smtp-server) (Id.Lit_Equals '=') 
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3618)
                          command_list: (command.CommandList children:[(C {(pwd)})])
                        ) (/fake.sendmail)
                      )
                    }
                    {(outdir/0000-) (Id.Lit_Star '*') (.patch)}
                    {(outdir/0001-) (Id.Lit_Star '*') (.patch)}
                    {(outdir/0002-) (Id.Lit_Star '*') (.patch)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'2>' span_id:3644)
                      fd: 2
                      arg_word: {(errors)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:3647)
                      fd: -1
                      arg_word: {(out)}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(grep)}
                    {(DQ ('^') ($ Id.VSub_DollarName '$header') (': extra@address.com'))}
                    {(msgtxt1)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:3663)
                      fd: -1
                      arg_word: {(to1)}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(grep)}
                    {(DQ ('^') ($ Id.VSub_DollarName '$header') (': extra@address.com'))}
                    {(msgtxt2)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:3679)
                      fd: -1
                      arg_word: {(to2)}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(grep)}
                    {(DQ ('^') ($ Id.VSub_DollarName '$header') (': extra@address.com'))}
                    {(msgtxt3)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:3695)
                      fd: -1
                      arg_word: {(to3)}
                    )
                  ]
                )
                (C {(test_line_count)} {(Id.Lit_Equals '=')} {(1)} {(to1)})
                (C {(test_line_count)} {(Id.Lit_Equals '=')} {(1)} {(to2)})
                (C {(test_line_count)} {(Id.Lit_Equals '=')} {(1)} {(to3)})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'to-cover adds To to all mail' span_id:3739))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3743) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cover_addresses "To" --to-cover\n'
            span_id: 3744
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'cc-cover adds Cc to all mail' span_id:3753))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3757) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cover_addresses "Cc" --cc-cover\n'
            span_id: 3758
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'tocover adds To to all mail' span_id:3767))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3771) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.tocover true &&\n'
            span_id: 3772
          ) (Token id:Id.Lit_Chars val:'\ttest_cover_addresses "To"\n' span_id:3773)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'cccover adds Cc to all mail' span_id:3782))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3786) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.cccover true &&\n'
            span_id: 3787
          ) (Token id:Id.Lit_Chars val:'\ttest_cover_addresses "Cc"\n' span_id:3788)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'escaped quotes in sendemail.aliasfiletype=mutt' span_id:3797))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3801) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3802) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "alias sbd \\\\\\"Dot U. Sir\\\\\\" <somebody@example.org>" >.mutt &&\n'
            span_id: 3803
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --replace-all sendemail.aliasesfile "$(pwd)/.mutt" &&\n'
            span_id: 3804
          ) (Token id:Id.Lit_Chars val:'\tgit config sendemail.aliasfiletype mutt &&\n' span_id:3805) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3806) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:3807) 
          (Token id:Id.Lit_Chars val:'\t\t--to=sbd \\\n' span_id:3808) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3809) 
          (Token id:Id.Lit_Chars val:'\t\toutdir/0001-*.patch \\\n' span_id:3810) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3811) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^!somebody@example\\.org!$" commandline1 &&\n'
            span_id: 3812
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep -F "To: \\"Dot U. Sir\\" <somebody@example.org>" out\n'
            span_id: 3813
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.aliasfiletype=mailrc' span_id:3822))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3826) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3827) (Token id:Id.Lit_Chars val:'\techo "alias sbd  somebody@example.org" >.mailrc &&\n' span_id:3828) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --replace-all sendemail.aliasesfile "$(pwd)/.mailrc" &&\n'
            span_id: 3829
          ) (Token id:Id.Lit_Chars val:'\tgit config sendemail.aliasfiletype mailrc &&\n' span_id:3830) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3831) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:3832) 
          (Token id:Id.Lit_Chars val:'\t\t--to=sbd \\\n' span_id:3833) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3834) 
          (Token id:Id.Lit_Chars val:'\t\toutdir/0001-*.patch \\\n' span_id:3835) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3836) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^!somebody@example\\.org!$" commandline1\n'
            span_id: 3837
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'sendemail.aliasfile=~/.mailrc' span_id:3846))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3850) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:3851) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "alias sbd  someone@example.org" >"$HOME/.mailrc" &&\n'
            span_id: 3852
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --replace-all sendemail.aliasesfile "~/.mailrc" &&\n'
            span_id: 3853
          ) (Token id:Id.Lit_Chars val:'\tgit config sendemail.aliasfiletype mailrc &&\n' span_id:3854) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:3855) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:3856) 
          (Token id:Id.Lit_Chars val:'\t\t--to=sbd \\\n' span_id:3857) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:3858) 
          (Token id:Id.Lit_Chars val:'\t\toutdir/0001-*.patch \\\n' span_id:3859) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:3860) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^!someone@example\\.org!$" commandline1\n'
            span_id: 3861
          )
        )
      }
    )
    (command.ShFunction
      name: test_dump_aliases
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:msg)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [3873]
                    )
                  ]
                )
                (C {(shift)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:filetype)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [3885]
                    )
                  ]
                )
                (C {(shift)})
                (command.Simple
                  words: [
                    {(printf)}
                    {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:3900))}
                    {(DQ ($ Id.VSub_At '$@'))}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:3907)
                      fd: -1
                      arg_word: {(expect)}
                    )
                  ]
                )
                (command.Simple
                  words: [{(cat)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:3915)
                      fd: -1
                      arg_word: {(.tmp-email-aliases)}
                    )
                  ]
                )
                (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
                  {(DQ ($ Id.VSub_DollarName '$msg'))} 
                  {
                    (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3931) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\tclean_fake_sendmail && rm -fr outdir &&\n'
                        span_id: 3932
                      ) (Token id:Id.Lit_Chars val:'\t\tgit config --replace-all sendemail.aliasesfile \\\n' span_id:3933) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\t"$(pwd)/.tmp-email-aliases" &&\n'
                        span_id: 3934
                      ) (Token id:Id.Lit_Chars val:'\t\tgit config sendemail.aliasfiletype "$filetype" &&\n' span_id:3935) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\tgit send-email --dump-aliases 2>errors >actual &&\n'
                        span_id: 3936
                      ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:3937) 
                      (Token id:Id.Lit_Chars val:'\t' span_id:3938)
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.Simple
      words: [
        {(test_dump_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'--dump-aliases sendmail format' span_id:3947))}
        {(SQ (Token id:Id.Lit_Chars val:sendmail span_id:3953))}
        {(SQ (Token id:Id.Lit_Chars val:abgroup span_id:3959))}
        {(SQ (Token id:Id.Lit_Chars val:alice span_id:3965))}
        {(SQ (Token id:Id.Lit_Chars val:bcgrp span_id:3971))}
        {(SQ (Token id:Id.Lit_Chars val:bob span_id:3977))}
        {(SQ (Token id:Id.Lit_Chars val:chloe span_id:3983))}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:3986)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:3987)) 
              (OF)
            }
          here_end_span_id: 3995
          stdin_parts: [
            ('alice: Alice W Land <awol@example.com>\n')
            ('bob: Robert Bobbyton <bob@example.com>\n')
            ('chloe: chloe@example.com\n')
            ('abgroup: alice, bob\n')
            ('bcgrp: bob, chloe, Other <o@example.com>\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(test_dump_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'--dump-aliases mutt format' span_id:4000))}
        {(SQ (Token id:Id.Lit_Chars val:mutt span_id:4006))}
        {(SQ (Token id:Id.Lit_Chars val:alice span_id:4012))}
        {(SQ (Token id:Id.Lit_Chars val:bob span_id:4018))}
        {(SQ (Token id:Id.Lit_Chars val:chloe span_id:4024))}
        {(SQ (Token id:Id.Lit_Chars val:donald span_id:4030))}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:4033)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:4034)) 
              (OF)
            }
          here_end_span_id: 4041
          stdin_parts: [
            ('alias alice Alice W Land <awol@example.com>\n')
            ('alias donald Donald C Carlton <donc@example.com>\n')
            ('alias bob Robert Bobbyton <bob@example.com>\n')
            ('alias chloe chloe@example.com\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(test_dump_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'--dump-aliases mailrc format' span_id:4046))}
        {(SQ (Token id:Id.Lit_Chars val:mailrc span_id:4052))}
        {(SQ (Token id:Id.Lit_Chars val:alice span_id:4058))}
        {(SQ (Token id:Id.Lit_Chars val:bob span_id:4064))}
        {(SQ (Token id:Id.Lit_Chars val:chloe span_id:4070))}
        {(SQ (Token id:Id.Lit_Chars val:eve span_id:4076))}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:4079)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:4080)) 
              (OF)
            }
          here_end_span_id: 4087
          stdin_parts: [
            ('alias alice   Alice W Land <awol@example.com>\n')
            ('alias eve     Eve <eve@example.com>\n')
            ('alias bob     Robert Bobbyton <bob@example.com>\n')
            ('alias chloe   chloe@example.com\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(test_dump_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'--dump-aliases pine format' span_id:4092))}
        {(SQ (Token id:Id.Lit_Chars val:pine span_id:4098))}
        {(SQ (Token id:Id.Lit_Chars val:alice span_id:4104))}
        {(SQ (Token id:Id.Lit_Chars val:bob span_id:4110))}
        {(SQ (Token id:Id.Lit_Chars val:chloe span_id:4116))}
        {(SQ (Token id:Id.Lit_Chars val:eve span_id:4122))}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:4125)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:4126)) 
              (OF)
            }
          here_end_span_id: 4133
          stdin_parts: [
            ('alice\tAlice W Land\t<awol@example.com>\n')
            ('eve\tEve\t<eve@example.com>\n')
            ('bob\tRobert\tBobbyton <bob@example.com>\n')
            ('chloe\t\tchloe@example.com\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(test_dump_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'--dump-aliases gnus format' span_id:4138))}
        {(SQ (Token id:Id.Lit_Chars val:gnus span_id:4144))}
        {(SQ (Token id:Id.Lit_Chars val:alice span_id:4150))}
        {(SQ (Token id:Id.Lit_Chars val:bob span_id:4156))}
        {(SQ (Token id:Id.Lit_Chars val:chloe span_id:4162))}
        {(SQ (Token id:Id.Lit_Chars val:eve span_id:4168))}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:4171)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:4172)) 
              (OF)
            }
          here_end_span_id: 4179
          stdin_parts: [
            ('(define-mail-alias "alice" "awol@example.com")\n')
            ('(define-mail-alias "eve" "eve@example.com")\n')
            ('(define-mail-alias "bob" "bob@example.com")\n')
            ('(define-mail-alias "chloe" "chloe@example.com")\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--dump-aliases must be used alone' span_id:4184))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4188) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_must_fail git send-email --dump-aliases --to=janice@example.com -1 refs/heads/accounting\n'
            span_id: 4189
          )
        )
      }
    )
    (command.ShFunction
      name: test_sendmail_aliases
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:msg)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [4201]
                    )
                  ]
                )
                (C {(shift)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:expect)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_At '$@'))}
                      spids: [4213]
                    )
                  ]
                )
                (command.Simple
                  words: [{(cat)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:4223)
                      fd: -1
                      arg_word: {(.tmp-email-aliases)}
                    )
                  ]
                )
                (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
                  {(DQ ($ Id.VSub_DollarName '$msg'))} 
                  {
                    (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4239) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\tclean_fake_sendmail && rm -fr outdir &&\n'
                        span_id: 4240
                      ) (Token id:Id.Lit_Chars val:'\t\tgit format-patch -1 -o outdir &&\n' span_id:4241) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\tgit config --replace-all sendemail.aliasesfile \\\n'
                        span_id: 4242
                      ) (Token id:Id.Lit_Chars val:'\t\t\t"$(pwd)/.tmp-email-aliases" &&\n' span_id:4243) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\tgit config sendemail.aliasfiletype sendmail &&\n'
                        span_id: 4244
                      ) (Token id:Id.Lit_Chars val:'\t\tgit send-email \\\n' span_id:4245) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\t--from="Example <nobody@example.com>" \\\n'
                        span_id: 4246
                      ) (Token id:Id.Lit_Chars val:'\t\t\t--to=alice --to=bcgrp \\\n' span_id:4247) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n'
                        span_id: 4248
                      ) (Token id:Id.Lit_Chars val:'\t\t\toutdir/0001-*.patch \\\n' span_id:4249) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\t2>errors >out &&\n'
                        span_id: 4250
                      ) (Token id:Id.Lit_Chars val:'\t\tfor i in $expect\n' span_id:4251) 
                      (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:4252) (Token id:Id.Lit_Chars val:'\t\t\tgrep "^!$i!$" commandline1 || return 1\n' span_id:4253) 
                      (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:4254) (Token id:Id.Lit_Chars val:'\t' span_id:4255)
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.Simple
      words: [
        {(test_sendmail_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'sendemail.aliasfiletype=sendmail' span_id:4264))}
        {(SQ (Token id:Id.Lit_Chars val:'awol@example\\.com' span_id:4270))}
        {(SQ (Token id:Id.Lit_Chars val:'bob@example\\.com' span_id:4276))}
        {(SQ (Token id:Id.Lit_Chars val:'chloe@example\\.com' span_id:4282))}
        {(SQ (Token id:Id.Lit_Chars val:'o@example\\.com' span_id:4288))}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:4291)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:4292)) 
              (OF)
            }
          here_end_span_id: 4302
          stdin_parts: [
            ('alice: Alice W Land <awol@example.com>\n')
            ('bob: Robert Bobbyton <bob@example.com>\n')
            ('# this is a comment\n')
            ('   # this is also a comment\n')
            ('chloe: chloe@example.com\n')
            ('abgroup: alice, bob\n')
            ('bcgrp: bob, chloe, Other <o@example.com>\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(test_sendmail_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'sendmail aliases line folding' span_id:4307))}
        {(alice1)}
        {(bob1)}
        {(bob2)}
        {(chuck1)}
        {(chuck2)}
        {(darla1)}
        {(darla2)}
        {(darla3)}
        {(elton1)}
        {(elton2)}
        {(elton3)}
        {(fred1)}
        {(fred2)}
        {(greg1)}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:4352)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:4353)) 
              (OF)
            }
          here_end_span_id: 4371
          stdin_parts: [
            ('alice: alice1\n')
            ('bob: bob1,\\\n')
            ('bob2\n')
            ('chuck: chuck1,\n')
            ('    chuck2\n')
            ('darla: darla1,\\\n')
            ('darla2,\n')
            ('    darla3\n')
            ('elton: elton1,\n')
            ('    elton2,\\\n')
            ('elton3\n')
            ('fred: fred1,\\\n')
            ('    fred2\n')
            ('greg: greg1\n')
            ('bcgrp: bob, chuck, darla, elton, fred, greg\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [
        {(test_sendmail_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'sendmail aliases tolerate bogus line folding' span_id:4376))}
        {(alice1)}
        {(bob1)}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:4385)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:4386)) 
              (OF)
            }
          here_end_span_id: 4391
          stdin_parts: [('    alice: alice1\n') ('bcgrp: bob1\\\n')]
        )
      ]
    )
    (command.Simple
      words: [
        {(test_sendmail_aliases)}
        {(SQ (Token id:Id.Lit_Chars val:'sendmail aliases empty' span_id:4396))}
        {(alice)}
        {(bcgrp)}
      ]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:4403)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:4404)) 
              (OF)
            }
          here_end_span_id: 4407
        )
      ]
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'alias support in To header' span_id:4414))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4418) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:4419) (Token id:Id.Lit_Chars val:'\techo "alias sbd  someone@example.org" >.mailrc &&\n' span_id:4420) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.aliasesfile ".mailrc" &&\n'
            span_id: 4421
          ) (Token id:Id.Lit_Chars val:'\ttest_config sendemail.aliasfiletype mailrc &&\n' span_id:4422) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit format-patch --stdout -1 --to=sbd >aliased.patch &&\n'
            span_id: 4423
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:4424) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 4425
          ) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:4426) 
          (Token id:Id.Lit_Chars val:'\t\taliased.patch \\\n' span_id:4427) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:4428) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^!someone@example\\.org!$" commandline1\n'
            span_id: 4429
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'alias support in Cc header' span_id:4438))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4442) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:4443) (Token id:Id.Lit_Chars val:'\techo "alias sbd  someone@example.org" >.mailrc &&\n' span_id:4444) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.aliasesfile ".mailrc" &&\n'
            span_id: 4445
          ) (Token id:Id.Lit_Chars val:'\ttest_config sendemail.aliasfiletype mailrc &&\n' span_id:4446) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit format-patch --stdout -1 --cc=sbd >aliased.patch &&\n'
            span_id: 4447
          ) (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:4448) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--from="Example <nobody@example.com>" \\\n'
            span_id: 4449
          ) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:4450) 
          (Token id:Id.Lit_Chars val:'\t\taliased.patch \\\n' span_id:4451) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:4452) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^!someone@example\\.org!$" commandline1\n'
            span_id: 4453
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'tocmd works with aliases' span_id:4462))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4466) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:4467) (Token id:Id.Lit_Chars val:'\techo "alias sbd  someone@example.org" >.mailrc &&\n' span_id:4468) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.aliasesfile ".mailrc" &&\n'
            span_id: 4469
          ) (Token id:Id.Lit_Chars val:'\ttest_config sendemail.aliasfiletype mailrc &&\n' span_id:4470) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit format-patch --stdout -1 >tocmd.patch &&\n'
            span_id: 4471
          ) (Token id:Id.Lit_Chars val:'\techo tocmd--sbd >>tocmd.patch &&\n' span_id:4472) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:4473) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:4474) 
          (Token id:Id.Lit_Chars val:'\t\t--to-cmd=./tocmd-sed \\\n' span_id:4475) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:4476) 
          (Token id:Id.Lit_Chars val:'\t\ttocmd.patch \\\n' span_id:4477) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:4478) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^!someone@example\\.org!$" commandline1\n'
            span_id: 4479
          )
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'cccmd works with aliases' span_id:4488))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4492) 
          (Token id:Id.Lit_Chars val:'\tclean_fake_sendmail &&\n' span_id:4493) (Token id:Id.Lit_Chars val:'\techo "alias sbd  someone@example.org" >.mailrc &&\n' span_id:4494) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.aliasesfile ".mailrc" &&\n'
            span_id: 4495
          ) (Token id:Id.Lit_Chars val:'\ttest_config sendemail.aliasfiletype mailrc &&\n' span_id:4496) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit format-patch --stdout -1 >cccmd.patch &&\n'
            span_id: 4497
          ) (Token id:Id.Lit_Chars val:'\techo cccmd--sbd >>cccmd.patch &&\n' span_id:4498) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:4499) (Token id:Id.Lit_Chars val:'\t\t--from="Example <nobody@example.com>" \\\n' span_id:4500) 
          (Token id:Id.Lit_Chars val:'\t\t--cc-cmd=./cccmd-sed \\\n' span_id:4501) (Token id:Id.Lit_Chars val:'\t\t--smtp-server="$(pwd)/fake.sendmail" \\\n' span_id:4502) 
          (Token id:Id.Lit_Chars val:'\t\tcccmd.patch \\\n' span_id:4503) (Token id:Id.Lit_Chars val:'\t\t2>errors >out &&\n' span_id:4504) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^!someone@example\\.org!$" commandline1\n'
            span_id: 4505
          )
        )
      }
    )
    (command.ShFunction
      name: do_xmailer_test
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:expected)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [4517]
                    )
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:params)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$2')}
                      spids: [4520]
                    )
                  ]
                )
                (C {(git)} {(format-patch)} {(-1)})
                (command.Simple
                  words: [
                    {(git)}
                    {(send-email)}
                    {(--from) (Id.Lit_Equals '=') (DQ ('Example <nobody@example.com>'))}
                    {(--to) (Id.Lit_Equals '=') (someone) (Id.Lit_Splice '@example') (.com)}
                    {(--smtp-server) (Id.Lit_Equals '=') 
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4560)
                          command_list: (command.CommandList children:[(C {(pwd)})])
                        ) (/fake.sendmail)
                      )
                    }
                    {($ Id.VSub_DollarName '$params')}
                    {(0001-) (Id.Lit_Star '*') (.patch)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'2>' span_id:4578)
                      fd: 2
                      arg_word: {(errors)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:4581)
                      fd: -1
                      arg_word: {(out)}
                    )
                  ]
                )
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {(grep)} {(SQ (Token id:Id.Lit_Chars val:'^X-Mailer:' span_id:4592))} 
                              {(out)}
                            )
                            (C {(Id.Lit_Other ':')})
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4600)
                    )
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:4604)
                      fd: -1
                      arg_word: {(mailer)}
                    )
                  ]
                )
                (C {(test_line_count)} {(Id.Lit_Equals '=')} {($ Id.VSub_DollarName '$expected')} 
                  {(mailer)}
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--[no-]xmailer without any configuration' span_id:4626))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4630) 
          (Token id:Id.Lit_Chars val:'\tdo_xmailer_test 1 "--xmailer" &&\n' span_id:4631) (Token id:Id.Lit_Chars val:'\tdo_xmailer_test 0 "--no-xmailer"\n' span_id:4632)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--[no-]xmailer with sendemail.xmailer=true' span_id:4641))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4645) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.xmailer true &&\n'
            span_id: 4646
          ) (Token id:Id.Lit_Chars val:'\tdo_xmailer_test 1 "" &&\n' span_id:4647) 
          (Token
            id: Id.Lit_Chars
            val: '\tdo_xmailer_test 0 "--no-xmailer" &&\n'
            span_id: 4648
          ) (Token id:Id.Lit_Chars val:'\tdo_xmailer_test 1 "--xmailer"\n' span_id:4649)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'--[no-]xmailer with sendemail.xmailer=false' span_id:4658))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4662) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.xmailer false &&\n'
            span_id: 4663
          ) (Token id:Id.Lit_Chars val:'\tdo_xmailer_test 0 "" &&\n' span_id:4664) 
          (Token
            id: Id.Lit_Chars
            val: '\tdo_xmailer_test 0 "--no-xmailer" &&\n'
            span_id: 4665
          ) (Token id:Id.Lit_Chars val:'\tdo_xmailer_test 1 "--xmailer"\n' span_id:4666)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'setup expected-list' span_id:4675))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4679) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:4680) (Token id:Id.Lit_Chars val:'\t--dry-run \\\n' span_id:4681) 
          (Token
            id: Id.Lit_Chars
            val: '\t--from="Example <from@example.com>" \\\n'
            span_id: 4682
          ) (Token id:Id.Lit_Chars val:'\t--to="To 1 <to1@example.com>" \\\n' span_id:4683) 
          (Token id:Id.Lit_Chars val:'\t--to="to2@example.com" \\\n' span_id:4684) (Token id:Id.Lit_Chars val:'\t--to="to3@example.com" \\\n' span_id:4685) 
          (Token id:Id.Lit_Chars val:'\t--cc="Cc 1 <cc1@example.com>" \\\n' span_id:4686) (Token id:Id.Lit_Chars val:'\t--cc="Cc2 <cc2@example.com>" \\\n' span_id:4687) 
          (Token id:Id.Lit_Chars val:'\t--bcc="bcc1@example.com" \\\n' span_id:4688) (Token id:Id.Lit_Chars val:'\t--bcc="bcc2@example.com" \\\n' span_id:4689) 
          (Token
            id: Id.Lit_Chars
            val: '\t0001-add-master.patch | replace_variable_fields \\\n'
            span_id: 4690
          ) (Token id:Id.Lit_Chars val:'\t>expected-list\n' span_id:4691)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'use email list in --cc --to and --bcc' span_id:4700))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4704) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:4705) (Token id:Id.Lit_Chars val:'\t--dry-run \\\n' span_id:4706) 
          (Token
            id: Id.Lit_Chars
            val: '\t--from="Example <from@example.com>" \\\n'
            span_id: 4707
          ) (Token id:Id.Lit_Chars val:'\t--to="To 1 <to1@example.com>, to2@example.com" \\\n' span_id:4708) 
          (Token id:Id.Lit_Chars val:'\t--to="to3@example.com" \\\n' span_id:4709) 
          (Token
            id: Id.Lit_Chars
            val: '\t--cc="Cc 1 <cc1@example.com>, Cc2 <cc2@example.com>" \\\n'
            span_id: 4710
          ) (Token id:Id.Lit_Chars val:'\t--bcc="bcc1@example.com, bcc2@example.com" \\\n' span_id:4711) 
          (Token
            id: Id.Lit_Chars
            val: '\t0001-add-master.patch | replace_variable_fields \\\n'
            span_id: 4712
          ) (Token id:Id.Lit_Chars val:'\t>actual-list &&\n' span_id:4713) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected-list actual-list\n' span_id:4714)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'aliases work with email list' span_id:4723))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4727) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "alias to2 to2@example.com" >.mutt &&\n'
            span_id: 4728
          ) (Token id:Id.Lit_Chars val:'\techo "alias cc1 Cc 1 <cc1@example.com>" >>.mutt &&\n' span_id:4729) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.aliasesfile ".mutt" &&\n'
            span_id: 4730
          ) (Token id:Id.Lit_Chars val:'\ttest_config sendemail.aliasfiletype mutt &&\n' span_id:4731) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:4732) (Token id:Id.Lit_Chars val:'\t--dry-run \\\n' span_id:4733) 
          (Token
            id: Id.Lit_Chars
            val: '\t--from="Example <from@example.com>" \\\n'
            span_id: 4734
          ) (Token id:Id.Lit_Chars val:'\t--to="To 1 <to1@example.com>, to2, to3@example.com" \\\n' span_id:4735) 
          (Token
            id: Id.Lit_Chars
            val: '\t--cc="cc1, Cc2 <cc2@example.com>" \\\n'
            span_id: 4736
          ) (Token id:Id.Lit_Chars val:'\t--bcc="bcc1@example.com, bcc2@example.com" \\\n' span_id:4737) 
          (Token
            id: Id.Lit_Chars
            val: '\t0001-add-master.patch | replace_variable_fields \\\n'
            span_id: 4738
          ) (Token id:Id.Lit_Chars val:'\t>actual-list &&\n' span_id:4739) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected-list actual-list\n' span_id:4740)
        )
      }
    )
    (C {(test_expect_success)} {($ Id.VSub_DollarName '$PREREQ')} 
      {(SQ (Token id:Id.Lit_Chars val:'leading and trailing whitespaces are removed' span_id:4749))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:4753) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "alias to2 to2@example.com" >.mutt &&\n'
            span_id: 4754
          ) (Token id:Id.Lit_Chars val:'\techo "alias cc1 Cc 1 <cc1@example.com>" >>.mutt &&\n' span_id:4755) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config sendemail.aliasesfile ".mutt" &&\n'
            span_id: 4756
          ) (Token id:Id.Lit_Chars val:'\ttest_config sendemail.aliasfiletype mutt &&\n' span_id:4757) 
          (Token
            id: Id.Lit_Chars
            val: '\tTO1=$(echo "QTo 1 <to1@example.com>" | q_to_tab) &&\n'
            span_id: 4758
          ) (Token id:Id.Lit_Chars val:'\tTO2=$(echo "QZto2" | qz_to_tab_space) &&\n' span_id:4759) 
          (Token id:Id.Lit_Chars val:'\tCC1=$(echo "cc1" | append_cr) &&\n' span_id:4760) (Token id:Id.Lit_Chars val:'\tBCC1=$(echo "Q bcc1@example.com Q" | q_to_nul) &&\n' span_id:4761) 
          (Token id:Id.Lit_Chars val:'\tgit send-email \\\n' span_id:4762) (Token id:Id.Lit_Chars val:'\t--dry-run \\\n' span_id:4763) 
          (Token
            id: Id.Lit_Chars
            val: '\t--from="\tExample <from@example.com>" \\\n'
            span_id: 4764
          ) (Token id:Id.Lit_Chars val:'\t--to="$TO1" \\\n' span_id:4765) 
          (Token id:Id.Lit_Chars val:'\t--to="$TO2" \\\n' span_id:4766) (Token id:Id.Lit_Chars val:'\t--to="  to3@example.com   " \\\n' span_id:4767) 
          (Token id:Id.Lit_Chars val:'\t--cc="$CC1" \\\n' span_id:4768) (Token id:Id.Lit_Chars val:'\t--cc="Cc2 <cc2@example.com>" \\\n' span_id:4769) 
          (Token id:Id.Lit_Chars val:'\t--bcc="$BCC1" \\\n' span_id:4770) (Token id:Id.Lit_Chars val:'\t--bcc="bcc2@example.com" \\\n' span_id:4771) 
          (Token
            id: Id.Lit_Chars
            val: '\t0001-add-master.patch | replace_variable_fields \\\n'
            span_id: 4772
          ) (Token id:Id.Lit_Chars val:'\t>actual-list &&\n' span_id:4773) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected-list actual-list\n' span_id:4774)
        )
      }
    )
    (C {(test_done)})
  ]
)