xref: /illumos-gate/usr/src/test/util-tests/tests/awk/tests/T.re (revision e6d6c189fa3a95d7aa27bbe0aeacf7c1a6b57c8c)
1*e6d6c189SCody Peter Mello#!/bin/bash
2*e6d6c189SCody Peter Mello
3*e6d6c189SCody Peter Melloif [[ -z "$AWK" ]]; then
4*e6d6c189SCody Peter Mello    printf '$AWK must be set\n' >&2
5*e6d6c189SCody Peter Mello    exit 1
6*e6d6c189SCody Peter Mellofi
7*e6d6c189SCody Peter Mello
8*e6d6c189SCody Peter Melloecho T.re: tests of regular expression code
9*e6d6c189SCody Peter Mello
10*e6d6c189SCody Peter Mello$AWK '
11*e6d6c189SCody Peter MelloBEGIN {
12*e6d6c189SCody Peter Mello	FS = "\t"
13*e6d6c189SCody Peter Mello	awk = ENVIRON["AWK"]
14*e6d6c189SCody Peter Mello}
15*e6d6c189SCody Peter MelloNF == 0 {
16*e6d6c189SCody Peter Mello	next
17*e6d6c189SCody Peter Mello}
18*e6d6c189SCody Peter Mello$1 != "" {	# new test
19*e6d6c189SCody Peter Mello	re = $1
20*e6d6c189SCody Peter Mello}
21*e6d6c189SCody Peter Mello$2 != "" {	# either ~ or !~
22*e6d6c189SCody Peter Mello	op = $2
23*e6d6c189SCody Peter Mello	if (op == "~")
24*e6d6c189SCody Peter Mello		neg = "!"
25*e6d6c189SCody Peter Mello	else if (op == "!~")
26*e6d6c189SCody Peter Mello		neg = ""
27*e6d6c189SCody Peter Mello}
28*e6d6c189SCody Peter Mello$3 != "" {	# new test string
29*e6d6c189SCody Peter Mello	str = $3
30*e6d6c189SCody Peter Mello}
31*e6d6c189SCody Peter Mello$3 == "\"\"" {	# explicit empty line
32*e6d6c189SCody Peter Mello	$3 = ""
33*e6d6c189SCody Peter Mello}
34*e6d6c189SCody Peter MelloNF > 2 {	# generate a test
35*e6d6c189SCody Peter Mello	input = $3
36*e6d6c189SCody Peter Mello	test = sprintf("printf %%s\\\\n '"'"'%s'"'"' | %s '"'"'%s/%s/ {print \"%d fails %s %s %s\"; exit 1}'"'"'",
37*e6d6c189SCody Peter Mello		input, awk, neg, re, NR, re, op, input)
38*e6d6c189SCody Peter Mello	# printf(" %3d   %s %s %s:\n", NR, re, op, input)
39*e6d6c189SCody Peter Mello	# print "test is |" test "|"
40*e6d6c189SCody Peter Mello	tcode = system(test)
41*e6d6c189SCody Peter Mello	if (tcode > 0) {
42*e6d6c189SCody Peter Mello		ecode = 1
43*e6d6c189SCody Peter Mello	}
44*e6d6c189SCody Peter Mello	# system("bprint -c ../a.out")
45*e6d6c189SCody Peter Mello	nt++
46*e6d6c189SCody Peter Mello}
47*e6d6c189SCody Peter MelloEND {
48*e6d6c189SCody Peter Mello	print "	" nt, "tests"
49*e6d6c189SCody Peter Mello	exit ecode
50*e6d6c189SCody Peter Mello}
51*e6d6c189SCody Peter Mello' <<\!!!!
52*e6d6c189SCody Peter Melloa	~	a
53*e6d6c189SCody Peter Mello		ba
54*e6d6c189SCody Peter Mello		bab
55*e6d6c189SCody Peter Mello	!~	""
56*e6d6c189SCody Peter Mello		x
57*e6d6c189SCody Peter Mello		xxxxx
58*e6d6c189SCody Peter Mello.	~	x
59*e6d6c189SCody Peter Mello		xxx
60*e6d6c189SCody Peter Mello	!~	""
61*e6d6c189SCody Peter Mello.a	~	xa
62*e6d6c189SCody Peter Mello		xxa
63*e6d6c189SCody Peter Mello		xax
64*e6d6c189SCody Peter Mello	!~	a
65*e6d6c189SCody Peter Mello		ax
66*e6d6c189SCody Peter Mello		""
67*e6d6c189SCody Peter Mello$	~	x
68*e6d6c189SCody Peter Mello		""
69*e6d6c189SCody Peter Mello.$	~	x
70*e6d6c189SCody Peter Mello		xx
71*e6d6c189SCody Peter Mello	!~	""
72*e6d6c189SCody Peter Melloa$	~	a
73*e6d6c189SCody Peter Mello		ba
74*e6d6c189SCody Peter Mello		bbba
75*e6d6c189SCody Peter Mello	!~	ab
76*e6d6c189SCody Peter Mello		x
77*e6d6c189SCody Peter Mello		""
78*e6d6c189SCody Peter Mello^	~	x
79*e6d6c189SCody Peter Mello		""
80*e6d6c189SCody Peter Mello		^
81*e6d6c189SCody Peter Mello^a$	~	a
82*e6d6c189SCody Peter Mello	!~	xa
83*e6d6c189SCody Peter Mello		ax
84*e6d6c189SCody Peter Mello		xax
85*e6d6c189SCody Peter Mello		""
86*e6d6c189SCody Peter Mello^a.$	~	ax
87*e6d6c189SCody Peter Mello		aa
88*e6d6c189SCody Peter Mello	!~	xa
89*e6d6c189SCody Peter Mello		aaa
90*e6d6c189SCody Peter Mello		axy
91*e6d6c189SCody Peter Mello		""
92*e6d6c189SCody Peter Mello^$	~	""
93*e6d6c189SCody Peter Mello	!~	x
94*e6d6c189SCody Peter Mello		^
95*e6d6c189SCody Peter Mello^.a	~	xa
96*e6d6c189SCody Peter Mello		xaa
97*e6d6c189SCody Peter Mello	!~	a
98*e6d6c189SCody Peter Mello		""
99*e6d6c189SCody Peter Mello^.*a	~	a
100*e6d6c189SCody Peter Mello		xa
101*e6d6c189SCody Peter Mello		xxxxxxa
102*e6d6c189SCody Peter Mello	!~	""
103*e6d6c189SCody Peter Mello^.+a	~	xa
104*e6d6c189SCody Peter Mello		xxxxxxa
105*e6d6c189SCody Peter Mello	!~	""
106*e6d6c189SCody Peter Mello		a
107*e6d6c189SCody Peter Mello		ax
108*e6d6c189SCody Peter Melloa*	~	""
109*e6d6c189SCody Peter Mello		a
110*e6d6c189SCody Peter Mello		aaaa
111*e6d6c189SCody Peter Mello		xa
112*e6d6c189SCody Peter Mello		xxxx
113*e6d6c189SCody Peter Melloaa*	~	a
114*e6d6c189SCody Peter Mello		aaa
115*e6d6c189SCody Peter Mello		xa
116*e6d6c189SCody Peter Mello	!~	xxxx
117*e6d6c189SCody Peter Mello		""
118*e6d6c189SCody Peter Mello\$	~	x$
119*e6d6c189SCody Peter Mello		$
120*e6d6c189SCody Peter Mello		$x
121*e6d6c189SCody Peter Mello		x$x
122*e6d6c189SCody Peter Mello	!~	""
123*e6d6c189SCody Peter Mello		x
124*e6d6c189SCody Peter Mello\.	~	.
125*e6d6c189SCody Peter Mello	!~	x
126*e6d6c189SCody Peter Mello		""
127*e6d6c189SCody Peter Melloxr+y	~	xry
128*e6d6c189SCody Peter Mello		xrry
129*e6d6c189SCody Peter Mello		xrrrrrry
130*e6d6c189SCody Peter Mello	!~	ry
131*e6d6c189SCody Peter Mello		xy
132*e6d6c189SCody Peter Mello		xr
133*e6d6c189SCody Peter Melloxr?y	~	xy
134*e6d6c189SCody Peter Mello		xry
135*e6d6c189SCody Peter Mello	!~	xrry
136*e6d6c189SCody Peter Melloa?b?c?	~	""
137*e6d6c189SCody Peter Mello		x
138*e6d6c189SCody Peter Mello^a?b?x	~	x
139*e6d6c189SCody Peter Mello		ax
140*e6d6c189SCody Peter Mello		bx
141*e6d6c189SCody Peter Mello		abx
142*e6d6c189SCody Peter Mello		xa
143*e6d6c189SCody Peter Mello	!~	""
144*e6d6c189SCody Peter Mello		ab
145*e6d6c189SCody Peter Mello		aba
146*e6d6c189SCody Peter Mello[0-9]	~	1
147*e6d6c189SCody Peter Mello		567
148*e6d6c189SCody Peter Mello		x0y
149*e6d6c189SCody Peter Mello	!~	abc
150*e6d6c189SCody Peter Mello		""
151*e6d6c189SCody Peter Mello[^0-9]	!~	1
152*e6d6c189SCody Peter Mello		567
153*e6d6c189SCody Peter Mello		""
154*e6d6c189SCody Peter Mello	~	abc
155*e6d6c189SCody Peter Mello		x0y
156*e6d6c189SCody Peter Mello[0-25-69]	~	0
157*e6d6c189SCody Peter Mello		1
158*e6d6c189SCody Peter Mello		2
159*e6d6c189SCody Peter Mello		5
160*e6d6c189SCody Peter Mello		6
161*e6d6c189SCody Peter Mello		9
162*e6d6c189SCody Peter Mello	!~	3
163*e6d6c189SCody Peter Mello		4
164*e6d6c189SCody Peter Mello		7
165*e6d6c189SCody Peter Mello		8
166*e6d6c189SCody Peter Mellox[0-9]+y	~	x0y
167*e6d6c189SCody Peter Mello		x23y
168*e6d6c189SCody Peter Mello		x12345y
169*e6d6c189SCody Peter Mello	!~	0y
170*e6d6c189SCody Peter Mello		xy
171*e6d6c189SCody Peter Mellox[0-9]?y	~	xy
172*e6d6c189SCody Peter Mello		x1y
173*e6d6c189SCody Peter Mello	!~	x23y
174*e6d6c189SCody Peter Mellox[[]y	~	x[y
175*e6d6c189SCody Peter Mello	!~	xy
176*e6d6c189SCody Peter Mello		x[[]y
177*e6d6c189SCody Peter Mello		x]y
178*e6d6c189SCody Peter Mellox[[-]y	~	x[y
179*e6d6c189SCody Peter Mello		x-y
180*e6d6c189SCody Peter Mello	!~	xy
181*e6d6c189SCody Peter Mello		x[[]y
182*e6d6c189SCody Peter Mello		x]y
183*e6d6c189SCody Peter Mellox[[-a]y	~	x[y
184*e6d6c189SCody Peter Mello		xay
185*e6d6c189SCody Peter Mello		x]y
186*e6d6c189SCody Peter Mello	!~	xy
187*e6d6c189SCody Peter Mello		x[[]y
188*e6d6c189SCody Peter Mello		x-y
189*e6d6c189SCody Peter Mellox[]]y	~	x]y
190*e6d6c189SCody Peter Mello	!~	xy
191*e6d6c189SCody Peter Mello		x[]]y
192*e6d6c189SCody Peter Mello		x[y
193*e6d6c189SCody Peter Mellox[^[]y	~	xay
194*e6d6c189SCody Peter Mello	!~	x[y
195*e6d6c189SCody Peter Mellox[-]y	~	x-y
196*e6d6c189SCody Peter Mello	!~	xy
197*e6d6c189SCody Peter Mello		x+y
198*e6d6c189SCody Peter Mellox[^-]y	~	x+y
199*e6d6c189SCody Peter Mello	!~	x-y
200*e6d6c189SCody Peter Mello		xy
201*e6d6c189SCody Peter Mello[0\-9]	~	0
202*e6d6c189SCody Peter Mello		-
203*e6d6c189SCody Peter Mello		9
204*e6d6c189SCody Peter Mello	!~	1
205*e6d6c189SCody Peter Mello		""
206*e6d6c189SCody Peter Mello[-1]	~	-
207*e6d6c189SCody Peter Mello		1
208*e6d6c189SCody Peter Mello	!~	0
209*e6d6c189SCody Peter Mello[0-]	~	0
210*e6d6c189SCody Peter Mello		-
211*e6d6c189SCody Peter Mello	!~	1
212*e6d6c189SCody Peter Mello[^-0]	~	x
213*e6d6c189SCody Peter Mello		^
214*e6d6c189SCody Peter Mello	!~	-
215*e6d6c189SCody Peter Mello		0
216*e6d6c189SCody Peter Mello		""
217*e6d6c189SCody Peter Mello[^0-]	~	x
218*e6d6c189SCody Peter Mello		^
219*e6d6c189SCody Peter Mello	!~	-
220*e6d6c189SCody Peter Mello		0
221*e6d6c189SCody Peter Mello		""
222*e6d6c189SCody Peter Mellox|y	~	x
223*e6d6c189SCody Peter Mello		y
224*e6d6c189SCody Peter Mello		xy
225*e6d6c189SCody Peter Mello	!~	a
226*e6d6c189SCody Peter Mello		""
227*e6d6c189SCody Peter Mello^abc|xyz$	~	abc
228*e6d6c189SCody Peter Mello		abcd
229*e6d6c189SCody Peter Mello		axyz
230*e6d6c189SCody Peter Mello		xyz
231*e6d6c189SCody Peter Mello	!~	xabc
232*e6d6c189SCody Peter Mello		xyza
233*e6d6c189SCody Peter Mello^(abc|xyz)$	~	abc
234*e6d6c189SCody Peter Mello		xyz
235*e6d6c189SCody Peter Mello	!~	abcxyz
236*e6d6c189SCody Peter Mello		abcx
237*e6d6c189SCody Peter Mello		cxyz
238*e6d6c189SCody Peter Mello^x\|y$	~	x|y
239*e6d6c189SCody Peter Mello	!~	xy
240*e6d6c189SCody Peter Mello^x\\y$	~	x\y
241*e6d6c189SCody Peter Mello	!~	xy
242*e6d6c189SCody Peter Mello		x\\y
243*e6d6c189SCody Peter Mello		xay
244*e6d6c189SCody Peter Mello\141\142	~	ab
245*e6d6c189SCody Peter Mello		xab
246*e6d6c189SCody Peter Mello		abx
247*e6d6c189SCody Peter Mello	!~	a
248*e6d6c189SCody Peter Mello		b
249*e6d6c189SCody Peter Mello		ax
250*e6d6c189SCody Peter Mello		axb
251*e6d6c189SCody Peter Mellox\056y	~	x.y
252*e6d6c189SCody Peter Mello	!~	x.
253*e6d6c189SCody Peter Mello		.x
254*e6d6c189SCody Peter Mello		xxx
255*e6d6c189SCody Peter Mello		xby  because \056 is not the metacharacter .
256*e6d6c189SCody Peter Mello		xcy  ditto
257*e6d6c189SCody Peter Mello[\60-\62\65-6\71]	~	0
258*e6d6c189SCody Peter Mello		1
259*e6d6c189SCody Peter Mello		2
260*e6d6c189SCody Peter Mello		5
261*e6d6c189SCody Peter Mello		6
262*e6d6c189SCody Peter Mello		9
263*e6d6c189SCody Peter Mello[\60-2\65-6\71]	~	0
264*e6d6c189SCody Peter Mello		1
265*e6d6c189SCody Peter Mello		2
266*e6d6c189SCody Peter Mello		5
267*e6d6c189SCody Peter Mello		6
268*e6d6c189SCody Peter Mello		9
269*e6d6c189SCody Peter Mello[\x30-\x32\x35-6\71]	~	0
270*e6d6c189SCody Peter Mello		1
271*e6d6c189SCody Peter Mello		2
272*e6d6c189SCody Peter Mello		5
273*e6d6c189SCody Peter Mello		6
274*e6d6c189SCody Peter Mello		9
275*e6d6c189SCody Peter Mello[\x30-2\x35-6\x39]	~	0
276*e6d6c189SCody Peter Mello		1
277*e6d6c189SCody Peter Mello		2
278*e6d6c189SCody Peter Mello		5
279*e6d6c189SCody Peter Mello		6
280*e6d6c189SCody Peter Mello		9
281*e6d6c189SCody Peter Mello\f	!~	x
282*e6d6c189SCody Peter Mello\b	!~	x
283*e6d6c189SCody Peter Mello\r	!~	x
284*e6d6c189SCody Peter Mello\n	!~	x
285*e6d6c189SCody Peter Mello!!!!
286