1 #!/bin/bash
2 #
3 #
4 # This file and its contents are supplied under the terms of the
5 # Common Development and Distribution License ("CDDL"), version 1.0.
6 # You may only use this file in accordance with the terms of version
7 # 1.0 of the CDDL.
8 #
9 # A full copy of the text of the CDDL should have accompanied this
10 # source. A copy is of the CDDL is also available via the Internet
11 # at http://www.illumos.org/license/CDDL.
12 #
13
14 #
15 # Copyright 2010 Chris Love. All rights reserved.
16 #
17
18
19 #
20 # Test cases for 'tail', some based on CoreUtils test cases (validated
21 # with legacy Solaris 'tail' and/or xpg4 'tail')
22 #
23 PROG=/usr/bin/tail
24
25 case $1 in
26 -x)
27 PROG=/usr/xpg4/bin/tail
28 ;;
29 -o)
30 PROG=$2
31 ;;
32 -?)
33 echo "Usage: tailtests.sh [-x][-o <override tail executable>]"
34 exit 1
35 ;;
36 esac
37
38 echo "Using $PROG"
39
40 o=`echo -e "bcd"`
41 a=`echo -e "abcd" | $PROG +2c`
42 [[ "$a" != "$o" ]] && echo "Fail test 1 - $a"
43
44 o=`echo -e ""`
45 a=`echo "abcd" | $PROG +8c`
46 [[ "$a" != "$o" ]] && echo "Fail test 2 - $a"
47
48 o=`echo -e "abcd"`
49 a=`echo "abcd" | $PROG -9c`
50 [[ "$a" != "$o" ]] && echo "Fail test 3 - $a"
51
52 o=`echo -e "x"`
53 a=`echo -e "x" | $PROG -1l`
54 [[ "$a" != "x" ]] && echo "Fail test 4 - $a"
55
56 o=`echo -e "\n"`
57 a=`echo -e "x\ny\n" | $PROG -1l`
58 [[ "$a" != "$o" ]] && echo "Fail test 5 - $a"
59
60 o=`echo -e "y\n"`
61 a=`echo -e "x\ny\n" | $PROG -2l`
62 [[ "$a" != "$o" ]] && echo "Fail test 6 - $a"
63
64 o=`echo -e "y"`
65 a=`echo -e "x\ny" | $PROG -1l`
66 [[ "$a" != "$o" ]] && echo "Fail test 7 - $a"
67
68 o=`echo -e "x\ny\n"`
69 a=`echo -e "x\ny\n" | $PROG +1l`
70 [[ "$a" != "$o" ]] && echo "Fail test 8 - $a"
71
72 o=`echo -e "y\n"`
73 a=`echo -e "x\ny\n" | $PROG +2l`
74 [[ "$a" != "$o" ]] && echo "Fail test 9 - $a"
75
76 o=`echo -e "x"`
77 a=`echo -e "x" | $PROG -1`
78 [[ "$a" != "$o" ]] && echo "Fail test 10 - $a"
79
80 o=`echo -e "\n"`
81 a=`echo -e "x\ny\n" | $PROG -1`
82 [[ "$a" != "$o" ]] && echo "Fail test 11 - $a"
83
84 o=`echo -e "y\n"`
85 a=`echo -e "x\ny\n" | $PROG -2`
86 [[ "$a" != "$o" ]] && echo "Fail test 12 - $a"
87
88 o=`echo -e "y"`
89 a=`echo -e "x\ny" | $PROG -1`
90 [[ "$a" != "$o" ]] && echo "Fail test 13 - $a"
91
92 o=`echo -e "x\ny\n"`
93 a=`echo -e "x\ny\n" | $PROG +1`
94 [[ "$a" != "$o" ]] && echo "Fail test 14 - $a"
95
96 o=`echo -e "y\n"`
97 a=`echo -e "x\ny\n" | $PROG +2`
98 [[ "$a" != "$o" ]] && echo "Fail test 15 - $a"
99
100 # For compatibility with Legacy Solaris tail this should also work as '+c'
101 o=`echo -e "yyz"`
102 a=`echo -e "xyyyyyyyyyyz" | $PROG +10c`
103 [[ "$a" != "$o" ]] && echo "Fail test 16 - $a"
104
105 o=`echo -e "yyz"`
106 a=`echo -e "xyyyyyyyyyyz" | $PROG +c`
107 [[ "$a" != "$o" ]] && echo "Fail test 16a - $a"
108
109
110 # For compatibility with Legacy Solaris tail this should also work as '+l'
111 o=`echo -e "y\ny\nz"`
112 a=`echo -e "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz" | $PROG +10l`
113 [[ "$a" != "$o" ]] && echo "Fail test 17 - $a"
114
115 o=`echo -e "y\ny\nz"`
116 a=`echo -e "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz" | $PROG +l`
117 [[ "$a" != "$o" ]] && echo "Fail test 17a - $a"
118
119
120 # For compatibility with Legacy Solaris tail this should also work as '-l'
121 o=`echo -e "y\ny\ny\ny\ny\ny\ny\ny\ny\nz"`
122 a=`echo -e "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz" | $PROG -10l`
123 [[ "$a" != "$o" ]] && echo "Fail test 18 - $a"
124
125 o=`echo -e "y\ny\ny\ny\ny\ny\ny\ny\ny\nz"`
126 a=`echo -e "x\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\nz" | $PROG -l`
127 [[ "$a" != "$o" ]] && echo "Fail test 18a - $a"
128
129 o=`echo -e "c\nb\na"`
130 a=`echo -e "a\nb\nc" | $PROG -r`
131 [[ "$a" != "$o" ]] && echo "Fail test 19 - $a"
132
133
134 echo "Completed"
135
136 exit 0
137
138 # Template for additional test cases
139 #o=`echo -e ""`
140 #a=`echo -e "" | $PROG `
141 #[[ "$a" != "$o" ]] && echo "Fail test - $a"