#!/bin/sh

# Copyright 2005 by Rob Landley <rob@landley.net>
# Licensed under GPL v2, see file LICENSE for details.

# AUDIT:

. testing.sh

# testing "test name" "options" "expected result" "file input" "stdin"
#   file input will be file called "input"
#   test can create a file "actual" instead of writing to stdout

# Test exit status

testing "grep (exit with error)" "grep nonexistent 2> /dev/null ; echo \$?" \
	"1\n" "" ""
testing "grep (exit success)" "grep grep $0 > /dev/null 2>&1 ; echo \$?" "0\n" \
	"" ""
# Test various data sources and destinations

testing "grep (default to stdin)" "grep two" "two\n" "" \
	"one\ntwo\nthree\nthree\nthree\n"
testing "grep - (specify stdin)" "grep two -" "two\n" "" \
	"one\ntwo\nthree\nthree\nthree\n"
testing "grep input (specify file)" "grep two input" "two\n" \
	"one\ntwo\nthree\nthree\nthree\n" ""

# GNU grep 2.5.3 outputs a new line character after the located string
# even if there is no new line character in the input
testing "grep (no newline at EOL)" "grep bug input" "bug\n" "bug" ""

>empty
testing "grep two files" "grep two input empty 2>/dev/null" \
	"input:two\n" "one\ntwo\nthree\nthree\nthree\n" ""
rm empty

testing "grep - infile (specify stdin and file)" "grep two - input" \
	"(standard input):two\ninput:two\n" "one\ntwo\nthree\n" \
	"one\ntwo\ntoo\nthree\nthree\n"

# Check if we see the correct return value if both stdin and non-existing file
# are given.
testing "grep - nofile (specify stdin and nonexisting file)" \
	"grep two - nonexistent 2> /dev/null ; echo \$?" \
	"(standard input):two\n(standard input):two\n2\n" \
	"" "one\ntwo\ntwo\nthree\nthree\nthree\n"
testing "grep -q - nofile (specify stdin and nonexisting file, no match)" \
	"grep -q nomatch - nonexistent 2> /dev/null ; echo \$?" \
	"2\n" "" "one\ntwo\ntwo\nthree\nthree\nthree\n"
# SUSv3: If the -q option is specified, the exit status shall be zero
#        if an input line is selected, even if an error was detected.
testing "grep -q - nofile (specify stdin and nonexisting file, match)" \
	"grep -q two - nonexistent ; echo \$?" \
	"0\n" "" "one\ntwo\ntwo\nthree\nthree\nthree\n"

# Test various command line options
# -s no error messages
testing "grep -s nofile (nonexisting file, no match)" \
	"grep -s nomatch nonexistent ; echo \$?" "2\n" "" ""
testing "grep -s nofile - (stdin and nonexisting file, match)" \
	"grep -s domatch nonexistent - ; echo \$?" \
	"(standard input):domatch\n2\n" "" "nomatch\ndomatch\nend\n"

testing "grep handles NUL in files" "grep -a foo input" "\0foo\n" "\0foo\n\n" ""
testing "grep handles NUL on stdin" "grep -a foo" "\0foo\n" "" "\0foo\n\n"

testing "grep matches NUL" "grep . input > /dev/null 2>&1 ; echo \$?" \
	"0\n" "\0\n" ""

# -e regex
testing "grep handles multiple regexps" "grep -e one -e two input ; echo \$?" \
	"one\ntwo\n0\n" "one\ntwo\n" ""
testing "grep -F handles multiple expessions" "grep -F -e one -e two input ; echo \$?" \
	"one\ntwo\n0\n" "one\ntwo\n" ""

# -f file/-
testing "grep can read regexps from stdin" "grep -f - input ; echo \$?" \
	"two\nthree\n0\n" "tw\ntwo\nthree\n" "tw.\nthr\n"

optional FEATURE_GREP_EGREP_ALIAS
testing "grep -E supports extended regexps" "grep -E fo+" "foo\n" "" \
	"b\ar\nfoo\nbaz"
testing "grep is also egrep" "egrep foo" "foo\n" "" "foo\nbar\n"
testing "egrep is not case insensitive" \
	"egrep foo ; [ \$? -ne 0 ] && echo yes" "yes\n" "" "FOO\n"

exit $FAILCOUNT
