]>
Commit | Line | Data |
---|---|---|
ce903018 RA |
1 | #!/bin/sh |
2 | ||
3 | test_description='git-send-email' | |
4 | . ./test-lib.sh | |
5 | ||
6 | PROG='git send-email' | |
7 | test_expect_success \ | |
8 | 'prepare reference tree' \ | |
9 | 'echo "1A quick brown fox jumps over the" >file && | |
10 | echo "lazy dog" >>file && | |
c0d45281 | 11 | git add file && |
ce903018 RA |
12 | GIT_AUTHOR_NAME="A" git commit -a -m "Initial."' |
13 | ||
14 | test_expect_success \ | |
15 | 'Setup helper tool' \ | |
2186d566 JH |
16 | '(echo "#!/bin/sh" |
17 | echo shift | |
6d34a2ba JK |
18 | echo output=1 |
19 | echo "while test -f commandline\$output; do output=\$((\$output+1)); done" | |
2186d566 JH |
20 | echo for a |
21 | echo do | |
22 | echo " echo \"!\$a!\"" | |
6d34a2ba JK |
23 | echo "done >commandline\$output" |
24 | echo "cat > msgtxt\$output" | |
c0d45281 JK |
25 | ) >fake.sendmail && |
26 | chmod +x ./fake.sendmail && | |
27 | git add fake.sendmail && | |
ce903018 RA |
28 | GIT_AUTHOR_NAME="A" git commit -a -m "Second."' |
29 | ||
6d34a2ba JK |
30 | clean_fake_sendmail() { |
31 | rm -f commandline* msgtxt* | |
32 | } | |
33 | ||
280242d1 JH |
34 | test_expect_success 'Extract patches' ' |
35 | patches=`git format-patch -n HEAD^1` | |
36 | ' | |
37 | ||
38 | test_expect_success 'Send patches' ' | |
85d81a75 | 39 | git send-email --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors |
280242d1 | 40 | ' |
ce903018 | 41 | |
2186d566 JH |
42 | cat >expected <<\EOF |
43 | !nobody@example.com! | |
44 | !author@example.com! | |
45 | EOF | |
ce903018 RA |
46 | test_expect_success \ |
47 | 'Verify commandline' \ | |
6d34a2ba | 48 | 'diff commandline1 expected' |
ce903018 | 49 | |
b7f30e0a DK |
50 | cat >expected-show-all-headers <<\EOF |
51 | 0001-Second.patch | |
52 | (mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>' | |
53 | Dry-OK. Log says: | |
54 | Server: relay.example.com | |
55 | MAIL FROM:<from@example.com> | |
56 | RCPT TO:<to@example.com>,<cc@example.com>,<author@example.com>,<bcc@example.com> | |
57 | From: Example <from@example.com> | |
58 | To: to@example.com | |
59 | Cc: cc@example.com, A <author@example.com> | |
60 | Subject: [PATCH 1/1] Second. | |
61 | Date: DATE-STRING | |
62 | Message-Id: MESSAGE-ID-STRING | |
63 | X-Mailer: X-MAILER-STRING | |
64 | In-Reply-To: <unique-message-id@example.com> | |
65 | References: <unique-message-id@example.com> | |
66 | ||
67 | Result: OK | |
68 | EOF | |
69 | ||
70 | test_expect_success 'Show all headers' ' | |
71 | git send-email \ | |
72 | --dry-run \ | |
73 | --from="Example <from@example.com>" \ | |
74 | --to=to@example.com \ | |
75 | --cc=cc@example.com \ | |
76 | --bcc=bcc@example.com \ | |
77 | --in-reply-to="<unique-message-id@example.com>" \ | |
78 | --smtp-server relay.example.com \ | |
79 | $patches | | |
80 | sed -e "s/^\(Date:\).*/\1 DATE-STRING/" \ | |
81 | -e "s/^\(Message-Id:\).*/\1 MESSAGE-ID-STRING/" \ | |
82 | -e "s/^\(X-Mailer:\).*/\1 X-MAILER-STRING/" \ | |
83 | >actual-show-all-headers && | |
82ebb0b6 | 84 | test_cmp expected-show-all-headers actual-show-all-headers |
b7f30e0a DK |
85 | ' |
86 | ||
747bbff9 JK |
87 | z8=zzzzzzzz |
88 | z64=$z8$z8$z8$z8$z8$z8$z8$z8 | |
89 | z512=$z64$z64$z64$z64$z64$z64$z64$z64 | |
90 | test_expect_success 'reject long lines' ' | |
6d34a2ba | 91 | clean_fake_sendmail && |
747bbff9 JK |
92 | cp $patches longline.patch && |
93 | echo $z512$z512 >>longline.patch && | |
94 | ! git send-email \ | |
95 | --from="Example <nobody@example.com>" \ | |
96 | --to=nobody@example.com \ | |
97 | --smtp-server="$(pwd)/fake.sendmail" \ | |
98 | $patches longline.patch \ | |
99 | 2>errors && | |
100 | grep longline.patch errors | |
101 | ' | |
102 | ||
103 | test_expect_success 'no patch was sent' ' | |
6d34a2ba | 104 | ! test -e commandline1 |
747bbff9 JK |
105 | ' |
106 | ||
c764a0c2 JK |
107 | test_expect_success 'allow long lines with --no-validate' ' |
108 | git send-email \ | |
109 | --from="Example <nobody@example.com>" \ | |
110 | --to=nobody@example.com \ | |
111 | --smtp-server="$(pwd)/fake.sendmail" \ | |
112 | --no-validate \ | |
113 | $patches longline.patch \ | |
114 | 2>errors | |
115 | ' | |
116 | ||
0fb7fc75 | 117 | test_expect_success 'Invalid In-Reply-To' ' |
6d34a2ba | 118 | clean_fake_sendmail && |
0fb7fc75 JS |
119 | git send-email \ |
120 | --from="Example <nobody@example.com>" \ | |
121 | --to=nobody@example.com \ | |
122 | --in-reply-to=" " \ | |
123 | --smtp-server="$(pwd)/fake.sendmail" \ | |
124 | $patches | |
125 | 2>errors | |
6d34a2ba | 126 | ! grep "^In-Reply-To: < *>" msgtxt1 |
0fb7fc75 JS |
127 | ' |
128 | ||
129 | test_expect_success 'Valid In-Reply-To when prompting' ' | |
6d34a2ba | 130 | clean_fake_sendmail && |
0fb7fc75 JS |
131 | (echo "From Example <from@example.com>" |
132 | echo "To Example <to@example.com>" | |
133 | echo "" | |
134 | ) | env GIT_SEND_EMAIL_NOTTY=1 git send-email \ | |
135 | --smtp-server="$(pwd)/fake.sendmail" \ | |
136 | $patches 2>errors && | |
6d34a2ba | 137 | ! grep "^In-Reply-To: < *>" msgtxt1 |
0fb7fc75 JS |
138 | ' |
139 | ||
8a8bf469 JK |
140 | test_expect_success 'setup fake editor' ' |
141 | (echo "#!/bin/sh" && | |
142 | echo "echo fake edit >>\$1" | |
143 | ) >fake-editor && | |
144 | chmod +x fake-editor | |
145 | ' | |
146 | ||
147 | test_expect_success '--compose works' ' | |
148 | clean_fake_sendmail && | |
149 | echo y | \ | |
150 | GIT_EDITOR=$(pwd)/fake-editor \ | |
151 | GIT_SEND_EMAIL_NOTTY=1 \ | |
152 | git send-email \ | |
153 | --compose --subject foo \ | |
154 | --from="Example <nobody@example.com>" \ | |
155 | --to=nobody@example.com \ | |
156 | --smtp-server="$(pwd)/fake.sendmail" \ | |
157 | $patches \ | |
158 | 2>errors | |
159 | ' | |
160 | ||
161 | test_expect_success 'first message is compose text' ' | |
162 | grep "^fake edit" msgtxt1 | |
163 | ' | |
164 | ||
165 | test_expect_success 'second message is patch' ' | |
166 | grep "Subject:.*Second" msgtxt2 | |
167 | ' | |
168 | ||
ce903018 | 169 | test_done |