1*f40f3adcSEnji Cooper# $NetBSD: t_grep.sh,v 1.3 2017/01/14 20:43:52 christos Exp $ 257718be8SEnji Cooper# 357718be8SEnji Cooper# Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. 457718be8SEnji Cooper# All rights reserved. 557718be8SEnji Cooper# 657718be8SEnji Cooper# Redistribution and use in source and binary forms, with or without 757718be8SEnji Cooper# modification, are permitted provided that the following conditions 857718be8SEnji Cooper# are met: 957718be8SEnji Cooper# 1. Redistributions of source code must retain the above copyright 1057718be8SEnji Cooper# notice, this list of conditions and the following disclaimer. 1157718be8SEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright 1257718be8SEnji Cooper# notice, this list of conditions and the following disclaimer in the 1357718be8SEnji Cooper# documentation and/or other materials provided with the distribution. 1457718be8SEnji Cooper# 1557718be8SEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 1657718be8SEnji Cooper# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 1757718be8SEnji Cooper# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1857718be8SEnji Cooper# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 1957718be8SEnji Cooper# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2057718be8SEnji Cooper# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2157718be8SEnji Cooper# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2257718be8SEnji Cooper# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2357718be8SEnji Cooper# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2457718be8SEnji Cooper# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2557718be8SEnji Cooper# POSSIBILITY OF SUCH DAMAGE. 2657718be8SEnji Cooper# 2757718be8SEnji Cooper 2857718be8SEnji Cooperatf_test_case basic 2957718be8SEnji Cooperbasic_head() 3057718be8SEnji Cooper{ 3157718be8SEnji Cooper atf_set "descr" "Checks basic functionality" 3257718be8SEnji Cooper} 3357718be8SEnji Cooperbasic_body() 3457718be8SEnji Cooper{ 3557718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_basic.out" -x \ 3657718be8SEnji Cooper 'jot 10000 | grep 123' 3757718be8SEnji Cooper} 3857718be8SEnji Cooper 3957718be8SEnji Cooperatf_test_case binary 4057718be8SEnji Cooperbinary_head() 4157718be8SEnji Cooper{ 4257718be8SEnji Cooper atf_set "descr" "Checks handling of binary files" 4357718be8SEnji Cooper} 4457718be8SEnji Cooperbinary_body() 4557718be8SEnji Cooper{ 461115e598SEnji Cooper dd if=/dev/zero count=1 of=test.file 471115e598SEnji Cooper echo -n "foobar" >> test.file 481115e598SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_binary.out" grep foobar test.file 4957718be8SEnji Cooper} 5057718be8SEnji Cooper 5157718be8SEnji Cooperatf_test_case recurse 5257718be8SEnji Cooperrecurse_head() 5357718be8SEnji Cooper{ 5457718be8SEnji Cooper atf_set "descr" "Checks recursive searching" 5557718be8SEnji Cooper} 5657718be8SEnji Cooperrecurse_body() 5757718be8SEnji Cooper{ 5857718be8SEnji Cooper mkdir -p recurse/a/f recurse/d 5957718be8SEnji Cooper echo -e "cod\ndover sole\nhaddock\nhalibut\npilchard" > recurse/d/fish 6057718be8SEnji Cooper echo -e "cod\nhaddock\nplaice" > recurse/a/f/favourite-fish 6157718be8SEnji Cooper 62eaae77f8SAlan Somers atf_check -o file:"$(atf_get_srcdir)/d_recurse.out" -x "grep -r haddock recurse | sort" 6357718be8SEnji Cooper} 6457718be8SEnji Cooper 6557718be8SEnji Cooperatf_test_case recurse_symlink 6657718be8SEnji Cooperrecurse_symlink_head() 6757718be8SEnji Cooper{ 6857718be8SEnji Cooper atf_set "descr" "Checks symbolic link recursion" 6957718be8SEnji Cooper} 7057718be8SEnji Cooperrecurse_symlink_body() 7157718be8SEnji Cooper{ 7257718be8SEnji Cooper mkdir -p test/c/d 7357718be8SEnji Cooper (cd test/c/d && ln -s ../d .) 7457718be8SEnji Cooper echo "Test string" > test/c/match 7557718be8SEnji Cooper 7657718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_recurse_symlink.out" \ 7757718be8SEnji Cooper -e file:"$(atf_get_srcdir)/d_recurse_symlink.err" \ 7857718be8SEnji Cooper grep -r string test 7957718be8SEnji Cooper} 8057718be8SEnji Cooper 8157718be8SEnji Cooperatf_test_case word_regexps 8257718be8SEnji Cooperword_regexps_head() 8357718be8SEnji Cooper{ 8457718be8SEnji Cooper atf_set "descr" "Checks word-regexps" 8557718be8SEnji Cooper} 8657718be8SEnji Cooperword_regexps_body() 8757718be8SEnji Cooper{ 8857718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_word_regexps.out" \ 8957718be8SEnji Cooper grep -w separated $(atf_get_srcdir)/d_input 9057718be8SEnji Cooper} 9157718be8SEnji Cooper 9257718be8SEnji Cooperatf_test_case begin_end 9357718be8SEnji Cooperbegin_end_head() 9457718be8SEnji Cooper{ 9557718be8SEnji Cooper atf_set "descr" "Checks handling of line beginnings and ends" 9657718be8SEnji Cooper} 9757718be8SEnji Cooperbegin_end_body() 9857718be8SEnji Cooper{ 9957718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_begin_end_a.out" \ 10057718be8SEnji Cooper grep ^Front "$(atf_get_srcdir)/d_input" 10157718be8SEnji Cooper 10257718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_begin_end_b.out" \ 10357718be8SEnji Cooper grep ending$ "$(atf_get_srcdir)/d_input" 10457718be8SEnji Cooper} 10557718be8SEnji Cooper 10657718be8SEnji Cooperatf_test_case ignore_case 10757718be8SEnji Cooperignore_case_head() 10857718be8SEnji Cooper{ 10957718be8SEnji Cooper atf_set "descr" "Checks ignore-case option" 11057718be8SEnji Cooper} 11157718be8SEnji Cooperignore_case_body() 11257718be8SEnji Cooper{ 11357718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_ignore_case.out" \ 11457718be8SEnji Cooper grep -i Upper "$(atf_get_srcdir)/d_input" 11557718be8SEnji Cooper} 11657718be8SEnji Cooper 11757718be8SEnji Cooperatf_test_case invert 11857718be8SEnji Cooperinvert_head() 11957718be8SEnji Cooper{ 12057718be8SEnji Cooper atf_set "descr" "Checks selecting non-matching lines with -v option" 12157718be8SEnji Cooper} 12257718be8SEnji Cooperinvert_body() 12357718be8SEnji Cooper{ 12457718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_invert.out" \ 12557718be8SEnji Cooper grep -v fish "$(atf_get_srcdir)/d_invert.in" 12657718be8SEnji Cooper} 12757718be8SEnji Cooper 12857718be8SEnji Cooperatf_test_case whole_line 12957718be8SEnji Cooperwhole_line_head() 13057718be8SEnji Cooper{ 13157718be8SEnji Cooper atf_set "descr" "Checks whole-line matching with -x flag" 13257718be8SEnji Cooper} 13357718be8SEnji Cooperwhole_line_body() 13457718be8SEnji Cooper{ 13557718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_whole_line.out" \ 13657718be8SEnji Cooper grep -x matchme "$(atf_get_srcdir)/d_input" 13757718be8SEnji Cooper} 13857718be8SEnji Cooper 13957718be8SEnji Cooperatf_test_case negative 14057718be8SEnji Coopernegative_head() 14157718be8SEnji Cooper{ 14257718be8SEnji Cooper atf_set "descr" "Checks handling of files with no matches" 14357718be8SEnji Cooper} 14457718be8SEnji Coopernegative_body() 14557718be8SEnji Cooper{ 14657718be8SEnji Cooper atf_check -s ne:0 grep "not a hope in hell" "$(atf_get_srcdir)/d_input" 14757718be8SEnji Cooper} 14857718be8SEnji Cooper 14957718be8SEnji Cooperatf_test_case context 15057718be8SEnji Coopercontext_head() 15157718be8SEnji Cooper{ 15257718be8SEnji Cooper atf_set "descr" "Checks displaying context with -A, -B and -C flags" 15357718be8SEnji Cooper} 15457718be8SEnji Coopercontext_body() 15557718be8SEnji Cooper{ 15657718be8SEnji Cooper cp $(atf_get_srcdir)/d_context_*.* . 15757718be8SEnji Cooper 15857718be8SEnji Cooper atf_check -o file:d_context_a.out grep -C2 bamboo d_context_a.in 15957718be8SEnji Cooper atf_check -o file:d_context_b.out grep -A3 tilt d_context_a.in 16057718be8SEnji Cooper atf_check -o file:d_context_c.out grep -B4 Whig d_context_a.in 16157718be8SEnji Cooper atf_check -o file:d_context_d.out grep -C1 pig d_context_a.in d_context_b.in 16257718be8SEnji Cooper} 16357718be8SEnji Cooper 16457718be8SEnji Cooperatf_test_case file_exp 16557718be8SEnji Cooperfile_exp_head() 16657718be8SEnji Cooper{ 16757718be8SEnji Cooper atf_set "descr" "Checks reading expressions from file" 16857718be8SEnji Cooper} 16957718be8SEnji Cooperfile_exp_body() 17057718be8SEnji Cooper{ 17157718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_file_exp.out" -x \ 17257718be8SEnji Cooper 'jot 21 -1 1.00 | grep -f '"$(atf_get_srcdir)"'/d_file_exp.in' 17357718be8SEnji Cooper} 17457718be8SEnji Cooper 17557718be8SEnji Cooperatf_test_case egrep 17657718be8SEnji Cooperegrep_head() 17757718be8SEnji Cooper{ 17857718be8SEnji Cooper atf_set "descr" "Checks matching special characters with egrep" 17957718be8SEnji Cooper} 18057718be8SEnji Cooperegrep_body() 18157718be8SEnji Cooper{ 18257718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_egrep.out" \ 18357718be8SEnji Cooper egrep '\?|\*$$' "$(atf_get_srcdir)/d_input" 18457718be8SEnji Cooper} 18557718be8SEnji Cooper 18657718be8SEnji Cooperatf_test_case zgrep 18757718be8SEnji Cooperzgrep_head() 18857718be8SEnji Cooper{ 18957718be8SEnji Cooper atf_set "descr" "Checks handling of gzipped files with zgrep" 19057718be8SEnji Cooper} 19157718be8SEnji Cooperzgrep_body() 19257718be8SEnji Cooper{ 19357718be8SEnji Cooper cp "$(atf_get_srcdir)/d_input" . 19457718be8SEnji Cooper gzip d_input || atf_fail "gzip failed" 19557718be8SEnji Cooper 19657718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_zgrep.out" zgrep -h line d_input.gz 19757718be8SEnji Cooper} 19857718be8SEnji Cooper 19957718be8SEnji Cooperatf_test_case nonexistent 20057718be8SEnji Coopernonexistent_head() 20157718be8SEnji Cooper{ 20257718be8SEnji Cooper atf_set "descr" "Checks that -s flag suppresses error" \ 20357718be8SEnji Cooper "messages about nonexistent files" 20457718be8SEnji Cooper} 20557718be8SEnji Coopernonexistent_body() 20657718be8SEnji Cooper{ 20757718be8SEnji Cooper atf_check -s ne:0 grep -s foobar nonexistent 20857718be8SEnji Cooper} 20957718be8SEnji Cooper 21057718be8SEnji Cooperatf_test_case context2 21157718be8SEnji Coopercontext2_head() 21257718be8SEnji Cooper{ 21357718be8SEnji Cooper atf_set "descr" "Checks displaying context with -z flag" 21457718be8SEnji Cooper} 21557718be8SEnji Coopercontext2_body() 21657718be8SEnji Cooper{ 21757718be8SEnji Cooper printf "haddock\000cod\000plaice\000" > test1 21857718be8SEnji Cooper printf "mackeral\000cod\000crab\000" > test2 21957718be8SEnji Cooper 22057718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_context2_a.out" \ 22157718be8SEnji Cooper grep -z -A1 cod test1 test2 22257718be8SEnji Cooper 22357718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_context2_b.out" \ 22457718be8SEnji Cooper grep -z -B1 cod test1 test2 22557718be8SEnji Cooper 22657718be8SEnji Cooper atf_check -o file:"$(atf_get_srcdir)/d_context2_c.out" \ 22757718be8SEnji Cooper grep -z -C1 cod test1 test2 22857718be8SEnji Cooper} 22957718be8SEnji Cooper 23057718be8SEnji Cooperatf_init_test_cases() 23157718be8SEnji Cooper{ 23257718be8SEnji Cooper atf_add_test_case basic 23357718be8SEnji Cooper atf_add_test_case binary 23457718be8SEnji Cooper atf_add_test_case recurse 23557718be8SEnji Cooper atf_add_test_case recurse_symlink 23657718be8SEnji Cooper atf_add_test_case word_regexps 23757718be8SEnji Cooper atf_add_test_case begin_end 23857718be8SEnji Cooper atf_add_test_case ignore_case 23957718be8SEnji Cooper atf_add_test_case invert 24057718be8SEnji Cooper atf_add_test_case whole_line 24157718be8SEnji Cooper atf_add_test_case negative 24257718be8SEnji Cooper atf_add_test_case context 24357718be8SEnji Cooper atf_add_test_case file_exp 24457718be8SEnji Cooper atf_add_test_case egrep 24557718be8SEnji Cooper atf_add_test_case zgrep 24657718be8SEnji Cooper atf_add_test_case nonexistent 24757718be8SEnji Cooper atf_add_test_case context2 24857718be8SEnji Cooper} 249