All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 2/2] send-email: add test for duplicate utf8 name
  2013-06-20 12:27 [PATCH v2 1/2] send-email: sanitize author when writing From line Michael S. Tsirkin
@ 2013-06-20 12:27 ` Michael S. Tsirkin
  2013-06-20 12:41   ` Thomas Rast
  2013-06-20 19:20   ` Junio C Hamano
  0 siblings, 2 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2013-06-20 12:27 UTC (permalink / raw)
  To: git; +Cc: =?UTF-8?q?SZEDER=20G=C3=A1bor?=

Verify that author name is not duplicated if it matches
sender, even if it is in utf8.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 t/t9001-send-email.sh | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 9f46f22..020acc4 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -956,6 +956,20 @@ test_expect_success $PREREQ 'utf8 author is correctly passed on' '
 	grep "^From: Füñný Nâmé <odd_?=mail@example.com>" msgtxt1
 '
 
+test_expect_success $PREREQ 'utf8 sender is not duplicated' '
+	clean_fake_sendmail &&
+	test_commit weird_sender &&
+	test_when_finished "git reset --hard HEAD^" &&
+	git commit --amend --author "Füñný Nâmé <odd_?=mail@example.com>" &&
+	git format-patch --stdout -1 >funny_name.patch &&
+	git send-email --from="Füñný Nâmé <odd_?=mail@example.com>" \
+	  --to=nobody@example.com \
+	  --smtp-server="$(pwd)/fake.sendmail" \
+	  funny_name.patch &&
+	grep "^From:" msgtxt1 > msgfrom &&
+	test_line_count = 1 msgfrom
+'
+
 test_expect_success $PREREQ 'sendemail.composeencoding works' '
 	clean_fake_sendmail &&
 	git config sendemail.composeencoding iso-8859-1 &&
-- 
MST

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 1/2] send-email: sanitize author when writing From line
@ 2013-06-20 12:27 Michael S. Tsirkin
  2013-06-20 12:27 ` [PATCH v2 2/2] send-email: add test for duplicate utf8 name Michael S. Tsirkin
  0 siblings, 1 reply; 7+ messages in thread
From: Michael S. Tsirkin @ 2013-06-20 12:27 UTC (permalink / raw)
  To: git; +Cc: =?UTF-8?q?SZEDER=20G=C3=A1bor?=

sender is now sanitized, but we didn't sanitize
author when checking whether From: line is needed
in the message body.
As a result git started writing duplicate From lines
when author matched sender and has utf8 characters.

Reported-by: SZEDER Gábor <szeder@ira.uka.de>
Tested-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 git-send-email.perl | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/git-send-email.perl b/git-send-email.perl
index 671762b..ecbf56f 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1259,6 +1259,7 @@ foreach my $t (@files) {
 	open my $fh, "<", $t or die "can't open file $t";
 
 	my $author = undef;
+	my $sauthor = undef;
 	my $author_encoding;
 	my $has_content_type;
 	my $body_encoding;
@@ -1297,7 +1298,7 @@ foreach my $t (@files) {
 			}
 			elsif (/^From:\s+(.*)$/i) {
 				($author, $author_encoding) = unquote_rfc2047($1);
-				my $sauthor = sanitize_address($author);
+				$sauthor = sanitize_address($author);
 				next if $suppress_cc{'author'};
 				next if $suppress_cc{'self'} and $sauthor eq $sender;
 				printf("(mbox) Adding cc: %s from line '%s'\n",
@@ -1393,7 +1394,7 @@ foreach my $t (@files) {
 		$subject = quote_subject($subject, $auto_8bit_encoding);
 	}
 
-	if (defined $author and $author ne $sender) {
+	if (defined $sauthor and $sauthor ne $sender) {
 		$message = "From: $author\n\n$message";
 		if (defined $author_encoding) {
 			if ($has_content_type) {
-- 
MST

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] send-email: add test for duplicate utf8 name
  2013-06-20 12:27 ` [PATCH v2 2/2] send-email: add test for duplicate utf8 name Michael S. Tsirkin
@ 2013-06-20 12:41   ` Thomas Rast
  2013-06-20 12:45     ` Michael S. Tsirkin
  2013-06-20 19:20   ` Junio C Hamano
  1 sibling, 1 reply; 7+ messages in thread
From: Thomas Rast @ 2013-06-20 12:41 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: git, SZEDER Gábor

"Michael S. Tsirkin" <mst@redhat.com> writes:

> Verify that author name is not duplicated if it matches
> sender, even if it is in utf8.

Small nit: if you make two patches out of it, add the tests first with
test_expect_failure.  Then flip it to test_expect_success in the actual
code change.  That makes it easy to verify that the test actually checks
the right thing, and that it was your code change that fixed it.

-- 
Thomas Rast
trast@{inf,student}.ethz.ch

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] send-email: add test for duplicate utf8 name
  2013-06-20 12:41   ` Thomas Rast
@ 2013-06-20 12:45     ` Michael S. Tsirkin
  2013-06-20 12:48       ` Thomas Rast
  0 siblings, 1 reply; 7+ messages in thread
From: Michael S. Tsirkin @ 2013-06-20 12:45 UTC (permalink / raw)
  To: Thomas Rast; +Cc: git, SZEDER Gábor

On Thu, Jun 20, 2013 at 02:41:37PM +0200, Thomas Rast wrote:
> "Michael S. Tsirkin" <mst@redhat.com> writes:
> 
> > Verify that author name is not duplicated if it matches
> > sender, even if it is in utf8.
> 
> Small nit: if you make two patches out of it, add the tests first with
> test_expect_failure.  Then flip it to test_expect_success in the actual
> code change.  That makes it easy to verify that the test actually checks
> the right thing, and that it was your code change that fixed it.

I did this by reverting 1/2 and rerunning.

But applying in reverse order means bisect can give us
a setup where some tests fail, I thought it's a
good idea to avoid that.

> -- 
> Thomas Rast
> trast@{inf,student}.ethz.ch

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] send-email: add test for duplicate utf8 name
  2013-06-20 12:45     ` Michael S. Tsirkin
@ 2013-06-20 12:48       ` Thomas Rast
  2013-06-20 12:53         ` Michael S. Tsirkin
  0 siblings, 1 reply; 7+ messages in thread
From: Thomas Rast @ 2013-06-20 12:48 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: git, SZEDER Gábor

"Michael S. Tsirkin" <mst@redhat.com> writes:

> On Thu, Jun 20, 2013 at 02:41:37PM +0200, Thomas Rast wrote:
>> "Michael S. Tsirkin" <mst@redhat.com> writes:
>> 
>> > Verify that author name is not duplicated if it matches
>> > sender, even if it is in utf8.
>> 
>> Small nit: if you make two patches out of it, add the tests first with
>> test_expect_failure.  Then flip it to test_expect_success in the actual
>> code change.  That makes it easy to verify that the test actually checks
>> the right thing, and that it was your code change that fixed it.
>
> I did this by reverting 1/2 and rerunning.
>
> But applying in reverse order means bisect can give us
> a setup where some tests fail, I thought it's a
> good idea to avoid that.

That's why you need to test_expect_*failure* in the commit that adds the
tests -- essentially saying "I know this is broken!".

Yes, it's a roundabout way.  But splitting code and tests in the way you
just posted is equally roundabout, while not having the benefit that one
can check out the commit at patch 1 and verify that it is indeed broken
(showing up as "still have known breakage").

-- 
Thomas Rast
trast@{inf,student}.ethz.ch

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] send-email: add test for duplicate utf8 name
  2013-06-20 12:48       ` Thomas Rast
@ 2013-06-20 12:53         ` Michael S. Tsirkin
  0 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2013-06-20 12:53 UTC (permalink / raw)
  To: Thomas Rast; +Cc: git, SZEDER Gábor

On Thu, Jun 20, 2013 at 02:48:15PM +0200, Thomas Rast wrote:
> "Michael S. Tsirkin" <mst@redhat.com> writes:
> 
> > On Thu, Jun 20, 2013 at 02:41:37PM +0200, Thomas Rast wrote:
> >> "Michael S. Tsirkin" <mst@redhat.com> writes:
> >> 
> >> > Verify that author name is not duplicated if it matches
> >> > sender, even if it is in utf8.
> >> 
> >> Small nit: if you make two patches out of it, add the tests first with
> >> test_expect_failure.  Then flip it to test_expect_success in the actual
> >> code change.  That makes it easy to verify that the test actually checks
> >> the right thing, and that it was your code change that fixed it.
> >
> > I did this by reverting 1/2 and rerunning.
> >
> > But applying in reverse order means bisect can give us
> > a setup where some tests fail, I thought it's a
> > good idea to avoid that.
> 
> That's why you need to test_expect_*failure* in the commit that adds the
> tests -- essentially saying "I know this is broken!".
> 
> Yes, it's a roundabout way.  But splitting code and tests in the way you
> just posted is equally roundabout, while not having the benefit that one
> can check out the commit at patch 1 and verify that it is indeed broken
> (showing up as "still have known breakage").

I'll try to do it like this next time, I hope for now Junio
can take it as is.



> -- 
> Thomas Rast
> trast@{inf,student}.ethz.ch

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] send-email: add test for duplicate utf8 name
  2013-06-20 12:27 ` [PATCH v2 2/2] send-email: add test for duplicate utf8 name Michael S. Tsirkin
  2013-06-20 12:41   ` Thomas Rast
@ 2013-06-20 19:20   ` Junio C Hamano
  1 sibling, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2013-06-20 19:20 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: git, =?UTF-8?q?SZEDER=20G=C3=A1bor?=

"Michael S. Tsirkin" <mst@redhat.com> writes:

> Verify that author name is not duplicated if it matches
> sender, even if it is in utf8.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---

Hmph.  There seems to be something wrong in the original message I
received from you (look at Cc: line I have above, which was copied
by my MUA from the message I am responding to).

Visiting

  http://article.gmane.org/gmane.comp.version-control.git/228485/raw

shows this gem:

  Cc: =?us-ascii?B?PT9VVEYtOD9xP1NaRURFUj0yMEc9QzM9QTFib3I/PQ==?= 
     <szeder@ira.uka.de>

Somebody is wrapping what "=?UTF-8?q?..." which you had already
wrapped into "=?us-ascii?B..."???

In any case, I think Thomas's "first expect failure and then flip
it, if you add test and fix as separate patches" is a good idea, and
the change between the previous one and this seems to be only the
last part of this test, so I'll tweak what I already have from the
previous on 'pu' locally and push the result out.  Please double
check the result.

Thanks.

>  t/t9001-send-email.sh | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
> index 9f46f22..020acc4 100755
> --- a/t/t9001-send-email.sh
> +++ b/t/t9001-send-email.sh
> @@ -956,6 +956,20 @@ test_expect_success $PREREQ 'utf8 author is correctly passed on' '
>  	grep "^From: Füñný Nâmé <odd_?=mail@example.com>" msgtxt1
>  '
>  
> +test_expect_success $PREREQ 'utf8 sender is not duplicated' '
> +	clean_fake_sendmail &&
> +	test_commit weird_sender &&
> +	test_when_finished "git reset --hard HEAD^" &&
> +	git commit --amend --author "Füñný Nâmé <odd_?=mail@example.com>" &&
> +	git format-patch --stdout -1 >funny_name.patch &&
> +	git send-email --from="Füñný Nâmé <odd_?=mail@example.com>" \
> +	  --to=nobody@example.com \
> +	  --smtp-server="$(pwd)/fake.sendmail" \
> +	  funny_name.patch &&
> +	grep "^From:" msgtxt1 > msgfrom &&
> +	test_line_count = 1 msgfrom
> +'
> +
>  test_expect_success $PREREQ 'sendemail.composeencoding works' '
>  	clean_fake_sendmail &&
>  	git config sendemail.composeencoding iso-8859-1 &&

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-06-20 19:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-20 12:27 [PATCH v2 1/2] send-email: sanitize author when writing From line Michael S. Tsirkin
2013-06-20 12:27 ` [PATCH v2 2/2] send-email: add test for duplicate utf8 name Michael S. Tsirkin
2013-06-20 12:41   ` Thomas Rast
2013-06-20 12:45     ` Michael S. Tsirkin
2013-06-20 12:48       ` Thomas Rast
2013-06-20 12:53         ` Michael S. Tsirkin
2013-06-20 19:20   ` Junio C Hamano

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.