aboutsummaryrefslogtreecommitdiff
path: root/contrib/netbsd-tests/usr.bin/grep
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/netbsd-tests/usr.bin/grep')
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_basic.out20
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_begin_end_a.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_begin_end_b.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_binary.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_color_a.in1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_color_a.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_color_b.in5
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_color_b.out3
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_color_c.out3
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context2_a.outbin0 -> 47 bytes
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context2_b.outbin0 -> 52 bytes
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context2_c.outbin0 -> 76 bytes
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_a.in10
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_a.out5
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_b.in3
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_b.out4
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_c.out5
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_d.out13
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_e.in10
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_e.out9
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_f.out9
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_context_g.out8
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_egrep.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_escmap.in1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_f_file_empty.in2
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_file_exp.in2
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_file_exp.out6
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_ignore_case.out2
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_input12
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_invert.in10
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_invert.out5
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.in1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.out3
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.in1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.out2
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.in1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.out2
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_d.in3
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.in1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_recurse.out2
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_recurse_symlink.err1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_recurse_symlink.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_whole_line.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_word_regexps.out1
-rw-r--r--contrib/netbsd-tests/usr.bin/grep/d_zgrep.out2
-rwxr-xr-xcontrib/netbsd-tests/usr.bin/grep/t_grep.sh1016
47 files changed, 1192 insertions, 0 deletions
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_basic.out b/contrib/netbsd-tests/usr.bin/grep/d_basic.out
new file mode 100644
index 000000000000..ccefccb1c091
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_basic.out
@@ -0,0 +1,20 @@
+123
+1123
+1230
+1231
+1232
+1233
+1234
+1235
+1236
+1237
+1238
+1239
+2123
+3123
+4123
+5123
+6123
+7123
+8123
+9123
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_begin_end_a.out b/contrib/netbsd-tests/usr.bin/grep/d_begin_end_a.out
new file mode 100644
index 000000000000..3288aec6693f
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_begin_end_a.out
@@ -0,0 +1 @@
+Front of the line
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_begin_end_b.out b/contrib/netbsd-tests/usr.bin/grep/d_begin_end_b.out
new file mode 100644
index 000000000000..dd09e02da358
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_begin_end_b.out
@@ -0,0 +1 @@
+This is a another line with a Front and an ending
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_binary.out b/contrib/netbsd-tests/usr.bin/grep/d_binary.out
new file mode 100644
index 000000000000..f0ef9880d6d5
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_binary.out
@@ -0,0 +1 @@
+Binary file test.file matches
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_color_a.in b/contrib/netbsd-tests/usr.bin/grep/d_color_a.in
new file mode 100644
index 000000000000..a1e432252d25
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_color_a.in
@@ -0,0 +1 @@
+abcd*
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_color_a.out b/contrib/netbsd-tests/usr.bin/grep/d_color_a.out
new file mode 100644
index 000000000000..a1e432252d25
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_color_a.out
@@ -0,0 +1 @@
+abcd*
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_color_b.in b/contrib/netbsd-tests/usr.bin/grep/d_color_b.in
new file mode 100644
index 000000000000..83409d744b2f
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_color_b.in
@@ -0,0 +1,5 @@
+fojeiwuroiuwet
+ljfajsljkfabcdddjlfkajlkj
+abcaaa
+zzzabc
+
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_color_b.out b/contrib/netbsd-tests/usr.bin/grep/d_color_b.out
new file mode 100644
index 000000000000..83db20cb2f59
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_color_b.out
@@ -0,0 +1,3 @@
+ljfajsljkfabcdddjlfkajlkj
+abcaaa
+zzzabc
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_color_c.out b/contrib/netbsd-tests/usr.bin/grep/d_color_c.out
new file mode 100644
index 000000000000..30fd9e5b3b4d
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_color_c.out
@@ -0,0 +1,3 @@
+ljfajsljkfabcdddjlfkajlkj
+abcaaa
+zzzabc
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context2_a.out b/contrib/netbsd-tests/usr.bin/grep/d_context2_a.out
new file mode 100644
index 000000000000..384d280aac8f
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context2_a.out
Binary files differ
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context2_b.out b/contrib/netbsd-tests/usr.bin/grep/d_context2_b.out
new file mode 100644
index 000000000000..c1d1222370d6
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context2_b.out
Binary files differ
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context2_c.out b/contrib/netbsd-tests/usr.bin/grep/d_context2_c.out
new file mode 100644
index 000000000000..1692c2aa8f5c
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context2_c.out
Binary files differ
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_a.in b/contrib/netbsd-tests/usr.bin/grep/d_context_a.in
new file mode 100644
index 000000000000..670e4cefc9fa
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_a.in
@@ -0,0 +1,10 @@
+A pig is a jolly companion,
+Boar, sow, barrow, or gilt --
+A pig is a pal, who'll boost your morale,
+Though mountains may topple and tilt.
+When they've blackballed, bamboozled, and burned you,
+When they've turned on you, Tory and Whig,
+Though you may be thrown over by Tabby and Rover,
+You'll never go wrong with a pig, a pig,
+You'll never go wrong with a pig!
+ -- Thomas Pynchon, "Gravity's Rainbow"
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_a.out b/contrib/netbsd-tests/usr.bin/grep/d_context_a.out
new file mode 100644
index 000000000000..5788aa5a3cc2
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_a.out
@@ -0,0 +1,5 @@
+A pig is a pal, who'll boost your morale,
+Though mountains may topple and tilt.
+When they've blackballed, bamboozled, and burned you,
+When they've turned on you, Tory and Whig,
+Though you may be thrown over by Tabby and Rover,
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_b.in b/contrib/netbsd-tests/usr.bin/grep/d_context_b.in
new file mode 100644
index 000000000000..663c9928a09e
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_b.in
@@ -0,0 +1,3 @@
+This is to test output of context from multiple files.
+Dave was a happy pig who wandered around the orchard eating
+apples all day long.
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_b.out b/contrib/netbsd-tests/usr.bin/grep/d_context_b.out
new file mode 100644
index 000000000000..aa18352e65c4
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_b.out
@@ -0,0 +1,4 @@
+Though mountains may topple and tilt.
+When they've blackballed, bamboozled, and burned you,
+When they've turned on you, Tory and Whig,
+Though you may be thrown over by Tabby and Rover,
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_c.out b/contrib/netbsd-tests/usr.bin/grep/d_context_c.out
new file mode 100644
index 000000000000..f91b7123c453
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_c.out
@@ -0,0 +1,5 @@
+Boar, sow, barrow, or gilt --
+A pig is a pal, who'll boost your morale,
+Though mountains may topple and tilt.
+When they've blackballed, bamboozled, and burned you,
+When they've turned on you, Tory and Whig,
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_d.out b/contrib/netbsd-tests/usr.bin/grep/d_context_d.out
new file mode 100644
index 000000000000..225df69371fc
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_d.out
@@ -0,0 +1,13 @@
+d_context_a.in:A pig is a jolly companion,
+d_context_a.in-Boar, sow, barrow, or gilt --
+d_context_a.in:A pig is a pal, who'll boost your morale,
+d_context_a.in-Though mountains may topple and tilt.
+--
+d_context_a.in-Though you may be thrown over by Tabby and Rover,
+d_context_a.in:You'll never go wrong with a pig, a pig,
+d_context_a.in:You'll never go wrong with a pig!
+d_context_a.in- -- Thomas Pynchon, "Gravity's Rainbow"
+--
+d_context_b.in-This is to test output of context from multiple files.
+d_context_b.in:Dave was a happy pig who wandered around the orchard eating
+d_context_b.in-apples all day long.
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_e.in b/contrib/netbsd-tests/usr.bin/grep/d_context_e.in
new file mode 100644
index 000000000000..453256317202
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_e.in
@@ -0,0 +1,10 @@
+monkey
+banana
+apple
+fruit
+monkey
+banna
+apple
+fruit
+apple
+monkey
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_e.out b/contrib/netbsd-tests/usr.bin/grep/d_context_e.out
new file mode 100644
index 000000000000..1167e1072860
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_e.out
@@ -0,0 +1,9 @@
+monkey
+banana
+apple
+fruit
+monkey
+banna
+--
+apple
+monkey
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_f.out b/contrib/netbsd-tests/usr.bin/grep/d_context_f.out
new file mode 100644
index 000000000000..2df9efd9ffba
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_f.out
@@ -0,0 +1,9 @@
+monkey
+banana
+apple
+fruit
+monkey
+banna
+apple
+fruit
+apple
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_context_g.out b/contrib/netbsd-tests/usr.bin/grep/d_context_g.out
new file mode 100644
index 000000000000..c1b5048aa9c4
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_context_g.out
@@ -0,0 +1,8 @@
+apple
+fruit
+--
+banna
+apple
+fruit
+apple
+monkey
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_egrep.out b/contrib/netbsd-tests/usr.bin/grep/d_egrep.out
new file mode 100644
index 000000000000..2cc0277e4d29
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_egrep.out
@@ -0,0 +1 @@
+Special characters [, $, ^, *
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_escmap.in b/contrib/netbsd-tests/usr.bin/grep/d_escmap.in
new file mode 100644
index 000000000000..ef045756ac50
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_escmap.in
@@ -0,0 +1 @@
+f.oo
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_f_file_empty.in b/contrib/netbsd-tests/usr.bin/grep/d_f_file_empty.in
new file mode 100644
index 000000000000..58d8e574add0
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_f_file_empty.in
@@ -0,0 +1,2 @@
+Fish zebra monkey suits
+
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_file_exp.in b/contrib/netbsd-tests/usr.bin/grep/d_file_exp.in
new file mode 100644
index 000000000000..9faee939e2ee
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_file_exp.in
@@ -0,0 +1,2 @@
+-0.[24]0
+0.[35]0
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_file_exp.out b/contrib/netbsd-tests/usr.bin/grep/d_file_exp.out
new file mode 100644
index 000000000000..7d975222674a
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_file_exp.out
@@ -0,0 +1,6 @@
+-0.50
+-0.40
+-0.30
+-0.20
+0.30
+0.50
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_ignore_case.out b/contrib/netbsd-tests/usr.bin/grep/d_ignore_case.out
new file mode 100644
index 000000000000..c14d8dd38a64
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_ignore_case.out
@@ -0,0 +1,2 @@
+Mostly I prefer lower case to upper case,
+but UpPeR cAsE has its merits too.
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_input b/contrib/netbsd-tests/usr.bin/grep/d_input
new file mode 100644
index 000000000000..5e38c39ed414
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_input
@@ -0,0 +1,12 @@
+dot.separated@words
+kkseparatedkk
+Front of the line
+This is a another line with a Front and an ending
+Special characters [, $, ^, *
+Here is another ending.
+
+Mostly I prefer lower case to upper case,
+but UpPeR cAsE has its merits too.
+
+matchme
+
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_invert.in b/contrib/netbsd-tests/usr.bin/grep/d_invert.in
new file mode 100644
index 000000000000..631cf834c1b8
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_invert.in
@@ -0,0 +1,10 @@
+
+fish
+fish
+dog
+cat
+fish
+fish
+
+poodle
+fish
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_invert.out b/contrib/netbsd-tests/usr.bin/grep/d_invert.out
new file mode 100644
index 000000000000..7d7c54a184c3
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_invert.out
@@ -0,0 +1,5 @@
+
+dog
+cat
+
+poodle
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.in b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.in
new file mode 100644
index 000000000000..7d00c34c16fe
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.in
@@ -0,0 +1 @@
+01:1:01
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.out b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.out
new file mode 100644
index 000000000000..fb4c91278b1c
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.out
@@ -0,0 +1,3 @@
+0
+:
+:0
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.in b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.in
new file mode 100644
index 000000000000..6c793401d047
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.in
@@ -0,0 +1 @@
+1:1:01
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.out b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.out
new file mode 100644
index 000000000000..221f334d0d99
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.out
@@ -0,0 +1,2 @@
+:
+:0
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.in b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.in
new file mode 100644
index 000000000000..b72e7d487723
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.in
@@ -0,0 +1 @@
+bla bla
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.out b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.out
new file mode 100644
index 000000000000..167a17b76c72
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.out
@@ -0,0 +1,2 @@
+bla
+bla
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_d.in b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_d.in
new file mode 100644
index 000000000000..c2057f88aca0
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_d.in
@@ -0,0 +1,3 @@
+bla
+bla
+
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.in b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.in
new file mode 100644
index 000000000000..0373d9336f8c
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.in
@@ -0,0 +1 @@
+abcdef
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.out b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.out
new file mode 100644
index 000000000000..81bf39695611
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.out
@@ -0,0 +1 @@
+ab
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_recurse.out b/contrib/netbsd-tests/usr.bin/grep/d_recurse.out
new file mode 100644
index 000000000000..0ba61c83bcd2
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_recurse.out
@@ -0,0 +1,2 @@
+recurse/a/f/favourite-fish:haddock
+recurse/d/fish:haddock
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_recurse_symlink.err b/contrib/netbsd-tests/usr.bin/grep/d_recurse_symlink.err
new file mode 100644
index 000000000000..b4bff9829d1c
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_recurse_symlink.err
@@ -0,0 +1 @@
+grep: warning: test/c/d/d: recursive directory loop
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_recurse_symlink.out b/contrib/netbsd-tests/usr.bin/grep/d_recurse_symlink.out
new file mode 100644
index 000000000000..284923904773
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_recurse_symlink.out
@@ -0,0 +1 @@
+test/c/match:Test string
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_whole_line.out b/contrib/netbsd-tests/usr.bin/grep/d_whole_line.out
new file mode 100644
index 000000000000..16febeb04ce0
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_whole_line.out
@@ -0,0 +1 @@
+matchme
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_word_regexps.out b/contrib/netbsd-tests/usr.bin/grep/d_word_regexps.out
new file mode 100644
index 000000000000..e6c4af4a7e64
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_word_regexps.out
@@ -0,0 +1 @@
+dot.separated@words
diff --git a/contrib/netbsd-tests/usr.bin/grep/d_zgrep.out b/contrib/netbsd-tests/usr.bin/grep/d_zgrep.out
new file mode 100644
index 000000000000..c5fe9b8d4ec2
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/d_zgrep.out
@@ -0,0 +1,2 @@
+Front of the line
+This is a another line with a Front and an ending
diff --git a/contrib/netbsd-tests/usr.bin/grep/t_grep.sh b/contrib/netbsd-tests/usr.bin/grep/t_grep.sh
new file mode 100755
index 000000000000..c4ba9a9657db
--- /dev/null
+++ b/contrib/netbsd-tests/usr.bin/grep/t_grep.sh
@@ -0,0 +1,1016 @@
+# $NetBSD: t_grep.sh,v 1.3 2017/01/14 20:43:52 christos Exp $
+#
+# Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+atf_test_case basic
+basic_head()
+{
+ atf_set "descr" "Checks basic functionality"
+}
+basic_body()
+{
+ atf_check -o file:"$(atf_get_srcdir)/d_basic.out" -x \
+ 'jot 10000 | grep 123'
+}
+
+atf_test_case binary
+binary_head()
+{
+ atf_set "descr" "Checks handling of binary files"
+}
+binary_body()
+{
+ dd if=/dev/zero count=1 of=test.file
+ echo -n "foobar" >> test.file
+ atf_check -o file:"$(atf_get_srcdir)/d_binary.out" grep foobar test.file
+}
+
+atf_test_case recurse
+recurse_head()
+{
+ atf_set "descr" "Checks recursive searching"
+}
+recurse_body()
+{
+ mkdir -p recurse/a/f recurse/d
+ echo -e "cod\ndover sole\nhaddock\nhalibut\npilchard" > recurse/d/fish
+ echo -e "cod\nhaddock\nplaice" > recurse/a/f/favourite-fish
+
+ atf_check -o file:"$(atf_get_srcdir)/d_recurse.out" -x "grep -r haddock recurse | sort"
+}
+
+atf_test_case recurse_symlink
+recurse_symlink_head()
+{
+ atf_set "descr" "Checks symbolic link recursion"
+}
+recurse_symlink_body()
+{
+ # Begin FreeBSD
+ grep_type
+ if [ $? -eq $GREP_TYPE_GNU ]; then
+ atf_expect_fail "this test doesn't pass with gnu grep from ports"
+ fi
+ # End FreeBSD
+ mkdir -p test/c/d
+ (cd test/c/d && ln -s ../d .)
+ echo "Test string" > test/c/match
+
+ atf_check -o file:"$(atf_get_srcdir)/d_recurse_symlink.out" \
+ -e file:"$(atf_get_srcdir)/d_recurse_symlink.err" \
+ grep -rS string test
+}
+
+atf_test_case word_regexps
+word_regexps_head()
+{
+ atf_set "descr" "Checks word-regexps"
+}
+word_regexps_body()
+{
+ atf_check -o file:"$(atf_get_srcdir)/d_word_regexps.out" \
+ grep -w separated $(atf_get_srcdir)/d_input
+
+ # Begin FreeBSD
+ printf "xmatch pmatch\n" > test1
+
+ atf_check -o inline:"pmatch\n" grep -Eow "(match )?pmatch" test1
+ # End FreeBSD
+}
+
+atf_test_case begin_end
+begin_end_head()
+{
+ atf_set "descr" "Checks handling of line beginnings and ends"
+}
+begin_end_body()
+{
+ atf_check -o file:"$(atf_get_srcdir)/d_begin_end_a.out" \
+ grep ^Front "$(atf_get_srcdir)/d_input"
+
+ atf_check -o file:"$(atf_get_srcdir)/d_begin_end_b.out" \
+ grep ending$ "$(atf_get_srcdir)/d_input"
+}
+
+atf_test_case ignore_case
+ignore_case_head()
+{
+ atf_set "descr" "Checks ignore-case option"
+}
+ignore_case_body()
+{
+ atf_check -o file:"$(atf_get_srcdir)/d_ignore_case.out" \
+ grep -i Upper "$(atf_get_srcdir)/d_input"
+}
+
+atf_test_case invert
+invert_head()
+{
+ atf_set "descr" "Checks selecting non-matching lines with -v option"
+}
+invert_body()
+{
+ atf_check -o file:"$(atf_get_srcdir)/d_invert.out" \
+ grep -v fish "$(atf_get_srcdir)/d_invert.in"
+}
+
+atf_test_case whole_line
+whole_line_head()
+{
+ atf_set "descr" "Checks whole-line matching with -x flag"
+}
+whole_line_body()
+{
+ atf_check -o file:"$(atf_get_srcdir)/d_whole_line.out" \
+ grep -x matchme "$(atf_get_srcdir)/d_input"
+}
+
+atf_test_case negative
+negative_head()
+{
+ atf_set "descr" "Checks handling of files with no matches"
+}
+negative_body()
+{
+ atf_check -s ne:0 grep "not a hope in hell" "$(atf_get_srcdir)/d_input"
+}
+
+atf_test_case context
+context_head()
+{
+ atf_set "descr" "Checks displaying context with -A, -B and -C flags"
+}
+context_body()
+{
+ cp $(atf_get_srcdir)/d_context_*.* .
+
+ atf_check -o file:d_context_a.out grep -C2 bamboo d_context_a.in
+ atf_check -o file:d_context_b.out grep -A3 tilt d_context_a.in
+ atf_check -o file:d_context_c.out grep -B4 Whig d_context_a.in
+ atf_check -o file:d_context_d.out grep -C1 pig d_context_a.in d_context_b.in
+ atf_check -o file:d_context_e.out \
+ grep -E -C1 '(banana|monkey)' d_context_e.in
+ atf_check -o file:d_context_f.out \
+ grep -Ev -B2 '(banana|monkey|fruit)' d_context_e.in
+ atf_check -o file:d_context_g.out \
+ grep -Ev -A1 '(banana|monkey|fruit)' d_context_e.in
+}
+
+atf_test_case file_exp
+file_exp_head()
+{
+ atf_set "descr" "Checks reading expressions from file"
+}
+file_exp_body()
+{
+ atf_check -o file:"$(atf_get_srcdir)/d_file_exp.out" -x \
+ 'jot 21 -1 1.00 | grep -f '"$(atf_get_srcdir)"'/d_file_exp.in'
+}
+
+atf_test_case egrep
+egrep_head()
+{
+ atf_set "descr" "Checks matching special characters with egrep"
+}
+egrep_body()
+{
+ atf_check -o file:"$(atf_get_srcdir)/d_egrep.out" \
+ egrep '\?|\*$$' "$(atf_get_srcdir)/d_input"
+}
+
+atf_test_case zgrep
+zgrep_head()
+{
+ atf_set "descr" "Checks handling of gzipped files with zgrep"
+}
+zgrep_body()
+{
+ cp "$(atf_get_srcdir)/d_input" .
+ gzip d_input || atf_fail "gzip failed"
+
+ atf_check -o file:"$(atf_get_srcdir)/d_zgrep.out" zgrep -h line d_input.gz
+}
+
+atf_test_case zgrep_combined_flags
+zgrep_combined_flags_head()
+{
+ atf_set "descr" "Checks for zgrep wrapper problems with combined flags (PR 247126)"
+}
+zgrep_combined_flags_body()
+{
+ echo 'foo bar' > test
+
+ atf_check -o inline:"foo bar\n" zgrep -we foo test
+ # Avoid hang on reading from stdin in the failure case
+ atf_check -o inline:"foo bar\n" zgrep -wefoo test < /dev/null
+}
+
+atf_test_case zgrep_eflag
+zgrep_eflag_head()
+{
+ atf_set "descr" "Checks for zgrep wrapper problems with -e PATTERN (PR 247126)"
+}
+zgrep_eflag_body()
+{
+ echo 'foo bar' > test
+
+ # Avoid hang on reading from stdin in the failure case
+ atf_check -o inline:"foo bar\n" zgrep -e 'foo bar' test < /dev/null
+ atf_check -o inline:"foo bar\n" zgrep --regexp='foo bar' test < /dev/null
+}
+
+atf_test_case zgrep_fflag
+zgrep_fflag_head()
+{
+ atf_set "descr" "Checks for zgrep wrapper problems with -f FILE (PR 247126)"
+}
+zgrep_fflag_body()
+{
+ echo foo > pattern
+ echo foobar > test
+
+ # Avoid hang on reading from stdin in the failure case
+ atf_check -o inline:"foobar\n" zgrep -f pattern test </dev/null
+ atf_check -o inline:"foobar\n" zgrep --file=pattern test </dev/null
+}
+
+atf_test_case zgrep_long_eflag
+zgrep_long_eflag_head()
+{
+ atf_set "descr" "Checks for zgrep wrapper problems with --ignore-case reading from stdin (PR 247126)"
+}
+zgrep_long_eflag_body()
+{
+ echo foobar > test
+
+ atf_check -o inline:"foobar\n" zgrep -e foo --ignore-case < test
+}
+
+atf_test_case zgrep_multiple_eflags
+zgrep_multiple_eflags_head()
+{
+ atf_set "descr" "Checks for zgrep wrapper problems with multiple -e flags (PR 247126)"
+}
+zgrep_multiple_eflags_body()
+{
+ echo foobar > test
+
+ atf_check -o inline:"foobar\n" zgrep -e foo -e xxx test
+}
+
+atf_test_case zgrep_empty_eflag
+zgrep_empty_eflag_head()
+{
+ atf_set "descr" "Checks for zgrep wrapper problems with empty -e flags pattern (PR 247126)"
+}
+zgrep_empty_eflag_body()
+{
+ echo foobar > test
+
+ atf_check -o inline:"foobar\n" zgrep -e '' test
+}
+
+atf_test_case nonexistent
+nonexistent_head()
+{
+ atf_set "descr" "Checks that -s flag suppresses error" \
+ "messages about nonexistent files"
+}
+nonexistent_body()
+{
+ atf_check -s ne:0 grep -s foobar nonexistent
+}
+
+atf_test_case context2
+context2_head()
+{
+ atf_set "descr" "Checks displaying context with -z flag"
+}
+context2_body()
+{
+ printf "haddock\000cod\000plaice\000" > test1
+ printf "mackeral\000cod\000crab\000" > test2
+
+ atf_check -o file:"$(atf_get_srcdir)/d_context2_a.out" \
+ grep -z -A1 cod test1 test2
+
+ atf_check -o file:"$(atf_get_srcdir)/d_context2_b.out" \
+ grep -z -B1 cod test1 test2
+
+ atf_check -o file:"$(atf_get_srcdir)/d_context2_c.out" \
+ grep -z -C1 cod test1 test2
+}
+# Begin FreeBSD
+
+# What grep(1) are we working with?
+# - 0 : bsdgrep
+# - 1 : gnu grep 2.51 (base)
+# - 2 : gnu grep (ports)
+GREP_TYPE_BSD=0
+GREP_TYPE_GNU_FREEBSD=1
+GREP_TYPE_GNU=2
+GREP_TYPE_UNKNOWN=3
+
+grep_type()
+{
+ local grep_version=$(grep --version)
+
+ case "$grep_version" in
+ *"BSD grep"*)
+ return $GREP_TYPE_BSD
+ ;;
+ *"GNU grep"*)
+ case "$grep_version" in
+ *2.5.1-FreeBSD*)
+ return $GREP_TYPE_GNU_FREEBSD
+ ;;
+ *)
+ return $GREP_TYPE_GNU
+ ;;
+ esac
+ ;;
+ esac
+ atf_fail "unknown grep type: $grep_version"
+}
+
+atf_test_case oflag_zerolen
+oflag_zerolen_head()
+{
+ atf_set "descr" "Check behavior of zero-length matches with -o flag (PR 195763)"
+}
+oflag_zerolen_body()
+{
+ grep_type
+ if [ $? -eq $GREP_TYPE_GNU_FREEBSD ]; then
+ atf_expect_fail "this test doesn't pass with gnu grep in base"
+ fi
+
+ atf_check -o file:"$(atf_get_srcdir)/d_oflag_zerolen_a.out" \
+ grep -Eo '(^|:)0*' "$(atf_get_srcdir)/d_oflag_zerolen_a.in"
+
+ atf_check -o file:"$(atf_get_srcdir)/d_oflag_zerolen_b.out" \
+ grep -Eo '(^|:)0*' "$(atf_get_srcdir)/d_oflag_zerolen_b.in"
+
+ atf_check -o file:"$(atf_get_srcdir)/d_oflag_zerolen_c.out" \
+ grep -Eo '[[:alnum:]]*' "$(atf_get_srcdir)/d_oflag_zerolen_c.in"
+
+ atf_check -o empty grep -Eo '' "$(atf_get_srcdir)/d_oflag_zerolen_d.in"
+
+ atf_check -o file:"$(atf_get_srcdir)/d_oflag_zerolen_e.out" \
+ grep -o -e 'ab' -e 'bc' "$(atf_get_srcdir)/d_oflag_zerolen_e.in"
+
+ atf_check -o file:"$(atf_get_srcdir)/d_oflag_zerolen_e.out" \
+ grep -o -e 'bc' -e 'ab' "$(atf_get_srcdir)/d_oflag_zerolen_e.in"
+}
+
+atf_test_case xflag
+xflag_head()
+{
+ atf_set "descr" "Check that we actually get a match with -x flag (PR 180990)"
+}
+xflag_body()
+{
+ echo 128 > match_file
+ seq 1 128 > pattern_file
+ grep -xf pattern_file match_file
+}
+
+atf_test_case color
+color_head()
+{
+ atf_set "descr" "Check --color support"
+}
+color_body()
+{
+ grep_type
+ if [ $? -eq $GREP_TYPE_GNU_FREEBSD ]; then
+ atf_expect_fail "this test doesn't pass with gnu grep in base"
+ fi
+
+ echo 'abcd*' > grepfile
+ echo 'abc$' >> grepfile
+ echo '^abc' >> grepfile
+
+ atf_check -o file:"$(atf_get_srcdir)/d_color_a.out" \
+ grep --color=auto -e '.*' -e 'a' "$(atf_get_srcdir)/d_color_a.in"
+
+ atf_check -o file:"$(atf_get_srcdir)/d_color_b.out" \
+ grep --color=auto -f grepfile "$(atf_get_srcdir)/d_color_b.in"
+
+ atf_check -o file:"$(atf_get_srcdir)/d_color_c.out" \
+ grep --color=always -f grepfile "$(atf_get_srcdir)/d_color_b.in"
+}
+
+atf_test_case f_file_empty
+f_file_empty_head()
+{
+ atf_set "descr" "Check for handling of a null byte in empty file, specified by -f (PR 202022)"
+}
+f_file_empty_body()
+{
+ printf "\0\n" > nulpat
+
+ atf_check -s exit:1 grep -f nulpat "$(atf_get_srcdir)/d_f_file_empty.in"
+}
+
+atf_test_case escmap
+escmap_head()
+{
+ atf_set "descr" "Check proper handling of escaped vs. unescaped dot expressions (PR 175314)"
+}
+escmap_body()
+{
+ atf_check -s exit:1 grep -o 'f.o\.' "$(atf_get_srcdir)/d_escmap.in"
+ atf_check -o not-empty grep -o 'f.o.' "$(atf_get_srcdir)/d_escmap.in"
+}
+
+atf_test_case egrep_empty_invalid
+egrep_empty_invalid_head()
+{
+ atf_set "descr" "Check for handling of an invalid empty pattern (PR 194823)"
+}
+egrep_empty_invalid_body()
+{
+ atf_check -e ignore -s not-exit:0 egrep '{' /dev/null
+}
+
+atf_test_case zerolen
+zerolen_head()
+{
+ atf_set "descr" "Check for successful zero-length matches with ^$"
+}
+zerolen_body()
+{
+ printf "Eggs\n\nCheese" > test1
+
+ atf_check -o inline:"\n" grep -e "^$" test1
+
+ atf_check -o inline:"Eggs\nCheese\n" grep -v -e "^$" test1
+}
+
+atf_test_case wflag_emptypat
+wflag_emptypat_head()
+{
+ atf_set "descr" "Check for proper handling of -w with an empty pattern (PR 105221)"
+}
+wflag_emptypat_body()
+{
+ printf "" > test1
+ printf "\n" > test2
+ printf "qaz" > test3
+ printf " qaz\n" > test4
+
+ atf_check -s exit:1 -o empty grep -w -e "" test1
+
+ atf_check -o file:test2 grep -vw -e "" test2
+
+ atf_check -s exit:1 -o empty grep -w -e "" test3
+
+ atf_check -o file:test4 grep -vw -e "" test4
+}
+
+atf_test_case xflag_emptypat
+xflag_emptypat_body()
+{
+ printf "" > test1
+ printf "\n" > test2
+ printf "qaz" > test3
+ printf " qaz\n" > test4
+
+ atf_check -s exit:1 -o empty grep -x -e "" test1
+
+ atf_check -o file:test2 grep -x -e "" test2
+
+ atf_check -s exit:1 -o empty grep -x -e "" test3
+
+ atf_check -s exit:1 -o empty grep -x -e "" test4
+
+ total=$(wc -l /COPYRIGHT | sed 's/[^0-9]//g')
+
+ # Simple checks that grep -x with an empty pattern isn't matching every
+ # line. The exact counts aren't important, as long as they don't
+ # match the total line count and as long as they don't match each other.
+ atf_check -o save:xpositive.count grep -Fxc '' /COPYRIGHT
+ atf_check -o save:xnegative.count grep -Fvxc '' /COPYRIGHT
+
+ atf_check -o not-inline:"${total}" cat xpositive.count
+ atf_check -o not-inline:"${total}" cat xnegative.count
+
+ atf_check -o not-file:xnegative.count cat xpositive.count
+}
+
+atf_test_case xflag_emptypat_plus
+xflag_emptypat_plus_body()
+{
+ printf "foo\n\nbar\n\nbaz\n" > target
+ printf "foo\n \nbar\n \nbaz\n" > target_spacelines
+ printf "foo\nbar\nbaz\n" > matches
+ printf " \n \n" > spacelines
+
+ printf "foo\n\nbar\n\nbaz\n" > patlist1
+ printf "foo\n\nba\n\nbaz\n" > patlist2
+
+ sed -e '/bar/d' target > matches_not2
+
+ # Normal handling first
+ atf_check -o file:target grep -Fxf patlist1 target
+ atf_check -o file:matches grep -Fxf patlist1 target_spacelines
+ atf_check -o file:matches_not2 grep -Fxf patlist2 target
+
+ # -v handling
+ atf_check -s exit:1 -o empty grep -Fvxf patlist1 target
+ atf_check -o file:spacelines grep -Fxvf patlist1 target_spacelines
+}
+
+atf_test_case emptyfile
+emptyfile_descr()
+{
+ atf_set "descr" "Check for proper handling of empty pattern files (PR 253209)"
+}
+emptyfile_body()
+{
+ :> epatfile
+ echo "blubb" > subj
+
+ # From PR 253209, bsdgrep was short-circuiting completely on an empty
+ # file, but we should have still been processing lines.
+ atf_check -s exit:1 -o empty fgrep -f epatfile subj
+ atf_check -o file:subj fgrep -vf epatfile subj
+}
+
+atf_test_case excessive_matches
+excessive_matches_head()
+{
+ atf_set "descr" "Check for proper handling of lines with excessive matches (PR 218811)"
+}
+excessive_matches_body()
+{
+ grep_type
+ if [ $? -eq $GREP_TYPE_GNU_FREEBSD ]; then
+ atf_expect_fail "this test does not pass with GNU grep in base"
+ fi
+
+ for i in $(jot 4096); do
+ printf "x" >> test.in
+ done
+
+ atf_check -s exit:0 -x '[ $(grep -o x test.in | wc -l) -eq 4096 ]'
+ atf_check -s exit:1 -x 'grep -on x test.in | grep -v "1:x"'
+}
+
+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
+}
+
+atf_test_case wv_combo_break
+wv_combo_break_head()
+{
+ atf_set "descr" "Check for incorrectly matching lines with both -w and -v flags (PR 218467)"
+}
+wv_combo_break_body()
+{
+ printf "x xx\n" > test1
+ printf "xx x\n" > test2
+
+ atf_check -o file:test1 grep -w "x" test1
+ atf_check -o file:test2 grep -w "x" test2
+
+ atf_check -s exit:1 grep -v -w "x" test1
+ atf_check -s exit:1 grep -v -w "x" test2
+}
+
+atf_test_case ocolor_metadata
+ocolor_metadata_head()
+{
+ atf_set "descr" "Check for -n/-b producing per-line metadata output"
+}
+ocolor_metadata_body()
+{
+ grep_type
+ if [ $? -eq $GREP_TYPE_GNU_FREEBSD ]; then
+ atf_expect_fail "this test does not pass with GNU grep in base"
+ fi
+
+ printf "xxx\nyyyy\nzzz\nfoobarbaz\n" > test1
+ check_expr="^[^:]*[0-9][^:]*:[^:]+$"
+
+ atf_check -o inline:"1:1:xx\n" grep -bon "xx$" test1
+
+ atf_check -o inline:"2:4:yyyy\n" grep -bn "yy" test1
+
+ atf_check -o inline:"2:6:yy\n" grep -bon "yy$" test1
+
+ # These checks ensure that grep isn't producing bogus line numbering
+ # in the middle of a line.
+ atf_check -s exit:1 -x \
+ "grep -Eon 'x|y|z|f' test1 | grep -Ev '${check_expr}'"
+
+ atf_check -s exit:1 -x \
+ "grep -En 'x|y|z|f' --color=always test1 | grep -Ev '${check_expr}'"
+
+ atf_check -s exit:1 -x \
+ "grep -Eon 'x|y|z|f' --color=always test1 | grep -Ev '${check_expr}'"
+}
+
+atf_test_case grep_nomatch_flags
+grep_nomatch_flags_head()
+{
+ atf_set "descr" "Check for no match (-c, -l, -L, -q) flags not producing line matches or context (PR 219077)"
+}
+
+grep_nomatch_flags_body()
+{
+ grep_type
+
+ if [ $? -eq $GREP_TYPE_GNU_FREEBSD ]; then
+ atf_expect_fail "this test does not pass with GNU grep in base"
+ fi
+
+ printf "A\nB\nC\n" > test1
+
+ atf_check -o inline:"1\n" grep -c -C 1 -e "B" test1
+ atf_check -o inline:"1\n" grep -c -B 1 -e "B" test1
+ atf_check -o inline:"1\n" grep -c -A 1 -e "B" test1
+ atf_check -o inline:"1\n" grep -c -C 1 -e "B" test1
+
+ atf_check -o inline:"test1\n" grep -l -e "B" test1
+ atf_check -o inline:"test1\n" grep -l -B 1 -e "B" test1
+ atf_check -o inline:"test1\n" grep -l -A 1 -e "B" test1
+ atf_check -o inline:"test1\n" grep -l -C 1 -e "B" test1
+
+ atf_check -o inline:"test1\n" grep -L -e "D" test1
+
+ atf_check -o empty grep -q -e "B" test1
+ atf_check -o empty grep -q -B 1 -e "B" test1
+ atf_check -o empty grep -q -A 1 -e "B" test1
+ atf_check -o empty grep -q -C 1 -e "B" test1
+}
+
+atf_test_case badcontext
+badcontext_head()
+{
+ atf_set "descr" "Check for handling of invalid context arguments"
+}
+badcontext_body()
+{
+ printf "A\nB\nC\n" > test1
+
+ atf_check -s not-exit:0 -e ignore grep -A "-1" "B" test1
+
+ atf_check -s not-exit:0 -e ignore grep -B "-1" "B" test1
+
+ atf_check -s not-exit:0 -e ignore grep -C "-1" "B" test1
+
+ atf_check -s not-exit:0 -e ignore grep -A "B" "B" test1
+
+ atf_check -s not-exit:0 -e ignore grep -B "B" "B" test1
+
+ atf_check -s not-exit:0 -e ignore grep -C "B" "B" test1
+}
+
+atf_test_case binary_flags
+binary_flags_head()
+{
+ atf_set "descr" "Check output for binary flags (-a, -I, -U, --binary-files)"
+}
+binary_flags_body()
+{
+ printf "A\000B\000C" > test1
+ printf "A\n\000B\n\000C" > test2
+ binmatchtext="Binary file test1 matches\n"
+
+ # Binaries not treated as text (default, -U)
+ atf_check -o inline:"${binmatchtext}" grep 'B' test1
+ atf_check -o inline:"${binmatchtext}" grep 'B' -C 1 test1
+
+ atf_check -o inline:"${binmatchtext}" grep -U 'B' test1
+ atf_check -o inline:"${binmatchtext}" grep -U 'B' -C 1 test1
+
+ # Binary, -a, no newlines
+ atf_check -o inline:"A\000B\000C\n" grep -a 'B' test1
+ atf_check -o inline:"A\000B\000C\n" grep -a 'B' -C 1 test1
+
+ # Binary, -a, newlines
+ atf_check -o inline:"\000B\n" grep -a 'B' test2
+ atf_check -o inline:"A\n\000B\n\000C\n" grep -a 'B' -C 1 test2
+
+ # Binary files ignored
+ atf_check -s exit:1 grep -I 'B' test2
+
+ # --binary-files equivalence
+ atf_check -o inline:"${binmatchtext}" grep --binary-files=binary 'B' test1
+ atf_check -o inline:"A\000B\000C\n" grep --binary-files=text 'B' test1
+ atf_check -s exit:1 grep --binary-files=without-match 'B' test2
+}
+
+atf_test_case mmap
+mmap_head()
+{
+ atf_set "descr" "Check basic matching with --mmap flag"
+}
+mmap_body()
+{
+ grep_type
+ if [ $? -eq $GREP_TYPE_GNU ]; then
+ atf_expect_fail "gnu grep from ports has no --mmap option"
+ fi
+
+ printf "A\nB\nC\n" > test1
+
+ atf_check -s exit:0 -o inline:"B\n" grep --mmap -oe "B" test1
+ atf_check -s exit:1 grep --mmap -e "Z" test1
+}
+
+atf_test_case matchall
+matchall_head()
+{
+ atf_set "descr" "Check proper behavior of matching all with an empty string"
+}
+matchall_body()
+{
+ printf "" > test1
+ printf "A" > test2
+ printf "A\nB" > test3
+
+ atf_check -o inline:"test2:A\ntest3:A\ntest3:B\n" grep "" test1 test2 test3
+ atf_check -o inline:"test3:A\ntest3:B\ntest2:A\n" grep "" test3 test1 test2
+ atf_check -o inline:"test2:A\ntest3:A\ntest3:B\n" grep "" test2 test3 test1
+
+ atf_check -s exit:1 grep "" test1
+}
+
+atf_test_case fgrep_multipattern
+fgrep_multipattern_head()
+{
+ atf_set "descr" "Check proper behavior with multiple patterns supplied to fgrep"
+}
+fgrep_multipattern_body()
+{
+ printf "Foo\nBar\nBaz" > test1
+
+ atf_check -o inline:"Foo\nBaz\n" grep -F -e "Foo" -e "Baz" test1
+ atf_check -o inline:"Foo\nBaz\n" grep -F -e "Baz" -e "Foo" test1
+ atf_check -o inline:"Bar\nBaz\n" grep -F -e "Bar" -e "Baz" test1
+}
+
+atf_test_case fgrep_icase
+fgrep_icase_head()
+{
+ atf_set "descr" "Check proper handling of -i supplied to fgrep"
+}
+fgrep_icase_body()
+{
+ printf "Foo\nBar\nBaz" > test1
+
+ atf_check -o inline:"Foo\nBaz\n" grep -Fi -e "foo" -e "baz" test1
+ atf_check -o inline:"Foo\nBaz\n" grep -Fi -e "baz" -e "foo" test1
+ atf_check -o inline:"Bar\nBaz\n" grep -Fi -e "bar" -e "baz" test1
+ atf_check -o inline:"Bar\nBaz\n" grep -Fi -e "BAR" -e "bAz" test1
+}
+
+atf_test_case fgrep_oflag
+fgrep_oflag_head()
+{
+ atf_set "descr" "Check proper handling of -o supplied to fgrep"
+}
+fgrep_oflag_body()
+{
+ printf "abcdefghi\n" > test1
+
+ atf_check -o inline:"a\n" grep -Fo "a" test1
+ atf_check -o inline:"i\n" grep -Fo "i" test1
+ atf_check -o inline:"abc\n" grep -Fo "abc" test1
+ atf_check -o inline:"fgh\n" grep -Fo "fgh" test1
+ atf_check -o inline:"cde\n" grep -Fo "cde" test1
+ atf_check -o inline:"bcd\n" grep -Fo -e "bcd" -e "cde" test1
+ atf_check -o inline:"bcd\nefg\n" grep -Fo -e "bcd" -e "efg" test1
+
+ atf_check -s exit:1 grep -Fo "xabc" test1
+ atf_check -s exit:1 grep -Fo "abcx" test1
+ atf_check -s exit:1 grep -Fo "xghi" test1
+ atf_check -s exit:1 grep -Fo "ghix" test1
+ atf_check -s exit:1 grep -Fo "abcdefghiklmnopqrstuvwxyz" test1
+}
+
+atf_test_case cflag
+cflag_head()
+{
+ atf_set "descr" "Check proper handling of -c"
+}
+cflag_body()
+{
+ printf "a\nb\nc\n" > test1
+
+ atf_check -o inline:"1\n" grep -Ec "a" test1
+ atf_check -o inline:"2\n" grep -Ec "a|b" test1
+ atf_check -o inline:"3\n" grep -Ec "a|b|c" test1
+
+ atf_check -o inline:"test1:2\n" grep -EHc "a|b" test1
+}
+
+atf_test_case mflag
+mflag_head()
+{
+ atf_set "descr" "Check proper handling of -m"
+}
+mflag_body()
+{
+ printf "a\nb\nc\nd\ne\nf\n" > test1
+
+ atf_check -o inline:"1\n" grep -m 1 -Ec "a" test1
+ atf_check -o inline:"2\n" grep -m 2 -Ec "a|b" test1
+ atf_check -o inline:"3\n" grep -m 3 -Ec "a|b|c|f" test1
+
+ atf_check -o inline:"test1:2\n" grep -m 2 -EHc "a|b|e|f" test1
+}
+
+atf_test_case mflag_trail_ctx
+mflag_trail_ctx_head()
+{
+ atf_set "descr" "Check proper handling of -m with trailing context (PR 253350)"
+}
+mflag_trail_ctx_body()
+{
+ printf "foo\nfoo\nbar\nfoo\nbar\nfoo\nbar\n" > test1
+
+ # Should pick up the next line after matching the first.
+ atf_check -o inline:"foo\nfoo\n" grep -A1 -m1 foo test1
+
+ # Make sure the trailer is picked up as a non-match!
+ atf_check -o inline:"1:foo\n2-foo\n" grep -A1 -nm1 foo test1
+}
+
+atf_test_case zgrep_multiple_files
+zgrep_multiple_files_head()
+{
+ atf_set "descr" "Ensures that zgrep functions properly with multiple files"
+}
+zgrep_multiple_files_body()
+{
+ echo foo > test1
+ echo foo > test2
+ atf_check -o inline:"test1:foo\ntest2:foo\n" zgrep foo test1 test2
+
+ echo bar > test1
+ atf_check -o inline:"test2:foo\n" zgrep foo test1 test2
+
+ echo bar > test2
+ atf_check -s exit:1 zgrep foo test1 test2
+}
+
+atf_test_case zgrep_recursive
+zgrep_multiple_files_head()
+{
+ atf_set "descr" "Checks for zgrep wrapper recursion"
+}
+zgrep_recursive_body()
+{
+ atf_expect_fail "unimplemented zgrep wrapper script functionality"
+
+ mkdir -p tester1
+ echo foobar > tester1/test
+ atf_check -o inline:"tester1/test:foobar\n" zgrep -r foo tester1
+
+ mkdir -p tester2
+ echo foobar > tester2/test1
+ echo foobar > tester2/test2
+ atf_check -o inline:"tester2/test1:foobar\ntester2/test2:foobar\n" zgrep -r foo tester2
+}
+# End FreeBSD
+
+atf_init_test_cases()
+{
+ atf_add_test_case basic
+ atf_add_test_case binary
+ atf_add_test_case recurse
+ atf_add_test_case recurse_symlink
+ atf_add_test_case word_regexps
+ atf_add_test_case begin_end
+ atf_add_test_case ignore_case
+ atf_add_test_case invert
+ atf_add_test_case whole_line
+ atf_add_test_case negative
+ atf_add_test_case context
+ atf_add_test_case file_exp
+ atf_add_test_case egrep
+ atf_add_test_case zgrep
+ atf_add_test_case zgrep_combined_flags
+ atf_add_test_case zgrep_eflag
+ atf_add_test_case zgrep_empty_eflag
+ atf_add_test_case zgrep_fflag
+ atf_add_test_case zgrep_long_eflag
+ atf_add_test_case zgrep_multiple_eflags
+ atf_add_test_case nonexistent
+ atf_add_test_case context2
+# Begin FreeBSD
+ atf_add_test_case oflag_zerolen
+ atf_add_test_case xflag
+ atf_add_test_case color
+ atf_add_test_case f_file_empty
+ atf_add_test_case escmap
+ atf_add_test_case egrep_empty_invalid
+ atf_add_test_case zerolen
+ atf_add_test_case wflag_emptypat
+ atf_add_test_case xflag_emptypat
+ atf_add_test_case xflag_emptypat_plus
+ atf_add_test_case emptyfile
+ atf_add_test_case excessive_matches
+ atf_add_test_case wv_combo_break
+ atf_add_test_case fgrep_sanity
+ atf_add_test_case egrep_sanity
+ atf_add_test_case grep_sanity
+ atf_add_test_case ocolor_metadata
+ atf_add_test_case grep_nomatch_flags
+ atf_add_test_case binary_flags
+ atf_add_test_case badcontext
+ atf_add_test_case mmap
+ atf_add_test_case matchall
+ atf_add_test_case fgrep_multipattern
+ atf_add_test_case fgrep_icase
+ atf_add_test_case fgrep_oflag
+ atf_add_test_case cflag
+ atf_add_test_case mflag
+ atf_add_test_case mflag_trail_ctx
+ atf_add_test_case zgrep_multiple_files
+ atf_add_test_case zgrep_recursive
+# End FreeBSD
+}