xref: /freebsd/tools/test/sort/bigtest/kcmd (revision 8ddb146abcdf061be9f2c0db7e391697dafad85c)
1#!/bin/sh
2
3# $FreeBSD$
4
5rm -rf siks
6mkdir -p siks
7
8export GNUSORT_NUMERIC_COMPATIBILITY=x
9
10BSDSORT=../sort
11GNUSORT=~/coreutils/bin/sort
12#GNUSORT=sort
13
14FILECMP=cmp
15
16INPUT_FILE=si
17
18rm -rf test.log
19
20#ru_RU.ISO-8859-5 en_US.ISO8859-15 zh_HK.Big5HKSCS
21#
22# ru KOI-8 is an "irregular" locale with non-trivial ordering.
23# zh* is a 2-bytes locale
24
25for lang in ru_RU.KOI8-R C ru_RU.ISO-8859-5 en_US.ISO8859-15 zh_HK.Big5HKSCS
26do
27
28    export LANG=${lang}
29
30    for KEYS in -srh -sfrudb -Vs -sM -siz
31    do
32
33	echo ${LANG} ${KEYS}
34
35	${BSDSORT} ${KEYS} ${INPUT_FILE} -o siks/sik1
36	ER=$?
37	if ! [ ${ER} -eq 0 ] ; then
38	    echo ${LANG} ${KEYS} crash >> test.log
39	    exit
40	fi
41	${GNUSORT} ${KEYS} ${INPUT_FILE} -o siks/sik2
42	if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then
43	    echo ${LANG} ${KEYS}  error >> test.log
44	fi
45	${BSDSORT} -c ${KEYS}  siks/sik1
46	ER=$?
47	if ! [ ${ER} -eq 0 ] ; then
48	    echo ${LANG} ${KEYS}  -c error  >> test.log
49	fi
50	rm siks/res.0.0
51
52	${BSDSORT} ${KEYS} -t " "  ${INPUT_FILE} -o siks/sik1
53	ER=$?
54	if ! [ ${ER} -eq 0 ] ; then
55	    echo ${LANG} ${KEYS} -t " " crash >> test.log
56	    exit
57	fi
58	${GNUSORT} ${KEYS} -t " "  ${INPUT_FILE} -o siks/sik2
59	if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then
60	    echo ${LANG} ${KEYS} error -t " " >> test.log
61	fi
62	${BSDSORT} -c -t " " ${KEYS}  siks/sik1
63	ER=$?
64	if ! [ ${ER} -eq 0 ] ; then
65	    echo $? ${LANG} ${KEYS}  -t " " -c error >> test.log
66	fi
67	rm siks/res.0.0
68
69	${BSDSORT} ${KEYS} -t "|"  ${INPUT_FILE} -o siks/sik1
70	ER=$?
71	if ! [ ${ER} -eq 0 ] ; then
72	    echo ${LANG} ${KEYS} -t "|" crash >> test.log
73	    exit
74	fi
75	${GNUSORT} ${KEYS} -t "|"  ${INPUT_FILE} -o siks/sik2
76	if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then
77	    echo ${LANG} ${KEYS}  error -t "|" >> test.log
78	fi
79	${BSDSORT} -c -t "|" ${KEYS}  siks/sik1
80	ER=$?
81	if ! [ ${ER} -eq 0 ] ; then
82	    echo ${LANG} ${KEYS}  -c -t "|" error >> test.log
83	fi
84	rm siks/res.0.0
85
86	${BSDSORT} ${KEYS} -t '\0' ${INPUT_FILE} -o siks/sik1
87	ER=$?
88	if ! [ ${ER} -eq 0 ] ; then
89	    echo ${LANG} ${KEYS} -t 0 crash >> test.log
90	    exit
91	fi
92	${GNUSORT} ${KEYS} -t '\0' ${INPUT_FILE} -o siks/sik2
93	if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then
94	    echo ${LANG} ${KEYS} error -t '\0' >> test.log
95	fi
96	${BSDSORT} -c -t '\0' ${KEYS} siks/sik1
97	ER=$?
98	if ! [ ${ER} -eq 0 ] ; then
99	    echo ${LANG} ${KEYS} -c -t '\0' error >> test.log
100	fi
101	rm siks/res.0.0
102
103	for f1 in 1 2 3 4 5 6 7 8 9
104	do
105	    for c1 in 1 2 3 4 5 10 15 20 25 30
106	    do
107		echo ${LANG} ${KEYS} ${f1} ${c1}
108
109		${BSDSORT} ${KEYS} +${f1}.${c1} ${INPUT_FILE} -o siks/sik1
110		ER=$?
111		if ! [ ${ER} -eq 0 ] ; then
112	        echo ${LANG} ${KEYS} +${f1}.${c1} crash +- >> test.log
113	        exit
114		fi
115		${GNUSORT} ${KEYS} +${f1}.${c1} ${INPUT_FILE} -o siks/sik2
116		if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
117		    echo ${LANG} ${KEYS} +${f1}.${c1} error +- >> test.log
118		fi
119		${BSDSORT} -c ${KEYS} +${f1}.${c1} siks/sik1
120		ER=$?
121		if ! [ ${ER} -eq 0 ] ; then
122		    echo ${LANG} ${KEYS} +${f1}.${c1} -c error +- >> test.log
123		fi
124		rm siks/res.${f1}.${c1}
125
126		${BSDSORT} ${KEYS} -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1
127		ER=$?
128		if ! [ ${ER} -eq 0 ] ; then
129	        echo ${LANG} ${KEYS} -k${f1}.${c1} crash >> test.log
130	        exit
131		fi
132		${GNUSORT} ${KEYS} -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2
133		if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
134		    echo ${LANG} ${KEYS} -k${f1}.${c1} error >> test.log
135		fi
136		${BSDSORT} -c ${KEYS} -k${f1}.${c1} siks/sik1
137		ER=$?
138		if ! [ ${ER} -eq 0 ] ; then
139		    echo ${LANG} ${KEYS} -k${f1}.${c1} -c error >> test.log
140		fi
141		rm siks/res.${f1}.${c1}
142
143		${BSDSORT} ${KEYS} -k${f1}.${c1}b ${INPUT_FILE} -o siks/sik1
144		ER=$?
145		if ! [ ${ER} -eq 0 ] ; then
146	        echo ${LANG} ${KEYS} -k${f1}.${c1}b crash >> test.log
147	        exit
148		fi
149		${GNUSORT} ${KEYS} -k${f1}.${c1}b ${INPUT_FILE} -o siks/sik2
150		if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
151		    echo ${LANG} ${KEYS} -k${f1}.${c1}b error >> test.log
152		fi
153		${BSDSORT} -c ${KEYS} -k${f1}.${c1}b siks/sik1
154		ER=$?
155		if ! [ ${ER} -eq 0 ] ; then
156		    echo ${LANG} ${KEYS} -k${f1}.${c1}b -c error >> test.log
157		fi
158		rm siks/res.${f1}.${c1}
159
160		${BSDSORT} ${KEYS} -t " " -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1
161		ER=$?
162		if ! [ ${ER} -eq 0 ] ; then
163	            echo ${LANG} ${KEYS} -t -k${f1}.${c1} crash >> test.log
164	            exit
165		fi
166		${GNUSORT} ${KEYS} -t " " -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2
167		if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
168		    echo ${LANG} ${KEYS} -k${f1}.${c1} error -t " " >> test.log
169		fi
170		${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1} siks/sik1
171		ER=$?
172		if ! [ ${ER} -eq 0 ] ; then
173		    echo ${LANG} ${KEYS} -k${f1}.${c1} -t " " -c error >> test.log
174		fi
175		rm siks/res.${f1}.${c1}
176
177		${BSDSORT} ${KEYS} -t " " -k${f1}.${c1}n ${INPUT_FILE} -o siks/sik1
178		ER=$?
179		if ! [ ${ER} -eq 0 ] ; then
180	            echo ${LANG} ${KEYS} -k${f1}.${c1}n crash >> test.log
181	            exit
182		fi
183		${GNUSORT} ${KEYS} -t " " -k${f1}.${c1}n ${INPUT_FILE} -o siks/sik2
184		if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
185		    echo ${LANG} ${KEYS} -k${f1}.${c1} error -t " " n >> test.log
186		fi
187		${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1}n siks/sik1
188		ER=$?
189		if ! [ ${ER} -eq 0 ] ; then
190		    echo ${LANG} ${KEYS} -k${f1}.${c1} -c -t " " n error >> test.log
191		fi
192		rm siks/res.${f1}.${c1}
193
194		${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1
195		ER=$?
196		if ! [ ${ER} -eq 0 ] ; then
197	            echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1} crash >> test.log
198	            exit
199		fi
200		${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2
201		if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then
202		    echo ${LANG} ${KEYS} -k${f1}.${c1} error -t "|" >> test.log
203		fi
204		${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1} siks/sik1
205		ER=$?
206		if ! [ ${ER} -eq 0 ] ; then
207		    echo ${LANG} ${KEYS} -k${f1}.${c1} -c -t "|" error >> test.log
208		fi
209		rm siks/res.${f1}.${c1}
210
211		for f2 in 1 2 3 4 5 6 7 8 9 10
212		do
213		    for c2 in 0 1 2 3 4 5 10 15 20 25 30
214		    do
215			echo ${LANG} ${KEYS} ${f1} ${c1} ${f2} ${c2}
216
217			${BSDSORT} ${KEYS} +${f1}.${c1} -${f2}.${c2} ${INPUT_FILE} -o siks/sik1
218	    		ER=$?
219	    		if ! [ ${ER} -eq 0 ] ; then
220	        	    echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} crash >> test.log
221	        	    exit
222			fi
223			${GNUSORT} ${KEYS} +${f1}.${c1} -${f2}.${c2} ${INPUT_FILE} -o siks/sik2
224			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
225			    echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} error +- >> test.log
226			fi
227			${BSDSORT} -c ${KEYS} +${f1}.${c1} -${f2}.${c2} siks/sik1
228			ER=$?
229			if ! [ ${ER} -eq 0 ] ; then
230			    echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} -c error +- >> test.log
231			fi
232			rm siks/res.${f1}.${c1}.${f2}.${c2}
233
234			${BSDSORT} ${KEYS} -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1
235	    		ER=$?
236	    		if ! [ ${ER} -eq 0 ] ; then
237	        	    echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} crash >> test.log
238	        	    exit
239			fi
240			${GNUSORT} ${KEYS} -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2
241			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
242			    echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error >> test.log
243			fi
244			${BSDSORT} -c ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1
245			ER=$?
246			if ! [ ${ER} -eq 0 ] ; then
247			    echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c error >> test.log
248			fi
249			rm siks/res.${f1}.${c1}.${f2}.${c2}
250
251			${BSDSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} ${INPUT_FILE} -o siks/sik1
252	    		ER=$?
253	    		if ! [ ${ER} -eq 0 ] ; then
254	        	    echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} crash >> test.log
255	        	    exit
256			fi
257			${GNUSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} ${INPUT_FILE} -o siks/sik2
258			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
259			    echo ${LANG} ${KEYS} -k${f1}.${c1}.b.${f2}.${c2} error >> test.log
260			fi
261			${BSDSORT} -c ${KEYS} -k${f1}.${c1}b,${f2}.${c2} siks/sik1
262			ER=$?
263			if ! [ ${ER} -eq 0 ] ; then
264			    echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -c error >> test.log
265			fi
266			rm siks/res.${f1}.${c1}.${f2}.${c2}
267
268			${BSDSORT} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1
269	    		ER=$?
270	    		if ! [ ${ER} -eq 0 ] ; then
271	        	    echo ${LANG} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} crash >> test.log
272	        	    exit
273			fi
274			${GNUSORT} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2
275			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
276			    echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t " " >> test.log
277			fi
278			${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1
279			ER=$?
280			if ! [ ${ER} -eq 0 ] ; then
281			    echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t " " error >> test.log
282			fi
283			rm siks/res.${f1}.${c1}.${f2}.${c2}
284
285			${BSDSORT} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik1
286	    		ER=$?
287	    		if ! [ ${ER} -eq 0 ] ; then
288	        	    echo ${LANG} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} crash >> test.log
289	        	    exit
290			fi
291			${GNUSORT} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik2
292			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
293			    echo ${LANG} ${KEYS} -t " " -k${f1}.${c1}.${f2}.${c2} error n >> test.log
294			fi
295			${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1}n,${f2}.${c2} siks/sik1
296			ER=$?
297			if ! [ ${ER} -eq 0 ] ; then
298			    echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t " " n error >> test.log
299			fi
300			rm siks/res.${f1}.${c1}.${f2}.${c2}
301
302			${BSDSORT} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik1
303	    		ER=$?
304	    		if ! [ ${ER} -eq 0 ] ; then
305	        	    echo ${LANG} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} crash >> test.log
306	        	    exit
307			fi
308			${GNUSORT} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik2
309			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
310			    echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t '\0' n >> test.log
311			fi
312			${BSDSORT} -c -t '\0' ${KEYS} -k${f1}.${c1}n,${f2}.${c2} siks/sik1
313			ER=$?
314			if ! [ ${ER} -eq 0 ] ; then
315			    echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t '\0' n error >> test.log
316			fi
317			rm siks/res.${f1}.${c1}.${f2}.${c2}
318
319			${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1
320	    		ER=$?
321	    		if ! [ ${ER} -eq 0 ] ; then
322	        	    echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} crash >> test.log
323	        	    exit
324			fi
325			${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2
326			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
327			    echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t "|" >> test.log
328			fi
329			${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1
330			ER=$?
331			if ! [ ${ER} -eq 0 ] ; then
332			    echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t "|" error >> test.log
333			fi
334			rm siks/res.${f1}.${c1}.${f2}.${c2}
335
336			${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik1
337	    		ER=$?
338	    		if ! [ ${ER} -eq 0 ] ; then
339	        	    echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} crash >> test.log
340	        	    exit
341			fi
342			${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik2
343			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
344			    echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t "|" 2k >> test.log
345			fi
346			${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} siks/sik1
347			ER=$?
348			if ! [ ${ER} -eq 0 ] ; then
349			    echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t "|" 2k error >> test.log
350			fi
351			rm siks/res.${f1}.${c1}.${f2}.${c2}
352
353			${BSDSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik1
354	    		ER=$?
355	    		if ! [ ${ER} -eq 0 ] ; then
356	        	    echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} crash >> test.log
357	        	    exit
358			fi
359			${GNUSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik2
360			if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then
361			    echo ${LANG} ${KEYS} -k${f1}.${c1}.b.${f2}.${c2} error 2k >> test.log
362			fi
363			${BSDSORT} -c ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} siks/sik1
364			ER=$?
365			if ! [ ${ER} -eq 0 ] ; then
366			    echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -c 2k error >> test.log
367			fi
368			rm siks/res.${f1}.${c1}.${f2}.${c2}
369
370		    done
371		done
372	    done
373	done
374    done
375done
376
377