Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
# SUSv3 compliant sed tests.
|
|
|
|
# Copyright 2005 by Rob Landley <rob@landley.net>
|
2010-08-16 18:14:46 +00:00
|
|
|
# Licensed under GPLv2, see file LICENSE in this source tree.
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
2009-11-04 23:41:22 +00:00
|
|
|
. ./testing.sh
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
2011-08-16 11:29:34 +00:00
|
|
|
# testing "description" "commands" "result" "infile" "stdin"
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
|
|
|
# Corner cases
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed no files (stdin)" 'sed ""' "hello\n" "" "hello\n"
|
|
|
|
testing "sed explicit stdin" 'sed "" -' "hello\n" "" "hello\n"
|
|
|
|
testing "sed handles empty lines" "sed -e 's/\$/@/'" "@\n" "" "\n"
|
|
|
|
testing "sed stdin twice" 'sed "" - -' "hello" "" "hello"
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
|
|
|
# Trailing EOF.
|
|
|
|
# Match $, at end of each file or all files?
|
2006-03-01 16:32:01 +00:00
|
|
|
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
# -e corner cases
|
|
|
|
# without -e
|
|
|
|
# multiple -e
|
|
|
|
# interact with a
|
|
|
|
# -eee arg1 arg2 arg3
|
|
|
|
# -f corner cases
|
|
|
|
# -e -f -e
|
|
|
|
# -n corner cases
|
|
|
|
# no newline at EOF?
|
|
|
|
# -r corner cases
|
|
|
|
# Just make sure it works.
|
|
|
|
# -i corner cases:
|
|
|
|
# sed -i -
|
|
|
|
# permissions
|
|
|
|
# -i on a symlink
|
|
|
|
# on a directory
|
2006-03-01 16:32:01 +00:00
|
|
|
# With $ last-line test
|
|
|
|
# Continue with \
|
|
|
|
# End of script with trailing \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
|
|
|
# command list
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed accepts blanks before command" "sed -e '1 d'" "" "" ""
|
|
|
|
testing "sed accepts newlines in -e" "sed -e 'i\
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
1
|
|
|
|
a\
|
|
|
|
3'" "1\n2\n3\n" "" "2\n"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed accepts multiple -e" "sed -e 'i\' -e '1' -e 'a\' -e '3'" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"1\n2\n3\n" "" "2\n"
|
|
|
|
|
|
|
|
# substitutions
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed -n" "sed -n -e s/foo/bar/ -e s/bar/baz/" "" "" "foo\n"
|
2012-04-24 17:21:16 +00:00
|
|
|
testing "sed with empty match" "sed 's/z*//g'" "string\n" "" "string\n"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed s//p" "sed -e s/foo/bar/p -e s/bar/baz/p" "bar\nbaz\nbaz\n" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"" "foo\n"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed -n s//p" "sed -ne s/abc/def/p" "def\n" "" "abc\n"
|
|
|
|
testing "sed s//g (exhaustive)" "sed -e 's/[[:space:]]*/,/g'" ",1,2,3,4,5,\n" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"" "12345\n"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed s arbitrary delimiter" "sed -e 's woo boing '" "boing\n" "" "woo\n"
|
|
|
|
testing "sed s chains" "sed -e s/foo/bar/ -e s/bar/baz/" "baz\n" "" "foo\n"
|
|
|
|
testing "sed s chains2" "sed -e s/foo/bar/ -e s/baz/nee/" "bar\n" "" "foo\n"
|
|
|
|
testing "sed s [delimiter]" "sed -e 's@[@]@@'" "onetwo" "" "one@two"
|
2007-11-13 16:48:10 +00:00
|
|
|
testing "sed s with \\t (GNU ext)" "sed 's/\t/ /'" "one two" "" "one\ttwo"
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
|
|
|
# branch
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed b (branch)" "sed -e 'b one;p;: one'" "foo\n" "" "foo\n"
|
|
|
|
testing "sed b (branch with no label jumps to end)" "sed -e 'b;p'" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"foo\n" "" "foo\n"
|
|
|
|
|
|
|
|
# test and branch
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed t (test/branch)" "sed -e 's/a/1/;t one;p;: one;p'" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"1\n1\nb\nb\nb\nc\nc\nc\n" "" "a\nb\nc\n"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed t (test/branch clears test bit)" "sed -e 's/a/b/;:loop;t loop'" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"b\nb\nc\n" "" "a\nb\nc\n"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed T (!test/branch)" "sed -e 's/a/1/;T notone;p;: notone;p'" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"1\n1\n1\nb\nb\nc\nc\n" "" "a\nb\nc\n"
|
|
|
|
|
2009-07-18 14:22:26 +00:00
|
|
|
test x"$SKIP_KNOWN_BUGS" = x"" && {
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
# Normal sed end-of-script doesn't print "c" because n flushed the pattern
|
|
|
|
# space. If n hits EOF, pattern space is empty when script ends.
|
|
|
|
# Query: how does this interact with no newline at EOF?
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed n (flushes pattern space, terminates early)" "sed -e 'n;p'" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"a\nb\nb\nc\n" "" "a\nb\nc\n"
|
2009-07-18 14:22:26 +00:00
|
|
|
}
|
2010-08-16 14:26:33 +00:00
|
|
|
# non-GNU sed: N does _not_ flush pattern space, therefore c is eaten @ script end
|
|
|
|
# GNU sed: N flushes pattern space, therefore c is printed too @ script end
|
|
|
|
testing "sed N (flushes pattern space (GNU behavior))" "sed -e 'N;p'" \
|
|
|
|
"a\nb\na\nb\nc\n" "" "a\nb\nc\n"
|
|
|
|
|
|
|
|
testing "sed N test2" "sed ':a;N;s/\n/ /;ta'" \
|
|
|
|
"a b c\n" "" "a\nb\nc\n"
|
|
|
|
|
|
|
|
testing "sed N test3" "sed 'N;s/\n/ /'" \
|
|
|
|
"a b\nc\n" "" "a\nb\nc\n"
|
|
|
|
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed address match newline" 'sed "/b/N;/b\\nc/i woo"' \
|
|
|
|
"a\nwoo\nb\nc\nd\n" "" "a\nb\nc\nd\n"
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
|
|
|
# Multiple lines in pattern space
|
|
|
|
testing "sed N (stops at end of input) and P (prints to first newline only)" \
|
2006-03-16 15:20:45 +00:00
|
|
|
"sed -n 'N;P;p'" "a\na\nb\n" "" "a\nb\nc\n"
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
|
|
|
# Hold space
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed G (append hold space to pattern space)" 'sed G' "a\n\nb\n\nc\n\n" \
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
"" "a\nb\nc\n"
|
|
|
|
#testing "sed g/G (swap/append hold and patter space)"
|
|
|
|
#testing "sed g (swap hold/pattern space)"
|
|
|
|
|
|
|
|
testing "sed d ends script iteration" \
|
2006-03-16 15:20:45 +00:00
|
|
|
"sed -e '/ook/d;s/ook/ping/p;i woot'" "" "" "ook\n"
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
testing "sed d ends script iteration (2)" \
|
2006-03-16 15:20:45 +00:00
|
|
|
"sed -e '/ook/d;a\' -e 'bang'" "woot\nbang\n" "" "ook\nwoot\n"
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
2006-02-23 23:13:16 +00:00
|
|
|
# Multiple files, with varying newlines and NUL bytes
|
2009-07-18 14:22:26 +00:00
|
|
|
test x"$SKIP_KNOWN_BUGS" = x"" && {
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed embedded NUL" "sed -e 's/woo/bang/'" "\0bang\0woo\0" "" \
|
|
|
|
"\0woo\0woo\0"
|
2009-07-18 14:22:26 +00:00
|
|
|
}
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed embedded NUL g" "sed -e 's/woo/bang/g'" "bang\0bang\0" "" \
|
|
|
|
"woo\0woo\0"
|
2009-07-18 14:22:26 +00:00
|
|
|
test x"$SKIP_KNOWN_BUGS" = x"" && {
|
2010-05-12 13:59:32 +00:00
|
|
|
$ECHO -e "/woo/a he\0llo" > sed.commands
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed NUL in command" "sed -f sed.commands" "woo\nhe\0llo\n" "" "woo"
|
2006-03-01 16:32:01 +00:00
|
|
|
rm sed.commands
|
2009-07-18 14:22:26 +00:00
|
|
|
}
|
2006-02-23 23:13:16 +00:00
|
|
|
|
|
|
|
# sed has funky behavior with newlines at the end of file. Test lots of
|
|
|
|
# corner cases with the optional newline appending behavior.
|
|
|
|
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed normal newlines" "sed -e 's/woo/bang/' input -" "bang\nbang\n" \
|
2006-02-23 23:13:16 +00:00
|
|
|
"woo\n" "woo\n"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed leave off trailing newline" "sed -e 's/woo/bang/' input -" \
|
2006-02-23 23:13:16 +00:00
|
|
|
"bang\nbang" "woo\n" "woo"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed autoinsert newline" "sed -e 's/woo/bang/' input -" "bang\nbang" \
|
2006-02-23 23:13:16 +00:00
|
|
|
"woo" "woo"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed empty file plus cat" "sed -e 's/nohit//' input -" "one\ntwo" \
|
2006-09-17 16:28:10 +00:00
|
|
|
"" "one\ntwo"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed cat plus empty file" "sed -e 's/nohit//' input -" "one\ntwo" \
|
2006-02-23 23:13:16 +00:00
|
|
|
"one\ntwo" ""
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed append autoinserts newline" "sed -e '/woot/a woo' -" \
|
|
|
|
"woot\nwoo\n" "" "woot"
|
2016-05-06 16:25:56 +00:00
|
|
|
testing "sed append autoinserts newline 2" "sed -e '/oot/a woo' - input" \
|
|
|
|
"woot\nwoo\nboot\nwoo\n" "boot" "woot"
|
|
|
|
testing "sed append autoinserts newline 3" "sed -e '/oot/a woo' -i input && cat input" \
|
|
|
|
"boot\nwoo\n" "boot" ""
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed insert doesn't autoinsert newline" "sed -e '/woot/i woo' -" \
|
2006-02-23 23:13:16 +00:00
|
|
|
"woo\nwoot" "" "woot"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed print autoinsert newlines" "sed -e 'p' -" "one\none" "" "one"
|
|
|
|
testing "sed print autoinsert newlines two files" "sed -e 'p' input -" \
|
2006-02-23 23:13:16 +00:00
|
|
|
"one\none\ntwo\ntwo" "one" "two"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed noprint, no match, no newline" "sed -ne 's/woo/bang/' input" \
|
2006-02-23 23:13:16 +00:00
|
|
|
"" "no\n" ""
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed selective matches with one nl" "sed -ne 's/woo/bang/p' input -" \
|
2006-02-23 23:13:16 +00:00
|
|
|
"a bang\nc bang\n" "a woo\nb no" "c woo\nd no"
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed selective matches insert newline" \
|
|
|
|
"sed -ne 's/woo/bang/p' input -" "a bang\nb bang\nd bang" \
|
|
|
|
"a woo\nb woo" "c no\nd woo"
|
|
|
|
testing "sed selective matches noinsert newline" \
|
|
|
|
"sed -ne 's/woo/bang/p' input -" "a bang\nb bang" "a woo\nb woo" \
|
|
|
|
"c no\nd no"
|
|
|
|
testing "sed clusternewline" \
|
|
|
|
"sed -e '/one/a 111' -e '/two/i 222' -e p input -" \
|
2006-09-17 16:28:10 +00:00
|
|
|
"one\none\n111\n222\ntwo\ntwo" "one" "two"
|
2007-01-29 14:31:47 +00:00
|
|
|
testing "sed subst+write" \
|
2010-05-12 13:59:32 +00:00
|
|
|
"sed -e 's/i/z/' -e 'woutputw' input -; $ECHO -n X; cat outputw" \
|
2007-01-29 14:31:47 +00:00
|
|
|
"thzngy\nagaznXthzngy\nagazn" "thingy" "again"
|
|
|
|
rm outputw
|
2007-01-29 17:10:19 +00:00
|
|
|
testing "sed trailing NUL" \
|
|
|
|
"sed 's/i/z/' input -" \
|
|
|
|
"a\0b\0\nc" "a\0b\0" "c"
|
2007-03-16 23:36:58 +00:00
|
|
|
testing "sed escaped newline in command" \
|
|
|
|
"sed 's/a/z\\
|
|
|
|
z/' input" \
|
|
|
|
"z\nz" "a" ""
|
2006-02-23 23:13:16 +00:00
|
|
|
|
2006-03-01 16:32:01 +00:00
|
|
|
# Test end-of-file matching behavior
|
|
|
|
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed match EOF" "sed -e '"'$p'"'" "hello\nthere\nthere" "" \
|
|
|
|
"hello\nthere"
|
|
|
|
testing "sed match EOF two files" "sed -e '"'$p'"' input -" \
|
2006-03-01 16:32:01 +00:00
|
|
|
"one\ntwo\nthree\nfour\nfour" "one\ntwo" "three\nfour"
|
2007-01-28 23:26:15 +00:00
|
|
|
# sed match EOF inline: gnu sed 4.1.5 outputs this:
|
|
|
|
#00000000 6f 6e 65 0a 6f 6f 6b 0a 6f 6f 6b 0a 74 77 6f 0a |one.ook.ook.two.|
|
|
|
|
#00000010 0a 74 68 72 65 65 0a 6f 6f 6b 0a 6f 6f 6b 0a 66 |.three.ook.ook.f|
|
|
|
|
#00000020 6f 75 72 |our|
|
|
|
|
# which looks buggy to me.
|
2008-07-11 21:41:14 +00:00
|
|
|
$ECHO -ne "three\nfour" > input2
|
2006-03-01 16:32:01 +00:00
|
|
|
testing "sed match EOF inline" \
|
2006-03-16 15:20:45 +00:00
|
|
|
"sed -e '"'$i ook'"' -i input input2 && cat input input2" \
|
2006-03-01 16:32:01 +00:00
|
|
|
"one\nook\ntwothree\nook\nfour" "one\ntwo" ""
|
|
|
|
rm input2
|
|
|
|
|
|
|
|
# Test lie-to-autoconf
|
|
|
|
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed lie-to-autoconf" "sed --version | grep -o 'GNU sed version '" \
|
2006-03-01 16:32:01 +00:00
|
|
|
"GNU sed version \n" "" ""
|
|
|
|
|
|
|
|
# Jump to nonexistent label
|
2009-07-18 14:22:26 +00:00
|
|
|
test x"$SKIP_KNOWN_BUGS" = x"" && {
|
|
|
|
# Incompatibility: illegal jump is not detected if input is ""
|
|
|
|
# (that is, no lines at all). GNU sed 4.1.5 complains even in this case
|
|
|
|
testing "sed nonexistent label" "sed -e 'b walrus' 2>/dev/null || echo yes" \
|
2006-03-01 16:32:01 +00:00
|
|
|
"yes\n" "" ""
|
2009-07-18 14:22:26 +00:00
|
|
|
}
|
2006-03-01 16:32:01 +00:00
|
|
|
|
|
|
|
testing "sed backref from empty s uses range regex" \
|
2006-03-16 15:20:45 +00:00
|
|
|
"sed -e '/woot/s//eep \0 eep/'" "eep woot eep" "" "woot"
|
2006-03-01 16:32:01 +00:00
|
|
|
|
|
|
|
testing "sed backref from empty s uses range regex with newline" \
|
2006-03-16 15:20:45 +00:00
|
|
|
"sed -e '/woot/s//eep \0 eep/'" "eep woot eep\n" "" "woot\n"
|
2006-03-01 16:32:01 +00:00
|
|
|
|
|
|
|
# -i with no filename
|
|
|
|
|
|
|
|
touch ./- # Detect gnu failure mode here.
|
2006-03-16 15:20:45 +00:00
|
|
|
testing "sed -i with no arg [GNUFAIL]" "sed -e '' -i 2> /dev/null || echo yes" \
|
2006-03-01 16:32:01 +00:00
|
|
|
"yes\n" "" ""
|
|
|
|
rm ./- # Clean up
|
|
|
|
|
2006-07-26 17:25:08 +00:00
|
|
|
testing "sed s/xxx/[/" "sed -e 's/xxx/[/'" "[\n" "" "xxx\n"
|
|
|
|
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
# Ponder this a bit more, why "woo not found" from gnu version?
|
|
|
|
#testing "sed doesn't substitute in deleted line" \
|
2006-03-16 15:20:45 +00:00
|
|
|
# "sed -e '/ook/d;s/ook//;t woo;a bang;'" "bang" "" "ook\n"
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
|
|
|
|
# This makes both seds very unhappy. Why?
|
|
|
|
#testing "sed -g (exhaustive)" "sed -e 's/[[:space:]]*/,/g'" ",1,2,3,4,5," \
|
|
|
|
# "" "12345"
|
|
|
|
|
2011-08-16 11:29:34 +00:00
|
|
|
# testing "description" "commands" "result" "infile" "stdin"
|
2008-02-28 17:59:01 +00:00
|
|
|
|
|
|
|
testing "sed n command must reset 'substituted' bit" \
|
|
|
|
"sed 's/1/x/;T;n;: next;s/3/y/;t quit;n;b next;: quit;q'" \
|
|
|
|
"0\nx\n2\ny\n" "" "0\n1\n2\n3\n"
|
|
|
|
|
2009-06-30 17:19:37 +00:00
|
|
|
testing "sed d does not break n,m matching" \
|
|
|
|
"sed -n '1d;1,3p'" \
|
|
|
|
"second\nthird\n" "" "first\nsecond\nthird\nfourth\n"
|
|
|
|
|
|
|
|
testing "sed d does not break n,regex matching" \
|
|
|
|
"sed -n '1d;1,/hir/p'" \
|
|
|
|
"second\nthird\n" "" "first\nsecond\nthird\nfourth\n"
|
|
|
|
|
|
|
|
testing "sed d does not break n,regex matching #2" \
|
|
|
|
"sed -n '1,5d;1,/hir/p'" \
|
|
|
|
"second2\nthird2\n" "" \
|
|
|
|
"first\nsecond\nthird\nfourth\n""first2\nsecond2\nthird2\nfourth2\n"
|
|
|
|
|
2009-07-10 09:55:20 +00:00
|
|
|
testing "sed 2d;2,1p (gnu compat)" \
|
|
|
|
"sed -n '2d;2,1p'" \
|
|
|
|
"third\n" "" \
|
|
|
|
"first\nsecond\nthird\nfourth\n"
|
|
|
|
|
2009-08-16 23:35:04 +00:00
|
|
|
# Regex means: "match / at BOL or nothing, then one or more not-slashes".
|
|
|
|
# The bug was that second slash in /usr/lib was treated as "at BOL" too.
|
|
|
|
testing "sed beginning (^) matches only once" \
|
|
|
|
"sed 's,\(^/\|\)[^/][^/]*,>\0<,g'" \
|
|
|
|
">/usr</>lib<\n" "" \
|
|
|
|
"/usr/lib\n"
|
|
|
|
|
2010-04-20 02:36:07 +00:00
|
|
|
testing "sed c" \
|
|
|
|
"sed 'crepl'" \
|
|
|
|
"repl\nrepl\n" "" \
|
|
|
|
"first\nsecond\n"
|
|
|
|
|
2010-04-20 08:00:03 +00:00
|
|
|
testing "sed nested {}s" \
|
|
|
|
"sed '/asd/ { p; /s/ { s/s/c/ }; p; q }'" \
|
|
|
|
"qwe\nasd\nacd\nacd\n" "" \
|
|
|
|
"qwe\nasd\nzxc\n"
|
|
|
|
|
2010-05-11 23:49:04 +00:00
|
|
|
testing "sed a cmd ended by double backslash" \
|
|
|
|
"sed -e '/| one /a \\
|
|
|
|
| three \\\\' -e '/| one-/a \\
|
|
|
|
| three-* \\\\'" \
|
|
|
|
' | one \\
|
|
|
|
| three \\
|
|
|
|
| two \\
|
|
|
|
' '' \
|
|
|
|
' | one \\
|
|
|
|
| two \\
|
|
|
|
'
|
|
|
|
|
2016-04-24 14:18:03 +00:00
|
|
|
testing "sed a cmd understands \\n,\\t,\\r" \
|
|
|
|
"sed '/1/a\\\\t\\rzero\\none\\\\ntwo\\\\\\nthree'" \
|
|
|
|
"\
|
|
|
|
line1
|
|
|
|
\t\rzero
|
|
|
|
one\\\\ntwo\\
|
|
|
|
three
|
|
|
|
" "" "line1\n"
|
|
|
|
|
|
|
|
testing "sed i cmd understands \\n,\\t,\\r" \
|
|
|
|
"sed '/1/i\\\\t\\rzero\\none\\\\ntwo\\\\\\nthree'" \
|
|
|
|
"\
|
|
|
|
\t\rzero
|
|
|
|
one\\\\ntwo\\
|
|
|
|
three
|
|
|
|
line1
|
|
|
|
" "" "line1\n"
|
|
|
|
|
2010-08-01 02:14:46 +00:00
|
|
|
# first three lines are deleted; 4th line is matched and printed by "2,3" and by "4" ranges
|
2010-06-03 23:29:52 +00:00
|
|
|
testing "sed with N skipping lines past ranges on next cmds" \
|
|
|
|
"sed -n '1{N;N;d};1p;2,3p;3p;4p'" \
|
|
|
|
"4\n4\n" "" "1\n2\n3\n4\n"
|
|
|
|
|
2010-08-01 02:14:46 +00:00
|
|
|
testing "sed -i with address modifies all files, not only first" \
|
|
|
|
"cp input input2; sed -i -e '1s/foo/bar/' input input2 && cat input input2; rm input2" \
|
2010-08-01 02:19:59 +00:00
|
|
|
"bar\nbar\n" "foo\n" ""
|
2010-08-01 02:14:46 +00:00
|
|
|
|
2011-05-02 22:52:22 +00:00
|
|
|
testing "sed understands \r" \
|
|
|
|
"sed 's/r/\r/'" \
|
|
|
|
"\rrr\n" "" "rrr\n"
|
2010-08-01 02:14:46 +00:00
|
|
|
|
2011-08-16 11:29:34 +00:00
|
|
|
testing "sed -i finishes ranges correctly" \
|
|
|
|
"sed '1,2d' -i input; echo \$?; cat input" \
|
|
|
|
"0\n3\n4\n" "1\n2\n3\n4\n" ""
|
|
|
|
|
2012-06-04 12:44:47 +00:00
|
|
|
testing "sed zero chars match/replace advances correctly 1" \
|
|
|
|
"sed 's/l*/@/g'" \
|
|
|
|
"@h@e@o@\n" "" "helllo\n"
|
|
|
|
|
|
|
|
testing "sed zero chars match/replace advances correctly 2" \
|
|
|
|
"sed 's [^ .]* x g'" \
|
|
|
|
"x x.x\n" "" " a.b\n"
|
|
|
|
|
2012-06-08 08:25:31 +00:00
|
|
|
testing "sed zero chars match/replace logic must not falsely trigger here 1" \
|
2012-06-07 14:34:57 +00:00
|
|
|
"sed 's/a/A/g'" \
|
|
|
|
"_AAA1AA\n" "" "_aaa1aa\n"
|
|
|
|
|
2012-06-08 08:25:31 +00:00
|
|
|
testing "sed zero chars match/replace logic must not falsely trigger here 2" \
|
|
|
|
"sed 's/ *$/_/g'" \
|
|
|
|
"qwerty_\n" "" "qwerty\n"
|
|
|
|
|
2013-07-21 20:09:44 +00:00
|
|
|
testing "sed /\$_in_regex/ should not match newlines, only end-of-line" \
|
|
|
|
"sed ': testcont; /\\\\$/{ =; N; b testcont }'" \
|
|
|
|
"\
|
|
|
|
this is a regular line
|
|
|
|
2
|
|
|
|
line with \\
|
|
|
|
continuation
|
|
|
|
more regular lines
|
|
|
|
5
|
|
|
|
line with \\
|
|
|
|
continuation
|
|
|
|
" \
|
|
|
|
"" "\
|
|
|
|
this is a regular line
|
|
|
|
line with \\
|
|
|
|
continuation
|
|
|
|
more regular lines
|
|
|
|
line with \\
|
|
|
|
continuation
|
|
|
|
"
|
|
|
|
|
2014-09-15 23:11:13 +00:00
|
|
|
testing "sed s///NUM test" \
|
|
|
|
"sed -e 's/a/b/2; s/a/c/g'" \
|
|
|
|
"cb\n" "" "aa\n"
|
|
|
|
|
2015-04-17 12:24:55 +00:00
|
|
|
testing "sed /regex/,N{...} addresses work" \
|
|
|
|
"sed /^2/,2{d}" \
|
|
|
|
"1\n3\n4\n5\n" \
|
|
|
|
"" \
|
|
|
|
"1\n2\n3\n4\n5\n"
|
|
|
|
|
|
|
|
testing "sed /regex/,+N{...} addresses work" \
|
|
|
|
"sed /^2/,+2{d}" \
|
|
|
|
"1\n5\n" \
|
|
|
|
"" \
|
|
|
|
"1\n2\n3\n4\n5\n"
|
|
|
|
|
|
|
|
testing "sed /regex/,+N{...} -i works" \
|
|
|
|
"cat - >input2; sed /^4/,+2{d} -i input input2; echo \$?; cat input input2; rm input2" \
|
|
|
|
"0\n""1\n2\n3\n7\n8\n""1\n2\n7\n8\n" \
|
|
|
|
"1\n2\n3\n4\n5\n6\n7\n8\n" \
|
|
|
|
"1\n2\n4\n5\n6\n7\n8\n" \
|
|
|
|
|
|
|
|
# GNU sed 4.2.1 would also accept "/^4/,+{d}" with the same meaning, we don't
|
|
|
|
testing "sed /regex/,+0{...} -i works" \
|
|
|
|
"cat - >input2; sed /^4/,+0{d} -i input input2; echo \$?; cat input input2; rm input2" \
|
|
|
|
"0\n""1\n2\n3\n5\n6\n7\n8\n""1\n2\n5\n6\n7\n8\n" \
|
|
|
|
"1\n2\n3\n4\n5\n6\n7\n8\n" \
|
|
|
|
"1\n2\n4\n5\n6\n7\n8\n" \
|
|
|
|
|
|
|
|
# GNU sed 4.2.1 would also accept "/^4/,+d" with the same meaning, we don't
|
|
|
|
testing "sed /regex/,+0<cmd> -i works" \
|
|
|
|
"cat - >input2; sed /^4/,+0d -i input input2; echo \$?; cat input input2; rm input2" \
|
|
|
|
"0\n""1\n2\n3\n5\n6\n7\n8\n""1\n2\n5\n6\n7\n8\n" \
|
|
|
|
"1\n2\n3\n4\n5\n6\n7\n8\n" \
|
|
|
|
"1\n2\n4\n5\n6\n7\n8\n" \
|
|
|
|
|
2016-01-24 14:52:16 +00:00
|
|
|
testing "sed 's///w FILE'" \
|
|
|
|
"sed 's/qwe/ZZZ/wz'; cat z; rm z" \
|
|
|
|
"123\nZZZ\nasd\n""ZZZ\n" \
|
|
|
|
"" \
|
|
|
|
"123\nqwe\nasd\n"
|
|
|
|
|
2011-08-16 11:29:34 +00:00
|
|
|
# testing "description" "commands" "result" "infile" "stdin"
|
2010-05-11 23:49:04 +00:00
|
|
|
|
Ok, I've converted the contents of the "testing/sed" directory into a
sed.tests file. My brain hurts now. (Lots of boggling at sed minutiae and
corner cases and going "why is gnu giving that output". The behavior of N
and n with regard to EOF are only understandable if you read the Open Group
spec, not if you read the sed info page, by the way...)
Some of the existing sed tests are just nuts. For example, sed-next-line is
testing for our behavior (which is wrong), and would fail if run against gnu
sed (which was getting it right. Again, this was a spec-boggling moment,
with much head scratching. I've got to add a debug mode where the stuff
output by the p command is a different color from the stuff output by normal
end of script printing (when not suppressed by -n).)
As for sed-handles-unsatisifed-backrefs: what is this test trying to _do_? I
ran it against gnu sed and got an error message, and this behavior sounds
perfectly reasonable. (It _is_ an unsatisfied backref.) The fact we
currently ignore this case (and treat \1 as an empty string) isn't really
behavior we should have a test depend on for success.
The remaining one is sed-aic-commands, which is long and complicated. I'm
trying to figure out if I should chop this into a number of smaller tests, or
if having one big "does-many-things" test is a good idea.
In any case, the _next_ step is to go through the Open Group standard and
make tests for every case not yet covered. (And there are plenty. There
are few comments in the file already.) Plus I have notes about corner
cases from development that I need to collate and put into here. This file
is maybe the first 1/3 of a truly comprehensive sed test.
Rob
2005-11-10 06:26:40 +00:00
|
|
|
exit $FAILCOUNT
|