t9001: avoid not portable '\n' with sed
PATCH v3 1/1 t9001: avoid not portable '\n' with sed
t9001 used a '\n' in a sed expression to split one line into two lines, but the usage of '\n' in the "replacement string" is not portable.
The '\n' can be used to match a newline in the "pattern space", but otherwise the meaning of '\n' is unspecified in POSIX.
- Gnu versions of sed will treat '\n' as a newline character.
- Other versions of sed (like /usr/bin/sed under Mac OS X) simply ignore the '\' before the 'n', treating '\n' as 'n'.
For reference see:
pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
http://www.gnu.org/software/sed/manual/sed.html
As the test already requires perl as a prerequisite, use perl instead of sed.
---
Sending a V3 patch seems "spammish", but after re-reading all the comments I think that the commit msg should point out the difference between POSIX sed and gnu sed somewhat better.
t/t9001-send-email.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t9001-send-email.sh +1 -1
@@ -1342,7 +1342,7 @@ test_cover_addresses () { git format-patch --cover-letter -2 -o outdir && cover=`echo outdir/0000-*.patch` && mv $cover cover-to-edit.patch && - sed "s/^From:/$header: [email protected]\nFrom:/" cover-to-edit.patch >"$cover" && + perl -pe "s/^From:/$header: extra\@address.com\nFrom:/" cover-to-edit.patch >"$cover" && git send-email \ --force \ --from="Example <[email protected]>" \
Signature · 1 line
2.0.0.553.ged01b91
Quoted 10 lines · Torsten Bögershausen
t9001 used a '\n' in a sed expression to split one line into two lines, but the usage of '\n' in the "replacement string" is not portable.
The '\n' can be used to match a newline in the "pattern space", but otherwise the meaning of '\n' is unspecified in POSIX.
- Gnu versions of sed will treat '\n' as a newline character.
- Other versions of sed (like/usr/bin/sedunder Mac OS X) simply ignore the '\' before the 'n', treating '\n' as 'n'.
Quoted 5 lines
For reference see:
pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
http://www.gnu.org/software/sed/manual/sed.htmlAs the test already requires perl as a prerequisite, use perl instead of sed.
René Scharfe pointed out this useful resource [1] for writing portable 'sed' when he fixed [2] a problem on NetBSD in a test I had written.
[1]: http://sed.sourceforge.net/sedfaq4.html
[2]: http://thread.gmane.org/gmane.comp.version-control.git/231654
Quoted 24 lines
Signed-off-by Torsten Bögershausen <[email protected]>---
Sending a V3 patch seems "spammish", but after re-reading all the comments I think that the commit msg should point out the difference between POSIX sed and gnu sed somewhat better.t/t9001-send-email.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)t/t9001-send-email.sh +1
-2@@ -1342,7 +1342,7 @@ test_cover_addresses () { git format-patch --cover-letter -2 -o outdir && cover=`echo outdir/0000-*.patch` && mv $cover cover-to-edit.patch && - sed "s/^From:/$header: [email protected]\nFrom:/" cover-to-edit.patch >"$cover" && + perl -pe "s/^From:/$header: extra\@address.com\nFrom:/" cover-to-edit.patch >"$cover" && git send-email \ --force \ --from="Example <[email protected]>" \ --2.0.0.553.ged01b91
Quoted 2 lines · Torsten Bögershausen
t9001 used a '\n' in a sed expression to split one line into two lines, but the usage of '\n' in the "replacement string" is not portable.
This looks peculiarly familiar; don't I already have it queued?
Quoted 5 lines · Junio C Hamano
Quoted 2 lines · Torsten Bögershausen
t9001 used a '\n' in a sed expression to split one line into two lines, but the usage of '\n' in the "replacement string" is not portable.
This looks peculiarly familiar; don't I already have it queued?
Yes, V2 is queued and in pu,and only the commit msg is changed between V2 and V3.
I think that V3 explains the difference between POSIX sed and gnu sed much better, and does reflect all the comments from the list, which otherwise may be lost.
And I suspect that not only the sed under Mac OS X does not handle this very '\n' different from gnu sed, or in other words, more platforms may not have a gnu sed and may need the fix.
Quoted 3 lines · Torsten Bögershausen
I think that V3 explains the difference between POSIX sed and gnu sed much better, and does reflect all the comments from the list, which otherwise may be lost.
Too late for that as the patch is already in 'next' X-<.