Home | History | Annotate | Line # | Download | only in grep
t_grep.sh revision 1.2.10.1
      1 # $NetBSD: t_grep.sh,v 1.2.10.1 2017/03/20 06:58:02 pgoyette Exp $
      2 #
      3 # Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
      4 # All rights reserved.
      5 #
      6 # Redistribution and use in source and binary forms, with or without
      7 # modification, are permitted provided that the following conditions
      8 # are met:
      9 # 1. Redistributions of source code must retain the above copyright
     10 #    notice, this list of conditions and the following disclaimer.
     11 # 2. Redistributions in binary form must reproduce the above copyright
     12 #    notice, this list of conditions and the following disclaimer in the
     13 #    documentation and/or other materials provided with the distribution.
     14 #
     15 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25 # POSSIBILITY OF SUCH DAMAGE.
     26 #
     27 
     28 atf_test_case basic
     29 basic_head()
     30 {
     31 	atf_set "descr" "Checks basic functionality"
     32 }
     33 basic_body()
     34 { 
     35 	atf_check -o file:"$(atf_get_srcdir)/d_basic.out" -x \
     36 	    'jot 10000 | grep 123'
     37 }
     38 
     39 atf_test_case binary
     40 binary_head()
     41 {
     42 	atf_set "descr" "Checks handling of binary files"
     43 }
     44 binary_body()
     45 {
     46 	dd if=/dev/zero count=1 of=test.file
     47 	echo -n "foobar" >> test.file
     48 	atf_check -o file:"$(atf_get_srcdir)/d_binary.out" grep foobar test.file
     49 }
     50 
     51 atf_test_case recurse
     52 recurse_head()
     53 {
     54 	atf_set "descr" "Checks recursive searching"
     55 }
     56 recurse_body()
     57 {
     58 	mkdir -p recurse/a/f recurse/d
     59 	echo -e "cod\ndover sole\nhaddock\nhalibut\npilchard" > recurse/d/fish
     60 	echo -e "cod\nhaddock\nplaice" > recurse/a/f/favourite-fish
     61 
     62 	atf_check -o file:"$(atf_get_srcdir)/d_recurse.out" -x "grep -r haddock recurse | sort"
     63 }
     64 
     65 atf_test_case recurse_symlink
     66 recurse_symlink_head()
     67 {
     68 	atf_set "descr" "Checks symbolic link recursion"
     69 }
     70 recurse_symlink_body()
     71 {
     72 	mkdir -p test/c/d
     73 	(cd test/c/d && ln -s ../d .)
     74 	echo "Test string" > test/c/match
     75 
     76 	atf_check -o file:"$(atf_get_srcdir)/d_recurse_symlink.out" \
     77 	    -e file:"$(atf_get_srcdir)/d_recurse_symlink.err" \
     78 	    grep -r string test
     79 }
     80 
     81 atf_test_case word_regexps
     82 word_regexps_head()
     83 {
     84 	atf_set "descr" "Checks word-regexps"
     85 }
     86 word_regexps_body()
     87 {
     88 	atf_check -o file:"$(atf_get_srcdir)/d_word_regexps.out" \
     89 	    grep -w separated $(atf_get_srcdir)/d_input
     90 }
     91 
     92 atf_test_case begin_end
     93 begin_end_head()
     94 {
     95 	atf_set "descr" "Checks handling of line beginnings and ends"
     96 }
     97 begin_end_body()
     98 {
     99 	atf_check -o file:"$(atf_get_srcdir)/d_begin_end_a.out" \
    100 	    grep ^Front "$(atf_get_srcdir)/d_input"
    101 
    102 	atf_check -o file:"$(atf_get_srcdir)/d_begin_end_b.out" \
    103 	    grep ending$ "$(atf_get_srcdir)/d_input"
    104 }
    105 
    106 atf_test_case ignore_case
    107 ignore_case_head()
    108 {
    109 	atf_set "descr" "Checks ignore-case option"
    110 }
    111 ignore_case_body()
    112 {
    113 	atf_check -o file:"$(atf_get_srcdir)/d_ignore_case.out" \
    114 	    grep -i Upper "$(atf_get_srcdir)/d_input"
    115 }
    116 
    117 atf_test_case invert
    118 invert_head()
    119 {
    120 	atf_set "descr" "Checks selecting non-matching lines with -v option"
    121 }
    122 invert_body()
    123 {
    124 	atf_check -o file:"$(atf_get_srcdir)/d_invert.out" \
    125 	    grep -v fish "$(atf_get_srcdir)/d_invert.in"
    126 }
    127 
    128 atf_test_case whole_line
    129 whole_line_head()
    130 {
    131 	atf_set "descr" "Checks whole-line matching with -x flag"
    132 }
    133 whole_line_body()
    134 {
    135 	atf_check -o file:"$(atf_get_srcdir)/d_whole_line.out" \
    136 	    grep -x matchme "$(atf_get_srcdir)/d_input"
    137 }
    138 
    139 atf_test_case negative
    140 negative_head()
    141 {
    142 	atf_set "descr" "Checks handling of files with no matches"
    143 }
    144 negative_body()
    145 {
    146 	atf_check -s ne:0 grep "not a hope in hell" "$(atf_get_srcdir)/d_input"
    147 }
    148 
    149 atf_test_case context
    150 context_head()
    151 {
    152 	atf_set "descr" "Checks displaying context with -A, -B and -C flags"
    153 }
    154 context_body()
    155 {
    156 	cp $(atf_get_srcdir)/d_context_*.* .
    157 
    158 	atf_check -o file:d_context_a.out grep -C2 bamboo d_context_a.in
    159 	atf_check -o file:d_context_b.out grep -A3 tilt d_context_a.in
    160 	atf_check -o file:d_context_c.out grep -B4 Whig d_context_a.in
    161 	atf_check -o file:d_context_d.out grep -C1 pig d_context_a.in d_context_b.in
    162 }
    163 
    164 atf_test_case file_exp
    165 file_exp_head()
    166 {
    167 	atf_set "descr" "Checks reading expressions from file"
    168 }
    169 file_exp_body()
    170 {
    171 	atf_check -o file:"$(atf_get_srcdir)/d_file_exp.out" -x \
    172 	    'jot 21 -1 1.00 | grep -f '"$(atf_get_srcdir)"'/d_file_exp.in'
    173 }
    174 
    175 atf_test_case egrep
    176 egrep_head()
    177 {
    178 	atf_set "descr" "Checks matching special characters with egrep"
    179 }
    180 egrep_body()
    181 {
    182 	atf_check -o file:"$(atf_get_srcdir)/d_egrep.out" \
    183 		egrep '\?|\*$$' "$(atf_get_srcdir)/d_input"
    184 }
    185 
    186 atf_test_case zgrep
    187 zgrep_head()
    188 {
    189 	atf_set "descr" "Checks handling of gzipped files with zgrep"
    190 }
    191 zgrep_body()
    192 {
    193 	cp "$(atf_get_srcdir)/d_input" .
    194 	gzip d_input || atf_fail "gzip failed"
    195 
    196 	atf_check -o file:"$(atf_get_srcdir)/d_zgrep.out" zgrep -h line d_input.gz
    197 }
    198 
    199 atf_test_case nonexistent
    200 nonexistent_head()
    201 {
    202 	atf_set "descr" "Checks that -s flag suppresses error" \
    203 	                "messages about nonexistent files"
    204 }
    205 nonexistent_body()
    206 {
    207 	atf_check -s ne:0 grep -s foobar nonexistent
    208 }
    209 
    210 atf_test_case context2
    211 context2_head()
    212 {
    213 	atf_set "descr" "Checks displaying context with -z flag"
    214 }
    215 context2_body()
    216 {
    217 	printf "haddock\000cod\000plaice\000" > test1
    218 	printf "mackeral\000cod\000crab\000" > test2
    219 
    220 	atf_check -o file:"$(atf_get_srcdir)/d_context2_a.out" \
    221 	    grep -z -A1 cod test1 test2
    222 
    223 	atf_check -o file:"$(atf_get_srcdir)/d_context2_b.out" \
    224 	    grep -z -B1 cod test1 test2
    225 
    226 	atf_check -o file:"$(atf_get_srcdir)/d_context2_c.out" \
    227 	    grep -z -C1 cod test1 test2
    228 }
    229 
    230 atf_init_test_cases()
    231 {
    232 	atf_add_test_case basic 
    233 	atf_add_test_case binary
    234 	atf_add_test_case recurse
    235 	atf_add_test_case recurse_symlink
    236 	atf_add_test_case word_regexps
    237 	atf_add_test_case begin_end
    238 	atf_add_test_case ignore_case
    239 	atf_add_test_case invert
    240 	atf_add_test_case whole_line
    241 	atf_add_test_case negative
    242 	atf_add_test_case context
    243 	atf_add_test_case file_exp
    244 	atf_add_test_case egrep
    245 	atf_add_test_case zgrep
    246 	atf_add_test_case nonexistent
    247 	atf_add_test_case context2
    248 }
    249