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 spe
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -0,0 +1,109 @@ | |
| + | #!/bin/sh |
| + | |
| + | # SUSv3 compliant sed tests. |
| + | # Copyright 2005 by Rob Landley <[email protected]> |
| + | # Licensed under GPL v2, see file LICENSE for details. |
| + | |
| + | [ -z "$COMMAND" ] && COMMAND=sed |
| + | . testing.sh |
| + | |
| + | # testing "description" "arguments" "result" "infile" "stdin" |
| + | |
| + | # Corner cases |
| + | testing "sed as cat" '"" -' "hello\n" "" "hello\n" |
| + | testing "sed handles empty lines" "-e 's/\$/@/'" "@\n" "" "\n" |
| + | |
| + | # no files (stdin) |
| + | # explicit stdin |
| + | # mix files and stdin (various orders) |
| + | # list stdin twice |
| + | # Trailing EOF. |
| + | # Multiple files: first no EOF, second length 0. |
| + | # Match $, at end of each file or all files? |
| + | # First no EOF, second no matches at all. |
| + | # -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 |
| + | |
| + | # command list |
| + | testing "sed accepts blanks before command" "-e '1 d'" "" "" "" |
| + | testing "sed accepts newlines in -e" "-e 'i\ |
| + | 1 |
| + | a\ |
| + | 3'" "1\n2\n3\n" "" "2\n" |
| + | testing "sed accepts multiple -e" "-e 'i\' -e '1' -e 'a\' -e '3'" \ |
| + | "1\n2\n3\n" "" "2\n" |
| + | |
| + | # substitutions |
| + | testing "sed -n" "-n -e s/foo/bar/ -e s/bar/baz/" "" "" "foo\n" |
| + | testing "sed s//p" "-e s/foo/bar/p -e s/bar/baz/p" "bar\nbaz\nbaz\n" \ |
| + | "" "foo\n" |
| + | testing "sed -n s//p" "-ne s/abc/def/p" "def\n" "" "abc\n" |
| + | testing "sed s//g (exhaustive)" "-e 's/[[:space:]]*/,/g'" ",1,2,3,4,5,\n" \ |
| + | "" "12345\n" |
| + | testing "sed s arbitrary delimiter" "-e 's woo boing '" "boing\n" "" "woo\n" |
| + | testing "sed s chains" "-e s/foo/bar/ -e s/bar/baz/" "baz\n" "" "foo\n" |
| + | testing "sed s chains2" "-e s/foo/bar/ -e s/baz/nee/" "bar\n" "" "foo\n" |
| + | testing "sed s [delimiter]" "-e 's@[@]@@'" "onetwo" "" "one@two" |
| + | |
| + | # branch |
| + | testing "sed b (branch)" "-e 'b one;p;: one'" "foo\n" "" "foo\n" |
| + | testing "sed b (branch with no label jumps to end)" "-e 'b;p'" \ |
| + | "foo\n" "" "foo\n" |
| + | |
| + | # test and branch |
| + | testing "sed t (test/branch)" "-e 's/a/1/;t one;p;: one;p'" \ |
| + | "1\n1\nb\nb\nb\nc\nc\nc\n" "" "a\nb\nc\n" |
| + | testing "sed t (test/branch clears test bit)" "-e 's/a/b/;:loop;t loop'" \ |
| + | "b\nb\nc\n" "" "a\nb\nc\n" |
| + | testing "sed T (!test/branch)" "-e 's/a/1/;T notone;p;: notone;p'" \ |
| + | "1\n1\n1\nb\nb\nc\nc\n" "" "a\nb\nc\n" |
| + | |
| + | # 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? |
| + | testing "sed n (flushes pattern space, terminates early)" "-e 'n;p'" \ |
| + | "a\nb\nb\nc\n" "" "a\nb\nc\n" |
| + | # N does _not_ flush pattern space, therefore c is still in there @ script end. |
| + | testing "sed N (doesn't flush pattern space when terminating)" "-e 'N;p'" \ |
| + | "a\nb\na\nb\nc\n" "" "a\nb\nc\n" |
| + | testing "sed address match newline" '"/b/N;/b\\nc/i woo"' "a\nwoo\nb\nc\nd\n" \ |
| + | "" "a\nb\nc\nd\n" |
| + | |
| + | # Multiple lines in pattern space |
| + | testing "sed N (stops at end of input) and P (prints to first newline only)" \ |
| + | "-n 'N;P;p'" "a\na\nb\n" "" "a\nb\nc\n" |
| + | |
| + | # Hold space |
| + | testing "sed G (append hold space to pattern space)" 'G' "a\n\nb\n\nc\n\n" \ |
| + | "" "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" \ |
| + | "-e '/ook/d;s/ook/ping/p;i woot'" "" "" "ook\n" |
| + | testing "sed d ends script iteration (2)" \ |
| + | "-e '/ook/d;a\' -e 'bang'" "woot\nbang\n" "" "ook\nwoot\n" |
| + | |
| + | # Ponder this a bit more, why "woo not found" from gnu version? |
| + | #testing "sed doesn't substitute in deleted line" \ |
| + | # "-e '/ook/d;s/ook//;t woo;a bang;'" "bang" "" "ook\n" |
| + | |
| + | # This makes both seds very unhappy. Why? |
| + | #testing "sed -g (exhaustive)" "sed -e 's/[[:space:]]*/,/g'" ",1,2,3,4,5," \ |
| + | # "" "12345" |
| + | |
| + | exit $FAILCOUNT |
| @@ -1 +0,0 @@ | |
| - | busybox sed -e '1 d' </dev/null |
| @@ -1,134 +0,0 @@ | |
| - | cat - >input <<EOF |
| - | 2i\\ |
| - | before 2 |
| - | 5c\\ |
| - | Change 5 |
| - | 10a\\ |
| - | After 10 |
| - | 22i\\ |
| - | before 22\\ |
| - | Continued |
| - | 25c\\ |
| - | Change 25\\ |
| - | Continued |
| - | 20a\\ |
| - | After 20\\ |
| - | Continued |
| - | 32i\\ |
| - | before 32\\ |
| - | Continued 1\\ |
| - | Continued 2\\ |
| - | Continued 3 |
| - | 35c\\ |
| - | Change 35\\ |
| - | Continued 1\\ |
| - | Continued 2\\ |
| - | Continued 3 |
| - | 30a\\ |
| - | After 30\\ |
| - | Continued 1\\ |
| - | Continued 2\\ |
| - | Continued 3 |
| - | EOF |
| - | busybox sed -f input >output <<EOF |
| - | 1 y |
| - | 2 y |
| - | 3 y |
| - | 4 y |
| - | 5 y |
| - | 6 y |
| - | 7 y |
| - | 8 y |
| - | 9 y |
| - | 10 y |
| - | 11 y |
| - | 12 y |
| - | 13 y |
| - | 14 y |
| - | 15 y |
| - | 16 y |
| - | 17 y |
| - | 18 y |
| - | 19 y |
| - | 20 y |
| - | 21 y |
| - | 22 y |
| - | 23 y |
| - | 24 y |
| - | 25 y |
| - | 26 y |
| - | 27 y |
| - | 28 y |
| - | 29 y |
| - | 30 y |
| - | 31 y |
| - | 32 y |
| - | 33 y |
| - | 34 y |
| - | 35 y |
| - | 36 y |
| - | 37 y |
| - | 38 y |
| - | 39 y |
| - | 40 y |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | 1 y |
| - | before 2 |
| - | 2 y |
| - | 3 y |
| - | 4 y |
| - | Change 5 |
| - | 6 y |
| - | 7 y |
| - | 8 y |
| - | 9 y |
| - | 10 y |
| - | After 10 |
| - | 11 y |
| - | 12 y |
| - | 13 y |
| - | 14 y |
| - | 15 y |
| - | 16 y |
| - | 17 y |
| - | 18 y |
| - | 19 y |
| - | 20 y |
| - | After 20 |
| - | Continued |
| - | 21 y |
| - | before 22 |
| - | Continued |
| - | 22 y |
| - | 23 y |
| - | 24 y |
| - | Change 25 |
| - | Continued |
| - | 26 y |
| - | 27 y |
| - | 28 y |
| - | 29 y |
| - | 30 y |
| - | After 30 |
| - | Continued 1 |
| - | Continued 2 |
| - | Continued 3 |
| - | 31 y |
| - | before 32 |
| - | Continued 1 |
| - | Continued 2 |
| - | Continued 3 |
| - | 32 y |
| - | 33 y |
| - | 34 y |
| - | Change 35 |
| - | Continued 1 |
| - | Continued 2 |
| - | Continued 3 |
| - | 36 y |
| - | 37 y |
| - | 38 y |
| - | 39 y |
| - | 40 y |
| - | EOF |
| @@ -1,13 +0,0 @@ | |
| - | busybox sed 'G'>output <<EOF |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | a |
| - | |
| - | b |
| - | |
| - | c |
| - | |
| - | EOF |
| @@ -1,19 +0,0 @@ | |
| - | # This will fail if CONFIG_FEATURE_SED_GNU_COMPATABILITY is defined |
| - | busybox sed 'N;p'>output <<EOF |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | |
| - | set +e |
| - | cmp -s output - <<EOF |
| - | a |
| - | b |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | if [ $? != 0 ] ; then |
| - | exit 0; |
| - | fi |
| - | exit 1; |
| @@ -1 +0,0 @@ | |
| - | test "$(echo foo | busybox sed 'b one;p;: one')" = foo |
| @@ -1,15 +0,0 @@ | |
| - | busybox sed 's/a/1/;t one;p;: one;p'>output <<EOF |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | 1 |
| - | 1 |
| - | b |
| - | b |
| - | b |
| - | c |
| - | c |
| - | c |
| - | EOF |
| @@ -1,14 +0,0 @@ | |
| - | busybox sed 's/a/1/;T notone;p;: notone;p'>output <<EOF |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | 1 |
| - | 1 |
| - | 1 |
| - | b |
| - | b |
| - | c |
| - | c |
| - | EOF |
| @@ -1,11 +0,0 @@ | |
| - | #XFAIL |
| - | busybox sed 's/a/b/;:loop;t loop'>output <<EOF |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | b |
| - | b |
| - | c |
| - | EOF |
| @@ -1 +0,0 @@ | |
| - | test "$(echo foo | busybox sed 'b;p')" = foo |
| @@ -1 +0,0 @@ | |
| - | test "$(echo foo | busybox sed -e s/foo/bar/ -e s/bar/baz/)" = baz |
| @@ -1 +0,0 @@ | |
| - | test x"$(echo foo | busybox -n sed -e s/foo/bar/ -e s/foo/baz/)" = x |
| @@ -1,2 +0,0 @@ | |
| - | echo foo | busybox sed -e /foo/d -e s/foo/bar/ >foo |
| - | cmp foo /dev/null |
| @@ -1 +0,0 @@ | |
| - | test "$(echo fu/bar | busybox sed -e 's/[/]//')" = fubar |
| @@ -1 +0,0 @@ | |
| - | test `echo | busybox sed -e 's/$/@/'` = @ |
| @@ -1,6 +0,0 @@ | |
| - | busybox sed -e 's/.*root=/\1/' >output <<EOF |
| - | BOOT_IMAGE=vmlinuz root=/dev/hda5 initrd=init1 |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | /dev/hda5 initrd=init1 |
| - | EOF |
| @@ -1,12 +0,0 @@ | |
| - | busybox sed 'n;p'>output <<EOF |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | a |
| - | b |
| - | b |
| - | c |
| - | c |
| - | EOF |
| @@ -1,4 +0,0 @@ | |
| - | busybox sed -e s/1/2/g -e s/3/4/g >output <<EOF |
| - | 1 |
| - | EOF |
| - | echo 2 | cmp -s output - |
| @@ -1 +0,0 @@ | |
| - | test "`echo '12345' | busybox sed -e 's/[[:space:]]*/,/g')` = ',1,2,3,4,5,'" |
| @@ -1,10 +0,0 @@ | |
| - | # FEATURE: CONFIG_FEATURE_SED_EMBEDED_NEWLINE |
| - | busybox sed -n 'N;/a\nb/p'>output <<EOF |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | a |
| - | b |
| - | EOF |
| @@ -1,9 +0,0 @@ | |
| - | echo 2 | busybox sed -e 'i\ |
| - | 1 |
| - | a\ |
| - | 3' > output |
| - | cmp output - <<EOF |
| - | 1 |
| - | 2 |
| - | 3 |
| - | EOF |
| @@ -1,9 +0,0 @@ | |
| - | busybox sed 's/foo/bar/p'>output <<EOF |
| - | foo |
| - | bar |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | bar |
| - | bar |
| - | bar |
| - | EOF |
| @@ -1,10 +0,0 @@ | |
| - | busybox sed -n 'N;P;p'>output <<EOF |
| - | a |
| - | b |
| - | c |
| - | EOF |
| - | cmp -s output - <<EOF |
| - | a |
| - | a |
| - | b |
| - | EOF |