diff options
Diffstat (limited to 'usr/src/cmd/tail/tests/tailtests.sh')
| -rwxr-xr-x[-rw-r--r--] | usr/src/cmd/tail/tests/tailtests.sh | 174 |
1 files changed, 148 insertions, 26 deletions
diff --git a/usr/src/cmd/tail/tests/tailtests.sh b/usr/src/cmd/tail/tests/tailtests.sh index d3a8bb1cf2..69ca0e3ad1 100644..100755 --- a/usr/src/cmd/tail/tests/tailtests.sh +++ b/usr/src/cmd/tail/tests/tailtests.sh @@ -13,9 +13,15 @@ # # Copyright 2010 Chris Love. All rights reserved. -# Copyright (c) 2013, Joyent, Inc. All rights reserved. +# Copyright 2017, Joyent, Inc. # +BLOCK="" +for i in {1..512}; do + BLOCK+="." +done + + checktest() { local actual=$1 @@ -31,6 +37,17 @@ checktest() fi } +checkfail() +{ + printf "foobar" | $PROG $* &> /dev/null + + if [[ $? -eq 0 ]]; then + printf '%s: test "test %s": was supposed to fail\n' "$CMD" "$*" + else + printf '%s: test "%s": pass\n' "$CMD" "$*" + fi +} + # # Test cases for 'tail', some based on CoreUtils test cases (validated # with legacy Solaris 'tail' and/or xpg4 'tail'). Note that this is designed @@ -137,18 +154,34 @@ o=`echo -e "y\n"` a=`echo -e "x\ny\n" | $PROG +2` checktest "$a" "$o" 15 -o=`echo -e "yyz"` -a=`echo -e "xyyyyyyyyyyz" | $PROG +10c` +o=`printf "yyz\n"` +a=`printf "xyyyyyyyyyyz\n" | $PROG +10c` checktest "$a" "$o" 16 -o=`echo -e "y\ny\nz"` -a=`echo -e "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz" | $PROG +10l` +o=`printf "y\ny\nz\n"` +a=`printf "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz\n" | $PROG +10l` checktest "$a" "$o" 17 -o=`echo -e "y\ny\ny\ny\ny\ny\ny\ny\ny\nz"` -a=`echo -e "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz" | $PROG -10l` +o=`printf "y\ny\ny\ny\ny\ny\ny\ny\ny\nz\n"` +a=`printf "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz\n" | $PROG -10l` checktest "$a" "$o" 18 +a=`printf "o\nn\nm\nl\nk\nj\ni\nh\ng\n"` +o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG +10lr` +checktest "$a" "$o" 19 + +a=`printf "o\nn\nm\nl\nk\nj\ni\nh\ng\nf\n"` +o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG -10lr` +checktest "$a" "$o" 20 + +a=`printf "o\nn\nm\nl\n"` +o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG +10cr` +checktest "$a" "$o" 21 + +a=`printf "o\nn\nm\nl\nk\n"` +o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG -10cr` +checktest "$a" "$o" 22 + # # For reasons that are presumably as accidental as they are ancient, legacy # (and closed) Solaris tail(1) allows +c, +l and -l to be aliases for +10c, @@ -156,22 +189,54 @@ checktest "$a" "$o" 18 # behavior is functional. # if [[ `uname -s` == "SunOS" ]]; then - o=`echo -e "yyz"` - a=`echo -e "xyyyyyyyyyyz" | $PROG +c` + o=`printf "yyz\n"` + a=`printf "xyyyyyyyyyyz\n" | $PROG +c` checktest "$a" "$o" 16a - o=`echo -e "y\ny\nz"` - a=`echo -e "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz" | $PROG +l` + o=`printf "y\ny\nz\n"` + a=`printf "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz\n" | $PROG +l` checktest "$a" "$o" 17a - o=`echo -e "y\ny\ny\ny\ny\ny\ny\ny\ny\nz"` - a=`echo -e "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz" | $PROG -l` + o=`printf "y\ny\ny\ny\ny\ny\ny\ny\ny\nz\n"` + a=`printf "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz\n" | $PROG -l` checktest "$a" "$o" 18a + + a=`printf "o\nn\nm\nl\nk\nj\ni\nh\ng\n"` + + o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG +lr` + checktest "$a" "$o" 19a + + o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG +l -r` + checktest "$a" "$o" 19a + + a=`printf "o\nn\nm\nl\nk\nj\ni\nh\ng\nf\n"` + + o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG -lr` + checktest "$a" "$o" 20a + + o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG -l -r` + checktest "$a" "$o" 20b + + a=`printf "o\nn\nm\nl\n"` + + o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG +cr` + checktest "$a" "$o" 21a + + o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG +c -r` + checktest "$a" "$o" 21a + + a=`printf "o\nn\nm\nl\nk\n"` + + o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG -cr` + checktest "$a" "$o" 22a + + o=`printf "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\n" | $PROG -c -r` + checktest "$a" "$o" 22b fi o=`echo -e "c\nb\na"` a=`echo -e "a\nb\nc" | $PROG -r` -checktest "$a" "$o" 19 +checktest "$a" "$o" 23 # # Now we want to do a series of follow tests. @@ -201,7 +266,7 @@ sleep 1 o=`echo -e "a\nb\nc\nd\ne\nf\n"` a=`cat $out` -checktest "$a" "$o" 20 +checktest "$a" "$o" 24 rm $follow # @@ -220,7 +285,7 @@ sleep 1 o=`echo -e "a\nb\nc\nd\ne\nf\n"` a=`cat $out` -checktest "$a" "$o" 21 +checktest "$a" "$o" 25 rm $moved # @@ -239,7 +304,7 @@ sleep 1 o=`echo -e "a\nb\nc\nd\ne\nf\ng\nh\ni\n"` a=`cat $out` -checktest "$a" "$o" 22 +checktest "$a" "$o" 26 rm $follow # @@ -259,7 +324,7 @@ sleep 1 o=`echo -e "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\no\np\nq"` a=`cat $out` -checktest "$a" "$o" 23 +checktest "$a" "$o" 27 rm $follow # @@ -280,7 +345,7 @@ sleep 1 o=`echo -e "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\no\np\nq"` a=`cat $out` -checktest "$a" "$o" 24 +checktest "$a" "$o" 28 rm $moved # @@ -299,7 +364,7 @@ sleep 1 o=`echo -e "a\nb\nc\nd\ne\nf\ng\nh\ni\n"` a=`cat $out` -checktest "$a" "$o" 25 +checktest "$a" "$o" 29 rm $follow # @@ -326,7 +391,7 @@ sleep 1 o=`echo -e "a\nb\nc\nd\ne\nf\n"` a=`cat $out` -checktest "$a" "$o" 26 +checktest "$a" "$o" 30 rm $moved # @@ -365,7 +430,7 @@ four ==> $follow <== five" a=`cat $out` -checktest "$a" "$o" 27 +checktest "$a" "$o" 31 rm $follow $moved if [[ `uname -s` == "SunOS" ]]; then @@ -401,7 +466,7 @@ EOF o=`echo -e "0\n1\n2\n3\n5\n6\n7\n8\n9\n"` a=`cat $out` - checktest "$a" "$o" 27a + checktest "$a" "$o" 31a rm $follow cat /dev/null > $follow @@ -433,7 +498,7 @@ EOF o=`echo -e "0\n1\n2\n3\n5\n6\n7\n8\n9\n"` a=`cat $out` - checktest "$a" "$o" 27b + checktest "$a" "$o" 31b rm $moved # @@ -453,7 +518,7 @@ EOF o=`echo -e "a\nb\nc\nd\ne\nf\ng\nh\ni\n"` a=`cat $out` - checktest "$a" "$o" 27c + checktest "$a" "$o" 31c fi # @@ -472,7 +537,64 @@ kill $child a=`sort $out | uniq -c | sort -n | tail -1 | awk '{ print $1 }'` o=1 -checktest "$a" "$o" 28 +checktest "$a" "$o" 32 + +# Test different ways of specifying character offsets +o=`printf "d\n"` + +a=`printf "hello\nworld\n" | $PROG -c2` +checktest "$a" "$o" 33 + +a=`printf "hello\nworld\n" | $PROG -c-2` +checktest "$a" "$o" 34 + +a=`printf "hello\nworld\n" | $PROG -c 2` +checktest "$a" "$o" 35 + +a=`printf "hello\nworld\n" | $PROG -c -2` +checktest "$a" "$o" 36 + +a=`printf "hello\nworld\n" | $PROG -2c` +checktest "$a" "$o" 37 + +o=`printf "llo\nworld\n"` + +a=`printf "hello\nworld\n" | $PROG -c +3` +checktest "$a" "$o" 38 + +a=`printf "hello\nworld\n" | $PROG -c+3` +checktest "$a" "$o" 39 + +a=`printf "hello\nworld\n" | $PROG +3c` +checktest "$a" "$o" 40 + +# Test various ways of specifying block offsets +o=`printf "$BLOCK"` + +a=`printf "${BLOCK//./x}$BLOCK" | $PROG -b1` +checktest "$a" "$o" 41 + +a=`printf "${BLOCK//./x}$BLOCK" | $PROG -b 1` +checktest "$a" "$o" 42 + +a=`printf "${BLOCK//./x}$BLOCK" | $PROG -b -1` +checktest "$a" "$o" 43 + +a=`printf "${BLOCK//./x}$BLOCK" | $PROG -b +2` +checktest "$a" "$o" 44 + +# Test that illegal arguments aren't allowed + +checkfail +b2 +checkfail +c3 +checkfail -l3 +checkfail -cz +checkfail -bz +checkfail -nz +checkfail -3n +checkfail +3n +checkfail +n3 +checkfail -lfoobar echo "$CMD: completed" |
