Re: [PATCH 1/6] t/send-email.sh: add test for suppress self
On Wed, May 29, 2013 at 03:59:51PM -0700, Junio C Hamano wrote: > Junio C Hamano writes: > > >> If we don't want to use \, this can also be done like this: > >> > >> FOO << EOF && > >> BLABLA > >> EOF > >> BAR && > >> VAR > >> > >> I think this is what you suggest. > > > > Yup, that is exactly what I meant (but no leading indentation before > > BAR and VAR). > > > > That way, it is a lot more clear where the input is (the BLABLA is > > fed to FOO and BAR and VAR do not have anything to do with it). > > > >>> > + grep '^Cc:' msghdr1-$3 > actual-no-cc-$3 && \ > >>> > + test_cmp expected-no-cc-$3 actual-no-cc-$3 > > > > OK, so this is where the message begins, with the commit title "test > > supress-cc.self...". > > Another thing I forgot to say, if you are rerolling this patch > anyway to follow that style, is that our newer tests typically > write it like this: What exactly should I notice here? > test_supress_self () { > test_commit $3 && > test_when_finished "git reset --hard HEAD^" && > write_script <<-EOF && > sed -n -e s/^cccmd--//p \"\$1\" > EOF > > git commit --amend --author="$1 <$2>" -F - <<-EOF && > test suppress-cc.self $3 with name $1 email $2 > > $3 > > cccmd--"$1" <$2> > > Cc: "$1" <$2> > Cc: $1 <$2> > Signed-off-by: "$1" <$2> > Signed-off-by: $1 <$2> > EOF > > clean_fake_sendmail && > git format-patch --stdout -1 >"suppress-self-$3.patch" && > git send-email --from="$1 <$2>" \ > --to=nob...@example.com \ > ... other args ... > ... verification steps for the send-email output ... > } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/6] t/send-email.sh: add test for suppress self
Junio C Hamano writes: >> If we don't want to use \, this can also be done like this: >> >> FOO << EOF && >> BLABLA >> EOF >> BAR && >> VAR >> >> I think this is what you suggest. > > Yup, that is exactly what I meant (but no leading indentation before > BAR and VAR). > > That way, it is a lot more clear where the input is (the BLABLA is > fed to FOO and BAR and VAR do not have anything to do with it). > >>> > + grep '^Cc:' msghdr1-$3 > actual-no-cc-$3 && \ >>> > + test_cmp expected-no-cc-$3 actual-no-cc-$3 > > OK, so this is where the message begins, with the commit title "test > supress-cc.self...". Another thing I forgot to say, if you are rerolling this patch anyway to follow that style, is that our newer tests typically write it like this: test_supress_self () { test_commit $3 && test_when_finished "git reset --hard HEAD^" && write_script <<-EOF && sed -n -e s/^cccmd--//p \"\$1\" EOF git commit --amend --author="$1 <$2>" -F - <<-EOF && test suppress-cc.self $3 with name $1 email $2 $3 cccmd--"$1" <$2> Cc: "$1" <$2> Cc: $1 <$2> Signed-off-by: "$1" <$2> Signed-off-by: $1 <$2> EOF clean_fake_sendmail && git format-patch --stdout -1 >"suppress-self-$3.patch" && git send-email --from="$1 <$2>" \ --to=nob...@example.com \ ... other args ... ... verification steps for the send-email output ... } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/6] t/send-email.sh: add test for suppress self
"Michael S. Tsirkin" writes: >> > +test_suppress_self () { >> > + test_commit $3 && >> > + test_when_finished "git reset --hard HEAD^" && >> > + { >> > + echo "#!$SHELL_PATH" >> > + echo sed -n -e s/^cccmd--//p \"\$1\" >> > + } > cccmd-sed && >> > + chmod +x cccmd-sed && >> >> We can use write_script for this kind of thing, I think. > > Important? > It's open-coded elsewhere in this test. Not that important, other than that it is nice not to spread what the old tests did before write_script was introduced to new ones, as that is one more thing to update when somebody feels like it. > If we don't want to use \, this can also be done like this: > > FOO << EOF && > BLABLA > EOF > BAR && > VAR > > I think this is what you suggest. Yup, that is exactly what I meant (but no leading indentation before BAR and VAR). That way, it is a lot more clear where the input is (the BLABLA is fed to FOO and BAR and VAR do not have anything to do with it). >> > + grep '^Cc:' msghdr1-$3 > actual-no-cc-$3 && \ >> > + test_cmp expected-no-cc-$3 actual-no-cc-$3 OK, so this is where the message begins, with the commit title "test supress-cc.self...". >> > +test suppress-cc.self $3 with name $1 email $2 >> > + >> > +$3 >> > + >> > +cccmd--"$1" <$2> >> > + >> > +Cc: "$1" <$2> >> > +Cc: $1 <$2> >> > +Signed-off-by: "$1" <$2> >> > +Signed-off-by: $1 <$2> >> > +EOF >> > +} >> > + >> > +test_expect_success $PREREQ 'self name is suppressed' " >> > + test_suppress_self 'A U Thor' 'aut...@redhat.com' 'self_name_suppressed' >> > +" >> > + >> > test_expect_success $PREREQ 'Show all headers' ' >> >git send-email \ >> >--dry-run \ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/6] t/send-email.sh: add test for suppress self
On Wed, May 29, 2013 at 01:28:52PM -0700, Junio C Hamano wrote: > "Michael S. Tsirkin" writes: > > > Signed-off-by: Michael S. Tsirkin > > --- > > Thanks. Thanks, I'll address your comments and repost. You asked some questions below, so I tried to answer. > > t/t9001-send-email.sh | 41 + > > 1 file changed, 41 insertions(+) > > > > diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh > > index ebd5c5d..36ecf73 100755 > > --- a/t/t9001-send-email.sh > > +++ b/t/t9001-send-email.sh > > @@ -171,6 +171,47 @@ Result: OK > > EOF > > " > > > > +test_suppress_self () { > > + test_commit $3 && > > + test_when_finished "git reset --hard HEAD^" && > > + { > > + echo "#!$SHELL_PATH" > > + echo sed -n -e s/^cccmd--//p \"\$1\" > > + } > cccmd-sed && > > + chmod +x cccmd-sed && > > We can use write_script for this kind of thing, I think. Important? It's open-coded elsewhere in this test. > > + git commit --amend --author="$1 <$2>" -F - << EOF && \ > > Hmm,... everything below this function is fed as the standard input > to "git commit" as its updated log message (i.e. "--amend -F -")? > > Puzzled... > The EOF I can find is at the very bottom of this function, so there > is no "next command" that && at the end of the above line is > cascading the control to. > > Doubly puzzled... > > In any case, please do not add " \" at the end of line when the line > ends one command and "&&" at the end of line clearly tells the shell > that you haven't stopped talking yet. Note that \ make following lines count as continuation of this one. So they are *not* part of standard input. Look here: FOO << EOF && BAR && VAR BLABLA EOF this feeds BLABLA as input to FOO, then runs BAR and then VAR. Now we don't want to put BAR and VAR on same line because that line is too long. So we write the equivalent: \ followed by newline is same as space for shell, so we can write it as: FOO << EOF && \ BAR && \ VAR BLABLA EOF Clear now? If we don't want to use \, this can also be done like this: FOO << EOF && BLABLA EOF BAR && VAR I think this is what you suggest. > > > + clean_fake_sendmail && \ > > + echo suppress-self-$3.patch > /dev/tty && \ > > Do we always have /dev/tty? If this is a leftover debugging, please > remove it. Leftover. > If redirecting it to >&2 does not upset what the test > does, that is good, too (you can run the test with -v option to view > the output). > > > + git format-patch --stdout -1 >suppress-self-$3.patch && \ > > + git send-email --from="$1 <$2>" \ > > + --to=nob...@example.com \ > > + --cc-cmd=./cccmd-sed \ > > + --suppress-cc=self \ > > + --smtp-server="$(pwd)/fake.sendmail" \ > > + suppress-self-$3.patch && \ > > + mv msgtxt1 msgtxt1-$3 && \ > > + sed -e '/^$/q' msgtxt1-$3 > msghdr1-$3 && \ > > Style. No SP between redirection operator and redirection target, > e.g. >$filename, <$filename, etc. Some in this patch is done > correctly (e.g. format-patch above), some others are not. will fix. > > + rm -f expected-no-cc-$3 && \ > > + touch expected-no-cc-$3 && \ > > Please reserve "touch" for "make sure it has recent timestamp", not > for "make sure it exists and is empty". The above two should be > more like: > > >"expected-no-cc-$3" && OK > Also, even though it is not required by POSIX, please dquote the > redirection target filename if you have variable expansion. Some > versions of bash (incorrectly) give warning if you don't. OK > > + grep '^Cc:' msghdr1-$3 > actual-no-cc-$3 && \ > > + test_cmp expected-no-cc-$3 actual-no-cc-$3 > > +test suppress-cc.self $3 with name $1 email $2 > > + > > +$3 > > + > > +cccmd--"$1" <$2> > > + > > +Cc: "$1" <$2> > > +Cc: $1 <$2> > > +Signed-off-by: "$1" <$2> > > +Signed-off-by: $1 <$2> > > +EOF > > +} > > + > > +test_expect_success $PREREQ 'self name is suppressed' " > > + test_suppress_self 'A U Thor' 'aut...@redhat.com' 'self_name_suppressed' > > +" > > + > > test_expect_success $PREREQ 'Show all headers' ' > > git send-email \ > > --dry-run \ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/6] t/send-email.sh: add test for suppress self
"Michael S. Tsirkin" writes: > Signed-off-by: Michael S. Tsirkin > --- Thanks. > t/t9001-send-email.sh | 41 + > 1 file changed, 41 insertions(+) > > diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh > index ebd5c5d..36ecf73 100755 > --- a/t/t9001-send-email.sh > +++ b/t/t9001-send-email.sh > @@ -171,6 +171,47 @@ Result: OK > EOF > " > > +test_suppress_self () { > + test_commit $3 && > + test_when_finished "git reset --hard HEAD^" && > + { > + echo "#!$SHELL_PATH" > + echo sed -n -e s/^cccmd--//p \"\$1\" > + } > cccmd-sed && > + chmod +x cccmd-sed && We can use write_script for this kind of thing, I think. > + git commit --amend --author="$1 <$2>" -F - << EOF && \ Hmm,... everything below this function is fed as the standard input to "git commit" as its updated log message (i.e. "--amend -F -")? Puzzled... The EOF I can find is at the very bottom of this function, so there is no "next command" that && at the end of the above line is cascading the control to. Doubly puzzled... In any case, please do not add " \" at the end of line when the line ends one command and "&&" at the end of line clearly tells the shell that you haven't stopped talking yet. > + clean_fake_sendmail && \ > + echo suppress-self-$3.patch > /dev/tty && \ Do we always have /dev/tty? If this is a leftover debugging, please remove it. If redirecting it to >&2 does not upset what the test does, that is good, too (you can run the test with -v option to view the output). > + git format-patch --stdout -1 >suppress-self-$3.patch && \ > + git send-email --from="$1 <$2>" \ > + --to=nob...@example.com \ > + --cc-cmd=./cccmd-sed \ > + --suppress-cc=self \ > + --smtp-server="$(pwd)/fake.sendmail" \ > + suppress-self-$3.patch && \ > + mv msgtxt1 msgtxt1-$3 && \ > + sed -e '/^$/q' msgtxt1-$3 > msghdr1-$3 && \ Style. No SP between redirection operator and redirection target, e.g. >$filename, <$filename, etc. Some in this patch is done correctly (e.g. format-patch above), some others are not. > + rm -f expected-no-cc-$3 && \ > + touch expected-no-cc-$3 && \ Please reserve "touch" for "make sure it has recent timestamp", not for "make sure it exists and is empty". The above two should be more like: >"expected-no-cc-$3" && Also, even though it is not required by POSIX, please dquote the redirection target filename if you have variable expansion. Some versions of bash (incorrectly) give warning if you don't. > + grep '^Cc:' msghdr1-$3 > actual-no-cc-$3 && \ > + test_cmp expected-no-cc-$3 actual-no-cc-$3 > +test suppress-cc.self $3 with name $1 email $2 > + > +$3 > + > +cccmd--"$1" <$2> > + > +Cc: "$1" <$2> > +Cc: $1 <$2> > +Signed-off-by: "$1" <$2> > +Signed-off-by: $1 <$2> > +EOF > +} > + > +test_expect_success $PREREQ 'self name is suppressed' " > + test_suppress_self 'A U Thor' 'aut...@redhat.com' 'self_name_suppressed' > +" > + > test_expect_success $PREREQ 'Show all headers' ' > git send-email \ > --dry-run \ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html