# [PATCH 0/2] test send-email --compose

3 messages from 2008-02-24 to 2008-02-24. Participants: Jeff King.
Thread: https://gitlist.dev/t/12299

## Jeff King, 2008-02-24 20:57

Subject: [PATCH 0/2] test send-email --compose
Message-ID: <20080224205720.GA7085@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20080224205720.GA7085%40coredump.intra.peff.net

```
This is a respun version of some tests from the freeze period. The bug
they test for was fixed, but these weren't accepted because there was a
modification to git-send-email.perl (a --no-confirm-send option) that we
didn't want during the freeze.

Not only are we now out of freeze, but we recently added a
GIT_SEND_EMAIL_NOTTY flag which accomplishes a similar goal for testing.
This version is updated to use that flag and drops the --no-confirm-send
option entirely.

-Peff

```

## Jeff King, 2008-02-24 21:03

Subject: [PATCH] t9001: enhance fake sendmail test harness
Message-ID: <20080224210352.GA9150@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20080224210352.GA9150%40coredump.intra.peff.net
In-Reply-To: <20080224205720.GA7085@coredump.intra.peff.net>

```
Previously, the fake.sendmail test harness would write its
output to a hardcoded file, allowing only a single message
to be tested. Instead, let's have it save the messages for
all of its invocations so that we can see which messages
were sent, and in which order.

Signed-off-by: Jeff King <peff@peff.net>
---
 t/t9001-send-email.sh |   22 +++++++++++++++-------
 1 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 2efaed4..4975048 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -15,16 +15,22 @@ test_expect_success \
     'Setup helper tool' \
     '(echo "#!/bin/sh"
       echo shift
+      echo output=1
+      echo "while test -f commandline\$output; do output=\$((\$output+1)); done"
       echo for a
       echo do
       echo "  echo \"!\$a!\""
-      echo "done >commandline"
-      echo "cat > msgtxt"
+      echo "done >commandline\$output"
+      echo "cat > msgtxt\$output"
       ) >fake.sendmail &&
      chmod +x ./fake.sendmail &&
      git add fake.sendmail &&
      GIT_AUTHOR_NAME="A" git commit -a -m "Second."'
 
+clean_fake_sendmail() {
+	rm -f commandline* msgtxt*
+}
+
 test_expect_success 'Extract patches' '
     patches=`git format-patch -n HEAD^1`
 '
@@ -39,7 +45,7 @@ cat >expected <<\EOF
 EOF
 test_expect_success \
     'Verify commandline' \
-    'diff commandline expected'
+    'diff commandline1 expected'
 
 cat >expected-show-all-headers <<\EOF
 0001-Second.patch
@@ -82,7 +88,7 @@ z8=zzzzzzzz
 z64=$z8$z8$z8$z8$z8$z8$z8$z8
 z512=$z64$z64$z64$z64$z64$z64$z64$z64
 test_expect_success 'reject long lines' '
-	rm -f commandline &&
+	clean_fake_sendmail &&
 	cp $patches longline.patch &&
 	echo $z512$z512 >>longline.patch &&
 	! git send-email \
@@ -95,7 +101,7 @@ test_expect_success 'reject long lines' '
 '
 
 test_expect_success 'no patch was sent' '
-	! test -e commandline
+	! test -e commandline1
 '
 
 test_expect_success 'allow long lines with --no-validate' '
@@ -109,6 +115,7 @@ test_expect_success 'allow long lines with --no-validate' '
 '
 
 test_expect_success 'Invalid In-Reply-To' '
+	clean_fake_sendmail &&
 	git send-email \
 		--from="Example <nobody@example.com>" \
 		--to=nobody@example.com \
@@ -116,17 +123,18 @@ test_expect_success 'Invalid In-Reply-To' '
 		--smtp-server="$(pwd)/fake.sendmail" \
 		$patches
 		2>errors
-	! grep "^In-Reply-To: < *>" msgtxt
+	! grep "^In-Reply-To: < *>" msgtxt1
 '
 
 test_expect_success 'Valid In-Reply-To when prompting' '
+	clean_fake_sendmail &&
 	(echo "From Example <from@example.com>"
 	 echo "To Example <to@example.com>"
 	 echo ""
 	) | env GIT_SEND_EMAIL_NOTTY=1 git send-email \
 		--smtp-server="$(pwd)/fake.sendmail" \
 		$patches 2>errors &&
-	! grep "^In-Reply-To: < *>" msgtxt
+	! grep "^In-Reply-To: < *>" msgtxt1
 '
 
 test_done
-- 
1.5.4.3.307.gacd7

```

## Jeff King, 2008-02-24 21:04

Subject: [PATCH 2/2] send-email: test compose functionality
Message-ID: <20080224210414.GB9150@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20080224210414.GB9150%40coredump.intra.peff.net
In-Reply-To: <20080224205720.GA7085@coredump.intra.peff.net>

```
This is just a basic sanity check that --compose works at
all.

Signed-off-by: Jeff King <peff@peff.net>
---
 t/t9001-send-email.sh |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 4975048..cbbfa9c 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -137,4 +137,33 @@ test_expect_success 'Valid In-Reply-To when prompting' '
 	! grep "^In-Reply-To: < *>" msgtxt1
 '
 
+test_expect_success 'setup fake editor' '
+	(echo "#!/bin/sh" &&
+	 echo "echo fake edit >>\$1"
+	) >fake-editor &&
+	chmod +x fake-editor
+'
+
+test_expect_success '--compose works' '
+	clean_fake_sendmail &&
+	echo y | \
+		GIT_EDITOR=$(pwd)/fake-editor \
+		GIT_SEND_EMAIL_NOTTY=1 \
+		git send-email \
+		--compose --subject foo \
+		--from="Example <nobody@example.com>" \
+		--to=nobody@example.com \
+		--smtp-server="$(pwd)/fake.sendmail" \
+		$patches \
+		2>errors
+'
+
+test_expect_success 'first message is compose text' '
+	grep "^fake edit" msgtxt1
+'
+
+test_expect_success 'second message is patch' '
+	grep "Subject:.*Second" msgtxt2
+'
+
 test_done
-- 
1.5.4.3.307.gacd7

```
