From 82d4c3a2eaaf552de97ecce0dedcdd15ed69b2d2 Mon Sep 17 00:00:00 2001 From: James Youngman Date: Mon, 2 May 2005 23:27:05 +0000 Subject: [PATCH] Added Dmitry V. Levin's additional test cases for xargs, together with enhancements whioch ensure that xargs passes the extra tests --- xargs/testsuite/config/unix.exp | 100 ++++++++++-------- xargs/testsuite/inputs/EOF.xi | 5 + xargs/testsuite/inputs/EOFb.xi | 5 + xargs/testsuite/inputs/EOFe.xi | 5 + xargs/testsuite/inputs/Pdata.xi | 3 + xargs/testsuite/inputs/eof_-0.xi | Bin 0 -> 20 bytes xargs/testsuite/inputs/eof_.xi | 5 + xargs/testsuite/inputs/ett.xi | 3 + xargs/testsuite/inputs/ftt.xi | 3 + xargs/testsuite/inputs/items-0.xi | Bin 0 -> 63 bytes xargs/testsuite/inputs/items.xi | 8 ++ xargs/testsuite/inputs/ldata-0.xi | Bin 0 -> 108 bytes xargs/testsuite/inputs/ldata.xi | 9 ++ xargs/testsuite/inputs/ldatab-0.xi | Bin 0 -> 118 bytes xargs/testsuite/inputs/ldatab.xi | 10 ++ xargs/testsuite/inputs/noeof-0.xi | Bin 0 -> 12 bytes xargs/testsuite/inputs/noeof.xi | 2 + xargs/testsuite/inputs/space.xi | 2 + xargs/testsuite/inputs/stairs-0.xi | Bin 0 -> 108 bytes xargs/testsuite/inputs/stairs.xi | 18 ++++ xargs/testsuite/inputs/stairs2-0.xi | Bin 0 -> 108 bytes xargs/testsuite/inputs/stairs2.xi | 18 ++++ xargs/testsuite/inputs/stt.xi | 3 + xargs/testsuite/inputs/unmatched.xi | 3 + xargs/testsuite/inputs/unmatched2.xi | 2 + xargs/testsuite/xargs.gnu/E_-0.exp | 1 + xargs/testsuite/xargs.gnu/E_-0.xo | 1 + xargs/testsuite/xargs.gnu/L2-0.exp | 1 + xargs/testsuite/xargs.gnu/L2-0.xo | 5 + xargs/testsuite/xargs.gnu/L2_2-0.exp | 1 + xargs/testsuite/xargs.gnu/L2_2-0.xo | 5 + xargs/testsuite/xargs.gnu/L3-0.exp | 1 + xargs/testsuite/xargs.gnu/L3-0.xo | 3 + xargs/testsuite/xargs.gnu/P3-n1-IARG.exp | 1 + xargs/testsuite/xargs.gnu/P3-n1-IARG.xo | 3 + xargs/testsuite/xargs.gnu/empty-r.exp | 1 + xargs/testsuite/xargs.gnu/empty_def-r.exp | 1 + xargs/testsuite/xargs.gnu/idef-0.exp | 1 + xargs/testsuite/xargs.gnu/idef-0.xo | 20 ++++ xargs/testsuite/xargs.gnu/idef-s26-0.exp | 1 + xargs/testsuite/xargs.gnu/idef-s26-0.xo | 1 + xargs/testsuite/xargs.gnu/l1-0.exp | 1 + xargs/testsuite/xargs.gnu/l1-0.xo | 9 ++ xargs/testsuite/xargs.gnu/l1_2-0.exp | 1 + xargs/testsuite/xargs.gnu/l1_2-0.xo | 10 ++ xargs/testsuite/xargs.gnu/n1-0.exp | 1 + xargs/testsuite/xargs.gnu/n1-0.xo | 18 ++++ xargs/testsuite/xargs.gnu/n2-0.exp | 1 + xargs/testsuite/xargs.gnu/n2-0.xo | 9 ++ xargs/testsuite/xargs.gnu/n2-s26-0.exp | 1 + xargs/testsuite/xargs.gnu/n2-s26-0.xo | 11 ++ xargs/testsuite/xargs.gnu/n2-s26-x-0.exp | 1 + xargs/testsuite/xargs.gnu/n2-s26-x-0.xo | 3 + xargs/testsuite/xargs.gnu/n3-0.exp | 1 + xargs/testsuite/xargs.gnu/n3-0.xo | 6 ++ xargs/testsuite/xargs.gnu/n3-s36-0.exp | 1 + xargs/testsuite/xargs.gnu/n3-s36-0.xo | 7 ++ xargs/testsuite/xargs.gnu/noeof-0.exp | 1 + xargs/testsuite/xargs.gnu/noeof-0.xo | 1 + xargs/testsuite/xargs.gnu/s118-0.exp | 1 + xargs/testsuite/xargs.gnu/s118-0.xo | 1 + xargs/testsuite/xargs.gnu/s19-0.exp | 1 + xargs/testsuite/xargs.gnu/s19-0.xo | 6 ++ xargs/testsuite/xargs.gnu/s19_2-0.exp | 1 + xargs/testsuite/xargs.gnu/s20-0.exp | 1 + xargs/testsuite/xargs.gnu/s20-0.xo | 14 +++ xargs/testsuite/xargs.gnu/s30-0.exp | 1 + xargs/testsuite/xargs.gnu/s30-0.xo | 6 ++ xargs/testsuite/xargs.gnu/space-0.exp | 1 + xargs/testsuite/xargs.gnu/space-0.xo | 3 + xargs/testsuite/xargs.gnu/space-r.exp | 1 + xargs/testsuite/xargs.gnu/space-t-0.exp | 1 + xargs/testsuite/xargs.gnu/space-t-0.xe | 3 + xargs/testsuite/xargs.gnu/space-t-0.xo | 3 + xargs/testsuite/xargs.posix/EEOF.exp | 1 + xargs/testsuite/xargs.posix/EEOF.xo | 1 + xargs/testsuite/xargs.posix/EEOFb.exp | 1 + xargs/testsuite/xargs.posix/EEOFb.xo | 1 + xargs/testsuite/xargs.posix/EEOFe.exp | 1 + xargs/testsuite/xargs.posix/EEOFe.xo | 1 + xargs/testsuite/xargs.posix/E_-IARG.exp | 1 + xargs/testsuite/xargs.posix/E_-IARG.xo | 2 + xargs/testsuite/xargs.posix/E_.exp | 1 + xargs/testsuite/xargs.posix/E_.xo | 1 + xargs/testsuite/xargs.posix/IARG-E_.exp | 1 + xargs/testsuite/xargs.posix/IARG-E_.xo | 5 + xargs/testsuite/xargs.posix/IARG-s15.exp | 1 + xargs/testsuite/xargs.posix/IARG-s15.xo | 18 ++++ xargs/testsuite/xargs.posix/IARG.exp | 1 + xargs/testsuite/xargs.posix/IARG.xo | 6 ++ xargs/testsuite/xargs.posix/L2-n2.exp | 1 + xargs/testsuite/xargs.posix/L2-n2.xo | 9 ++ xargs/testsuite/xargs.posix/L2.exp | 1 + xargs/testsuite/xargs.posix/L2.xo | 5 + xargs/testsuite/xargs.posix/L2_2.exp | 1 + xargs/testsuite/xargs.posix/L2_2.xo | 3 + xargs/testsuite/xargs.posix/L3.exp | 1 + xargs/testsuite/xargs.posix/L3.xo | 3 + xargs/testsuite/xargs.posix/empty.exp | 1 + xargs/testsuite/xargs.posix/empty.xo | 1 + xargs/testsuite/xargs.posix/empty_def.exp | 1 + xargs/testsuite/xargs.posix/empty_def.xo | 1 + xargs/testsuite/xargs.posix/n1.exp | 1 + xargs/testsuite/xargs.posix/n1.xo | 18 ++++ xargs/testsuite/xargs.posix/n2-s26-x.exp | 1 + xargs/testsuite/xargs.posix/n2-s26-x.xo | 3 + xargs/testsuite/xargs.posix/n2-s26.exp | 1 + xargs/testsuite/xargs.posix/n2-s26.xo | 11 ++ xargs/testsuite/xargs.posix/n2.exp | 1 + xargs/testsuite/xargs.posix/n2.xo | 9 ++ xargs/testsuite/xargs.posix/n3-s36.exp | 1 + xargs/testsuite/xargs.posix/n3-s36.xo | 7 ++ xargs/testsuite/xargs.posix/noeof.exp | 1 + xargs/testsuite/xargs.posix/noeof.xo | 1 + xargs/testsuite/xargs.posix/rc-123.exp | 1 + xargs/testsuite/xargs.posix/rc-123.xo | 2 + xargs/testsuite/xargs.posix/rc-124.exp | 1 + xargs/testsuite/xargs.posix/rc-125.exp | 1 + xargs/testsuite/xargs.posix/rc-126.exp | 1 + xargs/testsuite/xargs.posix/rc-127.exp | 1 + xargs/testsuite/xargs.posix/s118.exp | 1 + xargs/testsuite/xargs.posix/s118.xo | 1 + xargs/testsuite/xargs.posix/s19.exp | 1 + xargs/testsuite/xargs.posix/s19.xo | 6 ++ xargs/testsuite/xargs.posix/s19_2.exp | 1 + xargs/testsuite/xargs.posix/s20.exp | 1 + xargs/testsuite/xargs.posix/s20.xo | 14 +++ xargs/testsuite/xargs.posix/s30.exp | 1 + xargs/testsuite/xargs.posix/s30.xo | 6 ++ xargs/testsuite/xargs.posix/s47.exp | 2 +- xargs/testsuite/xargs.posix/s470.exp | 2 +- xargs/testsuite/xargs.posix/s6.exp | 2 +- xargs/testsuite/xargs.posix/space-I.exp | 1 + xargs/testsuite/xargs.posix/space.exp | 1 + xargs/testsuite/xargs.posix/space.xo | 1 + .../testsuite/xargs.posix/unmatched-n2-x.exp | 1 + xargs/testsuite/xargs.posix/unmatched.exp | 1 + xargs/testsuite/xargs.posix/unmatched.xo | 1 + xargs/testsuite/xargs.posix/unmatched2.exp | 1 + xargs/testsuite/xargs.posix/unmatched2.xo | 1 + xargs/testsuite/xargs.sysv/e.exp | 1 + xargs/testsuite/xargs.sysv/e.xo | 1 + xargs/testsuite/xargs.sysv/empty-t.exp | 1 + xargs/testsuite/xargs.sysv/empty-t.xe | 1 + xargs/testsuite/xargs.sysv/empty-t.xo | 1 + xargs/testsuite/xargs.sysv/empty_def-t.exp | 1 + xargs/testsuite/xargs.sysv/empty_def-t.xe | 1 + xargs/testsuite/xargs.sysv/empty_def-t.xo | 1 + xargs/testsuite/xargs.sysv/idef-s26.exp | 1 + xargs/testsuite/xargs.sysv/idef-s26.xo | 1 + xargs/testsuite/xargs.sysv/idef.exp | 1 + xargs/testsuite/xargs.sysv/idef.xo | 6 ++ xargs/testsuite/xargs.sysv/l1.exp | 1 + xargs/testsuite/xargs.sysv/l1.xo | 9 ++ xargs/testsuite/xargs.sysv/l1_2.exp | 1 + xargs/testsuite/xargs.sysv/l1_2.xo | 6 ++ xargs/testsuite/xargs.sysv/s30-t.exp | 1 + xargs/testsuite/xargs.sysv/s30-t.xe | 6 ++ xargs/testsuite/xargs.sysv/s30-t.xo | 6 ++ xargs/testsuite/xargs.sysv/space-t.exp | 1 + xargs/testsuite/xargs.sysv/space-t.xe | 1 + xargs/testsuite/xargs.sysv/space-t.xo | 1 + xargs/xargs.c | 54 ++++++++-- 163 files changed, 610 insertions(+), 51 deletions(-) create mode 100644 xargs/testsuite/inputs/EOF.xi create mode 100644 xargs/testsuite/inputs/EOFb.xi create mode 100644 xargs/testsuite/inputs/EOFe.xi create mode 100644 xargs/testsuite/inputs/Pdata.xi create mode 100644 xargs/testsuite/inputs/eof_-0.xi create mode 100644 xargs/testsuite/inputs/eof_.xi create mode 100644 xargs/testsuite/inputs/ett.xi create mode 100644 xargs/testsuite/inputs/ftt.xi create mode 100644 xargs/testsuite/inputs/items-0.xi create mode 100644 xargs/testsuite/inputs/items.xi create mode 100644 xargs/testsuite/inputs/ldata-0.xi create mode 100644 xargs/testsuite/inputs/ldata.xi create mode 100644 xargs/testsuite/inputs/ldatab-0.xi create mode 100644 xargs/testsuite/inputs/ldatab.xi create mode 100644 xargs/testsuite/inputs/noeof-0.xi create mode 100644 xargs/testsuite/inputs/noeof.xi create mode 100644 xargs/testsuite/inputs/space.xi create mode 100644 xargs/testsuite/inputs/stairs-0.xi create mode 100644 xargs/testsuite/inputs/stairs.xi create mode 100644 xargs/testsuite/inputs/stairs2-0.xi create mode 100644 xargs/testsuite/inputs/stairs2.xi create mode 100644 xargs/testsuite/inputs/stt.xi create mode 100644 xargs/testsuite/inputs/unmatched.xi create mode 100644 xargs/testsuite/inputs/unmatched2.xi create mode 100644 xargs/testsuite/xargs.gnu/E_-0.exp create mode 100644 xargs/testsuite/xargs.gnu/E_-0.xo create mode 100644 xargs/testsuite/xargs.gnu/L2-0.exp create mode 100644 xargs/testsuite/xargs.gnu/L2-0.xo create mode 100644 xargs/testsuite/xargs.gnu/L2_2-0.exp create mode 100644 xargs/testsuite/xargs.gnu/L2_2-0.xo create mode 100644 xargs/testsuite/xargs.gnu/L3-0.exp create mode 100644 xargs/testsuite/xargs.gnu/L3-0.xo create mode 100644 xargs/testsuite/xargs.gnu/P3-n1-IARG.exp create mode 100644 xargs/testsuite/xargs.gnu/P3-n1-IARG.xo create mode 100644 xargs/testsuite/xargs.gnu/empty-r.exp create mode 100644 xargs/testsuite/xargs.gnu/empty_def-r.exp create mode 100644 xargs/testsuite/xargs.gnu/idef-0.exp create mode 100644 xargs/testsuite/xargs.gnu/idef-0.xo create mode 100644 xargs/testsuite/xargs.gnu/idef-s26-0.exp create mode 100644 xargs/testsuite/xargs.gnu/idef-s26-0.xo create mode 100644 xargs/testsuite/xargs.gnu/l1-0.exp create mode 100644 xargs/testsuite/xargs.gnu/l1-0.xo create mode 100644 xargs/testsuite/xargs.gnu/l1_2-0.exp create mode 100644 xargs/testsuite/xargs.gnu/l1_2-0.xo create mode 100644 xargs/testsuite/xargs.gnu/n1-0.exp create mode 100644 xargs/testsuite/xargs.gnu/n1-0.xo create mode 100644 xargs/testsuite/xargs.gnu/n2-0.exp create mode 100644 xargs/testsuite/xargs.gnu/n2-0.xo create mode 100644 xargs/testsuite/xargs.gnu/n2-s26-0.exp create mode 100644 xargs/testsuite/xargs.gnu/n2-s26-0.xo create mode 100644 xargs/testsuite/xargs.gnu/n2-s26-x-0.exp create mode 100644 xargs/testsuite/xargs.gnu/n2-s26-x-0.xo create mode 100644 xargs/testsuite/xargs.gnu/n3-0.exp create mode 100644 xargs/testsuite/xargs.gnu/n3-0.xo create mode 100644 xargs/testsuite/xargs.gnu/n3-s36-0.exp create mode 100644 xargs/testsuite/xargs.gnu/n3-s36-0.xo create mode 100644 xargs/testsuite/xargs.gnu/noeof-0.exp create mode 100644 xargs/testsuite/xargs.gnu/noeof-0.xo create mode 100644 xargs/testsuite/xargs.gnu/s118-0.exp create mode 100644 xargs/testsuite/xargs.gnu/s118-0.xo create mode 100644 xargs/testsuite/xargs.gnu/s19-0.exp create mode 100644 xargs/testsuite/xargs.gnu/s19-0.xo create mode 100644 xargs/testsuite/xargs.gnu/s19_2-0.exp create mode 100644 xargs/testsuite/xargs.gnu/s20-0.exp create mode 100644 xargs/testsuite/xargs.gnu/s20-0.xo create mode 100644 xargs/testsuite/xargs.gnu/s30-0.exp create mode 100644 xargs/testsuite/xargs.gnu/s30-0.xo create mode 100644 xargs/testsuite/xargs.gnu/space-0.exp create mode 100644 xargs/testsuite/xargs.gnu/space-0.xo create mode 100644 xargs/testsuite/xargs.gnu/space-r.exp create mode 100644 xargs/testsuite/xargs.gnu/space-t-0.exp create mode 100644 xargs/testsuite/xargs.gnu/space-t-0.xe create mode 100644 xargs/testsuite/xargs.gnu/space-t-0.xo create mode 100644 xargs/testsuite/xargs.posix/EEOF.exp create mode 100644 xargs/testsuite/xargs.posix/EEOF.xo create mode 100644 xargs/testsuite/xargs.posix/EEOFb.exp create mode 100644 xargs/testsuite/xargs.posix/EEOFb.xo create mode 100644 xargs/testsuite/xargs.posix/EEOFe.exp create mode 100644 xargs/testsuite/xargs.posix/EEOFe.xo create mode 100644 xargs/testsuite/xargs.posix/E_-IARG.exp create mode 100644 xargs/testsuite/xargs.posix/E_-IARG.xo create mode 100644 xargs/testsuite/xargs.posix/E_.exp create mode 100644 xargs/testsuite/xargs.posix/E_.xo create mode 100644 xargs/testsuite/xargs.posix/IARG-E_.exp create mode 100644 xargs/testsuite/xargs.posix/IARG-E_.xo create mode 100644 xargs/testsuite/xargs.posix/IARG-s15.exp create mode 100644 xargs/testsuite/xargs.posix/IARG-s15.xo create mode 100644 xargs/testsuite/xargs.posix/IARG.exp create mode 100644 xargs/testsuite/xargs.posix/IARG.xo create mode 100644 xargs/testsuite/xargs.posix/L2-n2.exp create mode 100644 xargs/testsuite/xargs.posix/L2-n2.xo create mode 100644 xargs/testsuite/xargs.posix/L2.exp create mode 100644 xargs/testsuite/xargs.posix/L2.xo create mode 100644 xargs/testsuite/xargs.posix/L2_2.exp create mode 100644 xargs/testsuite/xargs.posix/L2_2.xo create mode 100644 xargs/testsuite/xargs.posix/L3.exp create mode 100644 xargs/testsuite/xargs.posix/L3.xo create mode 100644 xargs/testsuite/xargs.posix/empty.exp create mode 100644 xargs/testsuite/xargs.posix/empty.xo create mode 100644 xargs/testsuite/xargs.posix/empty_def.exp create mode 100644 xargs/testsuite/xargs.posix/empty_def.xo create mode 100644 xargs/testsuite/xargs.posix/n1.exp create mode 100644 xargs/testsuite/xargs.posix/n1.xo create mode 100644 xargs/testsuite/xargs.posix/n2-s26-x.exp create mode 100644 xargs/testsuite/xargs.posix/n2-s26-x.xo create mode 100644 xargs/testsuite/xargs.posix/n2-s26.exp create mode 100644 xargs/testsuite/xargs.posix/n2-s26.xo create mode 100644 xargs/testsuite/xargs.posix/n2.exp create mode 100644 xargs/testsuite/xargs.posix/n2.xo create mode 100644 xargs/testsuite/xargs.posix/n3-s36.exp create mode 100644 xargs/testsuite/xargs.posix/n3-s36.xo create mode 100644 xargs/testsuite/xargs.posix/noeof.exp create mode 100644 xargs/testsuite/xargs.posix/noeof.xo create mode 100644 xargs/testsuite/xargs.posix/rc-123.exp create mode 100644 xargs/testsuite/xargs.posix/rc-123.xo create mode 100644 xargs/testsuite/xargs.posix/rc-124.exp create mode 100644 xargs/testsuite/xargs.posix/rc-125.exp create mode 100644 xargs/testsuite/xargs.posix/rc-126.exp create mode 100644 xargs/testsuite/xargs.posix/rc-127.exp create mode 100644 xargs/testsuite/xargs.posix/s118.exp create mode 100644 xargs/testsuite/xargs.posix/s118.xo create mode 100644 xargs/testsuite/xargs.posix/s19.exp create mode 100644 xargs/testsuite/xargs.posix/s19.xo create mode 100644 xargs/testsuite/xargs.posix/s19_2.exp create mode 100644 xargs/testsuite/xargs.posix/s20.exp create mode 100644 xargs/testsuite/xargs.posix/s20.xo create mode 100644 xargs/testsuite/xargs.posix/s30.exp create mode 100644 xargs/testsuite/xargs.posix/s30.xo create mode 100644 xargs/testsuite/xargs.posix/space-I.exp create mode 100644 xargs/testsuite/xargs.posix/space.exp create mode 100644 xargs/testsuite/xargs.posix/space.xo create mode 100644 xargs/testsuite/xargs.posix/unmatched-n2-x.exp create mode 100644 xargs/testsuite/xargs.posix/unmatched.exp create mode 100644 xargs/testsuite/xargs.posix/unmatched.xo create mode 100644 xargs/testsuite/xargs.posix/unmatched2.exp create mode 100644 xargs/testsuite/xargs.posix/unmatched2.xo create mode 100644 xargs/testsuite/xargs.sysv/e.exp create mode 100644 xargs/testsuite/xargs.sysv/e.xo create mode 100644 xargs/testsuite/xargs.sysv/empty-t.exp create mode 100644 xargs/testsuite/xargs.sysv/empty-t.xe create mode 100644 xargs/testsuite/xargs.sysv/empty-t.xo create mode 100644 xargs/testsuite/xargs.sysv/empty_def-t.exp create mode 100644 xargs/testsuite/xargs.sysv/empty_def-t.xe create mode 100644 xargs/testsuite/xargs.sysv/empty_def-t.xo create mode 100644 xargs/testsuite/xargs.sysv/idef-s26.exp create mode 100644 xargs/testsuite/xargs.sysv/idef-s26.xo create mode 100644 xargs/testsuite/xargs.sysv/idef.exp create mode 100644 xargs/testsuite/xargs.sysv/idef.xo create mode 100644 xargs/testsuite/xargs.sysv/l1.exp create mode 100644 xargs/testsuite/xargs.sysv/l1.xo create mode 100644 xargs/testsuite/xargs.sysv/l1_2.exp create mode 100644 xargs/testsuite/xargs.sysv/l1_2.xo create mode 100644 xargs/testsuite/xargs.sysv/s30-t.exp create mode 100644 xargs/testsuite/xargs.sysv/s30-t.xe create mode 100644 xargs/testsuite/xargs.sysv/s30-t.xo create mode 100644 xargs/testsuite/xargs.sysv/space-t.exp create mode 100644 xargs/testsuite/xargs.sysv/space-t.xe create mode 100644 xargs/testsuite/xargs.sysv/space-t.xo diff --git a/xargs/testsuite/config/unix.exp b/xargs/testsuite/config/unix.exp index 8f1a73c2..2d4e60b0 100644 --- a/xargs/testsuite/config/unix.exp +++ b/xargs/testsuite/config/unix.exp @@ -1,6 +1,6 @@ # -*- TCL -*- # Test-specific TCL procedures required by DejaGNU. -# Copyright (C) 1994 Free Software Foundation, Inc. +# Copyright (C) 1994, 2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,7 +17,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. -# Modified by David MacKenzie from the gcc files +# Modified by David MacKenzie from the gcc files # written by Rob Savoye . @@ -54,7 +54,7 @@ proc xargs_version {} { # Run xargs and leave the output in $comp_output. # Called by individual test scripts. -proc xargs_start { passfail options {infile ""}} { +proc xargs_start { passfail options {infile ""} {errh ""} } { global verbose global XARGS global XARGSFLAGS @@ -65,20 +65,34 @@ proc xargs_start { passfail options {infile ""}} { exit 1 } - set fail_good [string match "f*" $passfail] - set scriptname [uplevel {info script}] set testbase [file rootname $scriptname] set testname [file tail $testbase] + if {[string match "\[0-9\]*" $passfail]} then { + set execrc "$passfail" + } elseif {[string match "p*" $passfail]} then { + set execrc "0" + } elseif {[string match "f*" $passfail]} then { + set execrc "1" + } else { + fail "$testname, failure in testing framework: passfail=$passfail" + return + } + set outfile "$testbase.xo" - set errfile "$testbase.xe" if {$infile != ""} then { set infile "[file dirname [file dirname $testbase]]/inputs/$infile" } else { set infile /dev/null } + if {[string match "s*" $errh]} then { + set errfile "" + } else { + set errfile "$testbase.xe" + } + catch "exec rm -f xargs.out xargs.err" set cmd "$XARGS $XARGSFLAGS $options < $infile > xargs.out 2> xargs.err" @@ -87,25 +101,30 @@ proc xargs_start { passfail options {infile ""}} { send_user "Spawning \"$cmd\"\n" } - catch "exec $cmd" comp_output - if {$comp_output != ""} then { - # The command failed; if that was the desired effect, the - # test might still pass - send_log "$comp_output\n" - if $verbose>1 then { - send_user "$comp_output\n" - } - if $fail_good then { - # expected failure - pass "$testname" + set status 0 + if {[catch "exec $cmd" comp_output]} then { + if {[lindex $::errorCode 0] == "CHILDSTATUS"} then { + set status [lindex $::errorCode 2] } else { - # unexpected failure - fail "$testname, $comp_output" + fail "$testname, failure in testing framework, $comp_output" + return + } + } + + catch "exec cat xargs.err" comp_error + + if {$execrc != $status} then { + if {$status == 0} then { + fail "$testname, unexpected success" + } elseif {$execrc == 0} then { + fail "$testname, unexpected failure, $comp_output, $comp_error" + } else { + fail "$testname, expected exit code $execrc, but got exit code $status" } return } + # ok, at least exit code match. - # The command succeeded, but that might not have been the expected result. if [file exists $outfile] then { set cmp_cmd "cmp xargs.out $outfile" send_log "$cmp_cmd\n" @@ -113,35 +132,34 @@ proc xargs_start { passfail options {infile ""}} { if {$cmpout != ""} then { # stdout is wrong. catch "exec diff -u xargs.out $outfile" diffs - send_log "diffs: $diffs\n" + send_log "stdout diffs: $diffs\n" fail "$testname, wrong stdout output: $cmpout" return } - } else { - if {[file size xargs.out] != 0} then { - fail "$testname, output on stdout should be empty" - return - } + } elseif {[file size xargs.out] != 0} then { + fail "$testname, output on stdout should be empty" + return } - # If testname.xe exists, check the stderr result. - if [file exists $errfile] then { - set cmp_cmd "cmp xargs.err $errfile" - send_log "$cmp_cmd\n" - catch "exec $cmp_cmd" cmperr - if {$cmperr != ""} then { - # stderr is wrong. - catch "exec diff -u xargs.err $errfile" diffs - send_log "$diffs\n" - fail "$testname, wrong stderr output: $cmperr" - return - } - } else { - if {[file size xargs.err] != 0} then { + # if stderr check is enabled, + if {$errfile != ""} then { + if {[file exists $errfile]} then { + set cmp_cmd "cmp xargs.err $errfile" + send_log "$cmp_cmd\n" + catch "exec $cmp_cmd" cmperr + if {$cmperr != ""} then { + # stderr is wrong + catch "exec diff -ua xargs.err $errfile" diffs + send_log "stderr diffs: $diffs\n" + fail "$testname, wrong stderr output: $cmperr" + return + } + } elseif {[file size xargs.err] != 0} then { fail "$testname, output on stderr should be empty" return } } + pass "$testname" } @@ -150,5 +168,3 @@ proc xargs_start { passfail options {infile ""}} { proc xargs_exit {} { catch "exec rm -f xargs.out xargs.err" } - - diff --git a/xargs/testsuite/inputs/EOF.xi b/xargs/testsuite/inputs/EOF.xi new file mode 100644 index 00000000..2a1c7a41 --- /dev/null +++ b/xargs/testsuite/inputs/EOF.xi @@ -0,0 +1,5 @@ +one +two + EOF +three +four diff --git a/xargs/testsuite/inputs/EOFb.xi b/xargs/testsuite/inputs/EOFb.xi new file mode 100644 index 00000000..f302113c --- /dev/null +++ b/xargs/testsuite/inputs/EOFb.xi @@ -0,0 +1,5 @@ +one +two + bEOF +three +four diff --git a/xargs/testsuite/inputs/EOFe.xi b/xargs/testsuite/inputs/EOFe.xi new file mode 100644 index 00000000..f391070c --- /dev/null +++ b/xargs/testsuite/inputs/EOFe.xi @@ -0,0 +1,5 @@ +one +two + EOFe +three +four diff --git a/xargs/testsuite/inputs/Pdata.xi b/xargs/testsuite/inputs/Pdata.xi new file mode 100644 index 00000000..250f10d3 --- /dev/null +++ b/xargs/testsuite/inputs/Pdata.xi @@ -0,0 +1,3 @@ +sleep 2 && echo one +sleep 1 && echo two +echo three diff --git a/xargs/testsuite/inputs/eof_-0.xi b/xargs/testsuite/inputs/eof_-0.xi new file mode 100644 index 0000000000000000000000000000000000000000..6e6fa1a1149ba9b486de59bee347ceae245a9d46 GIT binary patch literal 20 bcmd1LOJyi2&u55dD9I>FO=U>SFD(K9Mdb$2 literal 0 HcmV?d00001 diff --git a/xargs/testsuite/inputs/eof_.xi b/xargs/testsuite/inputs/eof_.xi new file mode 100644 index 00000000..e6270a7d --- /dev/null +++ b/xargs/testsuite/inputs/eof_.xi @@ -0,0 +1,5 @@ +one +two +_ +three +four \ No newline at end of file diff --git a/xargs/testsuite/inputs/ett.xi b/xargs/testsuite/inputs/ett.xi new file mode 100644 index 00000000..ec546245 --- /dev/null +++ b/xargs/testsuite/inputs/ett.xi @@ -0,0 +1,3 @@ +exit 255 +echo 1 +echo 2 diff --git a/xargs/testsuite/inputs/ftt.xi b/xargs/testsuite/inputs/ftt.xi new file mode 100644 index 00000000..633a5d09 --- /dev/null +++ b/xargs/testsuite/inputs/ftt.xi @@ -0,0 +1,3 @@ +false +echo 1 +echo 2 diff --git a/xargs/testsuite/inputs/items-0.xi b/xargs/testsuite/inputs/items-0.xi new file mode 100644 index 0000000000000000000000000000000000000000..b217e3acac501907edc18ec4473db18bdefc7edf GIT binary patch literal 63 zcmW;C$q9f!5Jkav?Jb9nP1KtsIBNWUggVwaHag3~S)XH}XA8NfP*(|dn-Fiv-|^wX E2W$NbCIA2c literal 0 HcmV?d00001 diff --git a/xargs/testsuite/inputs/items.xi b/xargs/testsuite/inputs/items.xi new file mode 100644 index 00000000..163874eb --- /dev/null +++ b/xargs/testsuite/inputs/items.xi @@ -0,0 +1,8 @@ + +dumb + s s + f f + r r + t t + v v + \ No newline at end of file diff --git a/xargs/testsuite/inputs/ldata-0.xi b/xargs/testsuite/inputs/ldata-0.xi new file mode 100644 index 0000000000000000000000000000000000000000..eaee504bd7d072622d2b57449c365f3096e2a9f1 GIT binary patch literal 108 xcmZ|G$pHW$2m`Q=(iH&D{TCBKp5`B+D$R_|p= endbuf) - error (1, 0, _("argument line too long")); + { + exec_if_possible (); + error (1, 0, _("argument line too long")); + } *p++ = c; #else append_char_to_buf(&linebuf, &endbuf, &p, c); @@ -870,7 +883,10 @@ read_string (void) return len; } if (p >= endbuf) - error (1, 0, _("argument line too long")); + { + exec_if_possible (); + error (1, 0, _("argument line too long")); + } *p++ = c; } } @@ -980,6 +996,17 @@ xargs_do_exec (const struct buildcmd_control *ctl, struct buildcmd_state *state) return 1; /* Success */ } +/* Execute the command if possible. */ + +static void +exec_if_possible (void) +{ + if (bc_ctl.replace_pat || initial_args || + bc_state.cmd_argc == bc_ctl.initial_argc || bc_ctl.exit_if_size_exceeded) + return; + xargs_do_exec (&bc_ctl, &bc_state); +} + /* Add the process with id PID to the list of processes that have been executed. */ @@ -1057,6 +1084,21 @@ wait_for_proc (boolean all) } } +/* Wait for all child processes to finish. */ + +static void +wait_for_proc_all (void) +{ + static boolean waiting = false; + + if (waiting) + return; + + waiting = true; + wait_for_proc (true); + waiting = false; +} + /* Return the value of the number represented in STR. OPTION is the command line option to which STR is the argument. If the value does not fall within the boundaries MIN and MAX,