(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]}) (= scope= flags=0 words=[] bindings=[('PREREQ', {[DQ [LIT_CHARS PERL]]})]) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ file &&\n"> >file &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ commandline$output\n"> \"msgtxt$output\"\n"> ]}) (FunctionDef clean_fake_sendmail [] (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS commandline] [LIT_OTHER "*"]} {[LIT_CHARS msgtxt] [LIT_OTHER "*"]}) ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" --cc=two@example.com -n HEAD^1)\n">]}) (FunctionDef test_no_confirm [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS no_confirm_okay]}) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS echo]} {[LIT_CHARS n]}) (Com {[LIT_CHARS git]} {[LIT_CHARS send-email]} {[LIT_CHARS --from] [LIT_OTHER "="] [DQ [LIT_CHARS "Example "]]} {[LIT_CHARS --to] [LIT_OTHER "="] [LIT_CHARS nobody] [LIT_OTHER "@"] [LIT_CHARS example.com]} {[LIT_CHARS --smtp-server] [LIT_OTHER "="] [DQ [ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS /fake.sendmail]]} {[VarSub @]} {[VarSub patches]} < (FilenameRedirectNode filename={[LIT_CHARS stdout]} "> 1), > more_env=[('GIT_SEND_EMAIL_NOTTY', {[LIT_CHARS 1]})] ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_must_fail]} {[LIT_CHARS grep]} {[DQ [LIT_CHARS "Send this email"]]} {[LIT_CHARS stdout]}) (Com < (FilenameRedirectNode filename={[LIT_CHARS no_confirm_okay]} "> 1), > ) ) ) ) ) (FunctionDef check_no_confirm [] (List (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[LIT_CHARS no_confirm_okay]}) ) (List (Com {[LIT_CHARS say]} {[SQ ]}) (= scope= flags=0 words=[] bindings=[('PREREQ', {[DQ [VarSub PREREQ][LIT_CHARS ",CHECK_NO_CONFIRM"]]})]) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" --to=nobody@example.com --smtp-server=\"$(pwd)/fake.sendmail\" $patches 2>errors\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" --suppress-cc=sob --from=\"Example \" --to=nobody@example.com --smtp-server=\"$(pwd)/fake.sendmail\" $patches 2>errors\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" --to=nobody@example.com --smtp-server=\"$(pwd)/fake.sendmail\" $patches 2>errors\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-cc <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "!recipient@example.com!\n"][LIT_CHARS "!author@example.com!\n"][LIT_CHARS "!one@example.com!\n"][LIT_CHARS "!two@example.com!\n"][LIT_CHARS "!three@example.com!\n"][LIT_CHARS "!four@example.com!\n"][LIT_CHARS "!five@example.com!\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ # this is part of the name\n"> , # not.five@example.com\n"> [part.of.name.too]\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-show-all-headers <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(mbox) Adding cc: One from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(mbox) Adding cc: two@example.com from line 'Cc: One , two@example.com'\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: cc@example.com,\n"][LIT_CHARS "\tA ,\n"][LIT_CHARS "\tOne ,\n"][LIT_CHARS "\ttwo@example.com\n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "In-Reply-To: \n"][LIT_CHARS "References: \n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (FunctionDef test_suppress_self [] (AndOr OP_AND_IF (Com {[LIT_CHARS test_commit]} {[VarSub 3]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test_when_finished]} {[DQ [LIT_CHARS "git reset --hard HEAD^"]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS write_script]} {[LIT_CHARS cccmd-sed]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sed -n -e s/^cccmd--//p "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS 1][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --amend]} {[LIT_CHARS --author] [LIT_OTHER "="] [DQ [VarSub 1][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">"]]} {[LIT_CHARS -F]} {[LIT_CHARS -]}) (AndOr OP_AND_IF (Com {[LIT_CHARS clean_fake_sendmail]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS format-patch]} {[LIT_CHARS --stdout]} {[LIT_CHARS -1]} < (FilenameRedirectNode filename={[DQ [LIT_CHARS suppress-self-][VarSub 3][LIT_CHARS .patch]]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS send-email]} {[LIT_CHARS --from] [LIT_OTHER "="] [DQ [VarSub 1][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">"]]} {[LIT_CHARS --to] [LIT_OTHER "="] [LIT_CHARS nobody] [LIT_OTHER "@"] [LIT_CHARS example.com]} {[LIT_CHARS --cc-cmd] [LIT_OTHER "="] [LIT_CHARS ./cccmd-sed]} {[LIT_CHARS --suppress-cc] [LIT_OTHER "="] [LIT_CHARS self]} {[LIT_CHARS --smtp-server] [LIT_OTHER "="] [DQ [ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS /fake.sendmail]]} {[LIT_CHARS suppress-self-] [VarSub 3] [LIT_CHARS .patch]}) (AndOr OP_AND_IF (Com {[LIT_CHARS mv]} {[LIT_CHARS msgtxt1]} {[LIT_CHARS msgtxt1-] [VarSub 3]}) (AndOr OP_AND_IF (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS msgtxt1-] [VarSub 3]} < (FilenameRedirectNode filename={[DQ [LIT_CHARS msghdr1-][VarSub 3]]} "> 1), > ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[DQ [LIT_CHARS expected-no-cc-][VarSub 3]]} "> 1), > ) (Subshell (List (Com {[LIT_CHARS grep]} {[SQ ]} {[LIT_CHARS msghdr1-] [VarSub 3]} < (FilenameRedirectNode filename={[DQ [LIT_CHARS actual-no-cc-][VarSub 3]]} "> 1), > ) (Com {[LIT_CHARS test_cmp]} {[LIT_CHARS expected-no-cc-] [VarSub 3]} {[LIT_CHARS actual-no-cc-] [VarSub 3]}) ) ) ) ) ) ) ) ) ) ) ) ) ) (FunctionDef test_suppress_self_unquoted [] (Com {[LIT_CHARS test_suppress_self]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]} {[DQ [LIT_CHARS unquoted-][VarSub 3]]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "test suppress-cc.self unquoted-"][VarSub 3][LIT_CHARS " with name "][VarSub 1][LIT_CHARS " email "][VarSub 2][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS unquoted-][VarSub 3][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS cccmd--][VarSub 1][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">\n"][LIT_CHARS "\n"][LIT_CHARS "Cc: "][VarSub 1][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">\n"][LIT_CHARS "Signed-off-by: "][VarSub 1][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">\n"]]} 0), > ) ) (FunctionDef test_suppress_self_quoted [] (Com {[LIT_CHARS test_suppress_self]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]} {[DQ [LIT_CHARS quoted-][VarSub 3]]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "test suppress-cc.self quoted-"][VarSub 3][LIT_CHARS " with name "][VarSub 1][LIT_CHARS " email "][VarSub 2][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS quoted-][VarSub 3][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS cccmd--][RIGHT_D_QUOTE "\""][VarSub 1][RIGHT_D_QUOTE "\""][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">\n"][LIT_CHARS "\n"][LIT_CHARS "Cc: "][VarSub 1][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">\n"][LIT_CHARS "Cc: "][RIGHT_D_QUOTE "\""][VarSub 1][RIGHT_D_QUOTE "\""][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">\n"][LIT_CHARS "Signed-off-by: "][VarSub 1][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">\n"][LIT_CHARS "Signed-off-by: "][RIGHT_D_QUOTE "\""][VarSub 1][RIGHT_D_QUOTE "\""][LIT_CHARS " <"][VarSub 2][LIT_CHARS ">\n"]]} 0), > ) ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\ttest_suppress_self_unquoted 'A U Thor' 'author@example.com' "][LIT_CHARS "\t\t'self_name_suppressed'\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\ttest_suppress_self_quoted 'A U. Thor' 'author@example.com' "][LIT_CHARS "\t\t'self_name_dot_suppressed'\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\ttest_suppress_self_quoted 'F\u00fc\u00f1n\u00fd N\u00e2m\u00e9' 'odd_?=mail@example.com' "][LIT_CHARS "\t\t'non_ascii_self_suppressed'\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\ttest_suppress_self_quoted '\u0191\u00fc\u00f1n\u00ed\u0119\u0159 \u20ac. N\u00e2\u1e41\u00e9' 'odd_?=mail@example.com' "][LIT_CHARS "\t\t'long_non_ascii_self_suppressed'\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\ttest_suppress_self_unquoted '"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "A U. Thor"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "' 'author@example.com' "][LIT_CHARS "\t\t'self_name_sanitized_suppressed'\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> \" \\\n"> actual-show-all-headers &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors &&\n"> \\$\" msgtxt1 &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ] [LIT_COMMA ","] [LIT_CHARS AUTOIDENT]} {[SQ ]} {[SQ errors\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ] [LIT_COMMA ","] [LIT_OTHER "!"] [LIT_CHARS AUTOIDENT]} {[SQ ]} {[SQ errors &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ >tocmd.patch &&\n"> \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ >cccmd.patch &&\n"> \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ >longline.patch &&\n"> \" \\\n"> errors &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> msgbody1 &&\n"> \" msgbody1\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> msgbody1 &&\n"> \" msgbody1\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> errors\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> errors &&\n"> \" msgtxt1\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \"\n"> \"\n"> errors &&\n"> \" msgtxt1\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" >expect &&\n"> \" \\\n"> errors &&\n"> actual &&\n"> expect &&\n"> actual &&\n"> actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" >expect &&\n"> \" \\\n"> errors &&\n"> actual &&\n"> expect &&\n"> actual &&\n"> expect &&\n"> actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ >\"$1\"\n"> ]}) (Com {[LIT_CHARS test_set_editor]} {[DQ [ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS /fake-editor]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> errors\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-suppress-sob <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(mbox) Adding cc: One from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(mbox) Adding cc: two@example.com from line 'Cc: One , two@example.com'\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: cc@example.com,\n"][LIT_CHARS "\tA ,\n"][LIT_CHARS "\tOne ,\n"][LIT_CHARS "\ttwo@example.com\n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (FunctionDef replace_variable_fields [] (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "s/^"][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS "Date:"][\ LIT_ESCAPED_CHAR "\\)"][LIT_CHARS ".*/"][\ LIT_ESCAPED_CHAR "\\1"][LIT_CHARS " DATE-STRING/"]]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "s/^"][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS "Message-Id:"][\ LIT_ESCAPED_CHAR "\\)"][LIT_CHARS ".*/"][\ LIT_ESCAPED_CHAR "\\1"][LIT_CHARS " MESSAGE-ID-STRING/"]]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "s/^"][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS "X-Mailer:"][\ LIT_ESCAPED_CHAR "\\)"][LIT_CHARS ".*/"][\ LIT_ESCAPED_CHAR "\\1"][LIT_CHARS " X-MAILER-STRING/"]]}) ) (FunctionDef test_suppression [] (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS send-email]} {[LIT_CHARS --dry-run]} {[LIT_CHARS --suppress-cc] [LIT_OTHER "="] [VarSub 1]} {[VarSub 2 test_op=VS_TEST_PLUS {[DQ [LIT_CHARS "--suppress-cc="][VarSub 2]]}]} {[LIT_CHARS --from] [LIT_OTHER "="] [DQ [LIT_CHARS "Example "]]} {[LIT_CHARS --to] [LIT_OTHER "="] [LIT_CHARS to] [LIT_OTHER "@"] [LIT_CHARS example.com]} {[LIT_CHARS --smtp-server]} {[LIT_CHARS relay.example.com]} {[VarSub patches]}) (Com {[LIT_CHARS replace_variable_fields]} < (FilenameRedirectNode filename={[LIT_CHARS actual-suppress-] [VarSub 1] [VarSub 2 test_op=VS_TEST_PLUS {[DQ [LIT_CHARS -][VarSub 2]]}]} "> 1), > ) ) (Com {[LIT_CHARS test_cmp]} {[LIT_CHARS expected-suppress-] [VarSub 1] [VarSub 2 test_op=VS_TEST_PLUS {[DQ [LIT_CHARS -][VarSub 2]]}]} {[LIT_CHARS actual-suppress-] [VarSub 1] [VarSub 2 test_op=VS_TEST_PLUS {[DQ [LIT_CHARS -][VarSub 2]]}]}) ) ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-suppress-sob <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(mbox) Adding cc: One from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(mbox) Adding cc: two@example.com from line 'Cc: One , two@example.com'\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: A ,\n"][LIT_CHARS "\tOne ,\n"][LIT_CHARS "\ttwo@example.com\n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-suppress-cccmd <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(mbox) Adding cc: One from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(mbox) Adding cc: two@example.com from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(body) Adding cc: C O Mitter from line 'Signed-off-by: C O Mitter '\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: A ,\n"][LIT_CHARS "\tOne ,\n"][LIT_CHARS "\ttwo@example.com,\n"][LIT_CHARS "\tC O Mitter \n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected-suppress-all <<\\EOF\n"> \n"> \n"> \n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-suppress-body <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(mbox) Adding cc: One from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(mbox) Adding cc: two@example.com from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(cc-cmd) Adding cc: cc-cmd@example.com from: './cccmd'\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: A ,\n"][LIT_CHARS "\tOne ,\n"][LIT_CHARS "\ttwo@example.com,\n"][LIT_CHARS "\tcc-cmd@example.com\n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-suppress-body-cccmd <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(mbox) Adding cc: One from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(mbox) Adding cc: two@example.com from line 'Cc: One , two@example.com'\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: A ,\n"][LIT_CHARS "\tOne ,\n"][LIT_CHARS "\ttwo@example.com\n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-suppress-sob <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(mbox) Adding cc: One from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(mbox) Adding cc: two@example.com from line 'Cc: One , two@example.com'\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: A ,\n"][LIT_CHARS "\tOne ,\n"][LIT_CHARS "\ttwo@example.com\n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-suppress-bodycc <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(mbox) Adding cc: One from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(mbox) Adding cc: two@example.com from line 'Cc: One , two@example.com'\n"][LIT_CHARS "(body) Adding cc: C O Mitter from line 'Signed-off-by: C O Mitter '\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: A ,\n"][LIT_CHARS "\tOne ,\n"][LIT_CHARS "\ttwo@example.com,\n"][LIT_CHARS "\tC O Mitter \n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "cat >expected-suppress-cc <<"][\ LIT_ESCAPED_CHAR "\\E"][LIT_CHARS "OF\n"][LIT_CHARS "0001-Second.patch\n"][LIT_CHARS "(mbox) Adding cc: A from line 'From: A '\n"][LIT_CHARS "(body) Adding cc: C O Mitter from line 'Signed-off-by: C O Mitter '\n"][LIT_CHARS "Dry-OK. Log says:\n"][LIT_CHARS "Server: relay.example.com\n"][LIT_CHARS "MAIL FROM:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "RCPT TO:\n"][LIT_CHARS "From: Example \n"][LIT_CHARS "To: to@example.com\n"][LIT_CHARS "Cc: A ,\n"][LIT_CHARS "\tC O Mitter \n"][LIT_CHARS "Subject: [PATCH 1/1] Second.\n"][LIT_CHARS "Date: DATE-STRING\n"][LIT_CHARS "Message-Id: MESSAGE-ID-STRING\n"][LIT_CHARS "X-Mailer: X-MAILER-STRING\n"][LIT_CHARS "\n"][LIT_CHARS "Result: OK\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (FunctionDef test_confirm [] (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS echo]} {[LIT_CHARS y]}) (Com {[LIT_CHARS git]} {[LIT_CHARS send-email]} {[LIT_CHARS --from] [LIT_OTHER "="] [DQ [LIT_CHARS "Example "]]} {[LIT_CHARS --to] [LIT_OTHER "="] [LIT_CHARS nobody] [LIT_OTHER "@"] [LIT_CHARS example.com]} {[LIT_CHARS --smtp-server] [LIT_OTHER "="] [DQ [ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS /fake.sendmail]]} {[VarSub @]} {[VarSub patches]} < (FilenameRedirectNode filename={[LIT_CHARS stdout]} "> 1), > more_env=[('GIT_SEND_EMAIL_NOTTY', {[LIT_CHARS 1]})] ) ) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "Send this email"]]} {[LIT_CHARS stdout]}) ) ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" &&\n"> \" \\\n"> \"\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ >\"$1\"\n"> \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \"$1\" <<-\\EOM\n"> \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" &&\n"> funny_name.patch &&\n"> \" \\\n"> \" msgtxt1\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" &&\n"> funny_name.patch &&\n"> \" \\\n"> msgfrom &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ >\"$1\"\n"> \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ >\"$1\"\n"> \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ >\"$1\"\n"> \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ master &&\n"> errors &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> errors >out &&\n"> subjects &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> \" \\\n"> \"\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> stdout &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> stdout &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" &&\n"> \" \\\n"> stdout &&\n"> \" stdout\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> stdout &&\n"> \" stdout\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" &&\n"> \" \\\n"> stdout &&\n"> \" stdout\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> stdout &&\n"> \" stdout\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" &&\n"> \" \\\n"> stdout &&\n"> \" stdout\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> stdout &&\n"> \" stdout &&\n"> \" stdout\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> stdout &&\n"> \" stdout\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> stdout &&\n"> \" stdout &&\n"> \" stdout\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> stdout &&\n"> \" stdout) = 1 &&\n"> \" stdout) = 2 &&\n"> \" stdout) = 1\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ email-using-8bit <<\\EOF\n"> \n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ stdout &&\n"> actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ content-type-decl <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ stdout &&\n"> actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ stdout &&\n"> actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ stdout &&\n"> actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ email-using-8bit <<-\\EOF\n"> \n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ stdout &&\n"> actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ email-using-8bit <<-\\EOF\n"> \n"> \n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors >out &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors >out &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors >out &&\n"> ] [LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS /] [LIT_OTHER "^"] [LIT_OTHER "$"] [LIT_CHARS /d] [SQ actual &&\n"> ] [LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS /] [LIT_OTHER "^"] [LIT_OTHER "$"] [LIT_CHARS /d] [SQ expected &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors >out &&\n"> ] [LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS /] [LIT_OTHER "^"] [LIT_OTHER "$"] [LIT_CHARS /d] [SQ actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors >out &&\n"> ] [LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS /] [LIT_OTHER "^"] [LIT_OTHER "$"] [LIT_CHARS /d] [SQ actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ email-using-qp <<-\\EOF\n"> \n"> \n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors >out &&\n"> ] [LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS /] [LIT_OTHER "^"] [LIT_OTHER "$"] [LIT_CHARS /d] [SQ actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "tr -d '"][\ LIT_ESCAPED_CHAR "\\\\"][LIT_CHARS "015' | tr '%' '"][\ LIT_ESCAPED_CHAR "\\\\"][LIT_CHARS "015' >email-using-crlf <\n"][LIT_CHARS "From: A U Thor \n"][LIT_CHARS "Date: Sat, 12 Jun 2010 15:53:58 +0200\n"][LIT_CHARS "Content-Type: text/plain; charset=UTF-8\n"][LIT_CHARS "Subject: Nothing to see here.\n"][LIT_CHARS "\n"][LIT_CHARS "Look, I have a CRLF and an = sign!%\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors >out &&\n"> ] [LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS /] [LIT_OTHER "^"] [LIT_OTHER "$"] [LIT_CHARS /d] [SQ actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ expected <<-\\EOF\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ errors >out &&\n"> ] [LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS /] [LIT_OTHER "^"] [LIT_OTHER "$"] [LIT_CHARS /d] [SQ actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> errors >out &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> errors >out &&\n"> ]}) (FunctionDef test_cover_addresses [] (List (= scope= flags=0 words=[] bindings=[('header', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (AndOr OP_AND_IF (Com {[LIT_CHARS clean_fake_sendmail]}) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[LIT_CHARS outdir]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS format-patch]} {[LIT_CHARS --cover-letter]} {[LIT_CHARS -2]} {[LIT_CHARS -o]} {[LIT_CHARS outdir]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('cover', {[ComSub (Com {[LIT_CHARS echo]} {[LIT_CHARS outdir/0000-] [LIT_OTHER "*"] [LIT_CHARS .patch]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS mv]} {[VarSub cover]} {[LIT_CHARS cover-to-edit.patch]}) (AndOr OP_AND_IF (Com {[LIT_CHARS perl]} {[LIT_CHARS -pe]} {[DQ [LIT_CHARS "s/^From:/"][VarSub header][LIT_CHARS ": extra"][\ LIT_ESCAPED_CHAR "\\@"][LIT_CHARS address.com][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS "From:/"]]} {[LIT_CHARS cover-to-edit.patch]} < (FilenameRedirectNode filename={[DQ [VarSub cover]]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS send-email]} {[LIT_CHARS --force]} {[LIT_CHARS --from] [LIT_OTHER "="] [DQ [LIT_CHARS "Example "]]} {[LIT_CHARS --no-to]} {[LIT_CHARS --no-cc]} {[DQ [VarSub @]]} {[LIT_CHARS --smtp-server] [LIT_OTHER "="] [DQ [ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS /fake.sendmail]]} {[LIT_CHARS outdir/0000-] [LIT_OTHER "*"] [LIT_CHARS .patch]} {[LIT_CHARS outdir/0001-] [LIT_OTHER "*"] [LIT_CHARS .patch]} {[LIT_CHARS outdir/0002-] [LIT_OTHER "*"] [LIT_CHARS .patch]} < (FilenameRedirectNode filename={[LIT_CHARS errors]} "> 2), (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^"][VarSub header][LIT_CHARS ": extra@address.com"]]} {[LIT_CHARS msgtxt1]} < (FilenameRedirectNode filename={[LIT_CHARS to1]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^"][VarSub header][LIT_CHARS ": extra@address.com"]]} {[LIT_CHARS msgtxt2]} < (FilenameRedirectNode filename={[LIT_CHARS to2]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^"][VarSub header][LIT_CHARS ": extra@address.com"]]} {[LIT_CHARS msgtxt3]} < (FilenameRedirectNode filename={[LIT_CHARS to3]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_line_count]} {[LIT_OTHER "="]} {[LIT_CHARS 1]} {[LIT_CHARS to1]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test_line_count]} {[LIT_OTHER "="]} {[LIT_CHARS 1]} {[LIT_CHARS to2]}) (Com {[LIT_CHARS test_line_count]} {[LIT_OTHER "="]} {[LIT_CHARS 1]} {[LIT_CHARS to3]}) ) ) ) ) ) ) ) ) ) ) ) ) ) ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" >.mutt &&\n"> \" \\\n"> errors >out &&\n"> \" out\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ .mailrc &&\n"> \" \\\n"> errors >out &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \"$HOME/.mailrc\" &&\n"> \" \\\n"> errors >out &&\n"> ]}) (FunctionDef test_dump_aliases [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub 1]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS shift]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('filetype', {[DQ [VarSub 1]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS shift]}) (AndOr OP_AND_IF (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS .tmp-email-aliases]} "> 1), > ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[DQ [VarSub msg]]} {[SQ errors >actual &&\n"> ]}) ) ) ) ) ) ) ) (Com {[LIT_CHARS test_dump_aliases]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "alice: Alice W Land \n"] [LIT_CHARS "bob: Robert Bobbyton \n"] [LIT_CHARS "chloe: chloe@example.com\n"] [LIT_CHARS "abgroup: alice, bob\n"] [LIT_CHARS "bcgrp: bob, chloe, Other \n"]} 0), > ) (Com {[LIT_CHARS test_dump_aliases]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "alias alice Alice W Land \n"] [LIT_CHARS "alias donald Donald C Carlton \n"] [LIT_CHARS "alias bob Robert Bobbyton \n"] [LIT_CHARS "alias chloe chloe@example.com\n"]} 0), > ) (Com {[LIT_CHARS test_dump_aliases]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "alias alice Alice W Land \n"] [LIT_CHARS "alias eve Eve \n"] [LIT_CHARS "alias bob Robert Bobbyton \n"] [LIT_CHARS "alias chloe chloe@example.com\n"]} 0), > ) (Com {[LIT_CHARS test_dump_aliases]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "alice\tAlice W Land\t\n"] [LIT_CHARS "eve\tEve\t\n"] [LIT_CHARS "bob\tRobert\tBobbyton \n"] [LIT_CHARS "chloe\t\tchloe@example.com\n"]} 0), > ) (Com {[LIT_CHARS test_dump_aliases]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "(define-mail-alias \"alice\" \"awol@example.com\")\n"] [LIT_CHARS "(define-mail-alias \"eve\" \"eve@example.com\")\n"] [LIT_CHARS "(define-mail-alias \"bob\" \"bob@example.com\")\n"] [LIT_CHARS "(define-mail-alias \"chloe\" \"chloe@example.com\")\n"]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (FunctionDef test_sendmail_aliases [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub 1]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS shift]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('expect', {[DQ [VarSub @]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS .tmp-email-aliases]} "> 1), > ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[DQ [VarSub msg]]} {[SQ \" \\\n"> errors >out &&\n"> ]}) ) ) ) ) ) (Com {[LIT_CHARS test_sendmail_aliases]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "alice: Alice W Land \n"] [LIT_CHARS "bob: Robert Bobbyton \n"] [LIT_CHARS "# this is a comment\n"] [LIT_CHARS " # this is also a comment\n"] [LIT_CHARS "chloe: chloe@example.com\n"] [LIT_CHARS "abgroup: alice, bob\n"] [LIT_CHARS "bcgrp: bob, chloe, Other \n"]} 0), > ) (Com {[LIT_CHARS test_sendmail_aliases]} {[SQ ]} {[LIT_CHARS alice1]} {[LIT_CHARS bob1]} {[LIT_CHARS bob2]} {[LIT_CHARS chuck1]} {[LIT_CHARS chuck2]} {[LIT_CHARS darla1]} {[LIT_CHARS darla2]} {[LIT_CHARS darla3]} {[LIT_CHARS elton1]} {[LIT_CHARS elton2]} {[LIT_CHARS elton3]} {[LIT_CHARS fred1]} {[LIT_CHARS fred2]} {[LIT_CHARS greg1]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "alice: alice1\n"] [LIT_CHARS "bob: bob1,\\\n"] [LIT_CHARS "bob2\n"] [LIT_CHARS "chuck: chuck1,\n"] [LIT_CHARS " chuck2\n"] [LIT_CHARS "darla: darla1,\\\n"] [LIT_CHARS "darla2,\n"] [LIT_CHARS " darla3\n"] [LIT_CHARS "elton: elton1,\n"] [LIT_CHARS " elton2,\\\n"] [LIT_CHARS "elton3\n"] [LIT_CHARS "fred: fred1,\\\n"] [LIT_CHARS " fred2\n"] [LIT_CHARS "greg: greg1\n"] [LIT_CHARS "bcgrp: bob, chuck, darla, elton, fred, greg\n"]} 0), > ) (Com {[LIT_CHARS test_sendmail_aliases]} {[SQ ]} {[LIT_CHARS alice1]} {[LIT_CHARS bob1]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS " alice: alice1\n"] [LIT_CHARS "bcgrp: bob1\\\n"]} 0), > ) (Com {[LIT_CHARS test_sendmail_aliases]} {[SQ ]} {[LIT_CHARS alice]} {[LIT_CHARS bcgrp]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ .mailrc &&\n"> aliased.patch &&\n"> \" \\\n"> errors >out &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ .mailrc &&\n"> aliased.patch &&\n"> \" \\\n"> errors >out &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ .mailrc &&\n"> tocmd.patch &&\n"> >tocmd.patch &&\n"> \" \\\n"> errors >out &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ .mailrc &&\n"> cccmd.patch &&\n"> >cccmd.patch &&\n"> \" \\\n"> errors >out &&\n"> ]}) (FunctionDef do_xmailer_test [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('expected', {[VarSub 1]}), ('params', {[VarSub 2]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS format-patch]} {[LIT_CHARS -1]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS send-email]} {[LIT_CHARS --from] [LIT_OTHER "="] [DQ [LIT_CHARS "Example "]]} {[LIT_CHARS --to] [LIT_OTHER "="] [LIT_CHARS someone] [LIT_OTHER "@"] [LIT_CHARS example.com]} {[LIT_CHARS --smtp-server] [LIT_OTHER "="] [DQ [ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS /fake.sendmail]]} {[VarSub params]} {[LIT_CHARS 0001-] [LIT_OTHER "*"] [LIT_CHARS .patch]} < (FilenameRedirectNode filename={[LIT_CHARS errors]} "> 2), (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (AndOr OP_AND_IF (AndOr OP_OR_IF (Com {[LIT_CHARS grep]} {[SQ ]} {[LIT_CHARS out]}) (Com {[LIT_OTHER ":"]}) ) (Com {[LIT_CHARS test_line_count]} {[LIT_OTHER "="]} {[VarSub expected]} {[LIT_CHARS mailer]}) ) ) ) ) ) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> \" \\\n"> \" \\\n"> \" \\\n"> expected-list\n">]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ \" \\\n"> , to2@example.com\" \\\n"> , Cc2 \" \\\n"> actual-list &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ .mutt &&\n"> \" >>.mutt &&\n"> \" \\\n"> , to2, to3@example.com\" \\\n"> \" \\\n"> actual-list &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[VarSub PREREQ]} {[SQ ]} {[SQ .mutt &&\n"> \" >>.mutt &&\n"> \" | q_to_tab) &&\n"> \" \\\n"> \" \\\n"> actual-list &&\n"> ]}) (Com {[LIT_CHARS test_done]}) )