Add more sanity tests for grep, egrep, and fgrep

The test suite currently lacks basic sanity checks to ensure that egrep,
fgrep, and grep are actually matching the right expression types, i.e. passing
the right flags to regcomp(3). Amend the test suite to make sure that not only
are the individual versions doing the right thing, but also that we don't have some
kind of frankenregex situation happening where egrep is accepting a BRE or
grep an ERE.

I've chosen to not expand the 'basic' test but to add the 'grep_sanity' checks
to their own test case since this is testing for more than just 'grep matches things',
but actual expression types.

Differential Revision:	D10444
Reviewed by:	emaste, ngie
Submitted by:	Kyle Evans <kevans91@ksu.edu>
Tested with:	bsdgrep, gnu grep (base, ports)
Sponsored by:	Dell EMC Isilon
This commit is contained in:
Enji Cooper 2017-04-22 21:40:10 +00:00
parent 3be4e97d2b
commit 5199917cc6
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=317299

View File

@ -379,6 +379,66 @@ zerolen_body()
atf_check -o inline:"Eggs\nCheese\n" grep -v -e "^$" test1
}
atf_test_case fgrep_sanity
fgrep_sanity_head()
{
atf_set "descr" "Check for fgrep sanity, literal expressions only"
}
fgrep_sanity_body()
{
printf "Foo" > test1
atf_check -o inline:"Foo\n" fgrep -e "Foo" test1
atf_check -s exit:1 -o empty fgrep -e "Fo." test1
}
atf_test_case egrep_sanity
egrep_sanity_head()
{
atf_set "descr" "Check for egrep sanity, EREs only"
}
egrep_sanity_body()
{
printf "Foobar(ed)" > test1
printf "M{1}" > test2
atf_check -o inline:"Foo\n" egrep -o -e "F.." test1
atf_check -o inline:"Foobar\n" egrep -o -e "F[a-z]*" test1
atf_check -o inline:"Fo\n" egrep -o -e "F(o|p)" test1
atf_check -o inline:"(ed)\n" egrep -o -e "\(ed\)" test1
atf_check -o inline:"M\n" egrep -o -e "M{1}" test2
atf_check -o inline:"M{1}\n" egrep -o -e "M\{1\}" test2
}
atf_test_case grep_sanity
grep_sanity_head()
{
atf_set "descr" "Check for basic grep sanity, BREs only"
}
grep_sanity_body()
{
printf "Foobar(ed)" > test1
printf "M{1}" > test2
atf_check -o inline:"Foo\n" grep -o -e "F.." test1
atf_check -o inline:"Foobar\n" grep -o -e "F[a-z]*" test1
atf_check -o inline:"Fo\n" grep -o -e "F\(o\)" test1
atf_check -o inline:"(ed)\n" grep -o -e "(ed)" test1
atf_check -o inline:"M{1}\n" grep -o -e "M{1}" test2
atf_check -o inline:"M\n" grep -o -e "M\{1\}" test2
}
# End FreeBSD
atf_init_test_cases()
@ -407,5 +467,8 @@ atf_init_test_cases()
atf_add_test_case escmap
atf_add_test_case egrep_empty_invalid
atf_add_test_case zerolen
atf_add_test_case fgrep_sanity
atf_add_test_case egrep_sanity
atf_add_test_case grep_sanity
# End FreeBSD
}