##/bin/sh # # Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of version 2 of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it would be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Further, this software is distributed without any warranty that it is # free of the rightful claim of any third person regarding infringement # or the like. Any license provided herein, whether implied or # otherwise, applies only to this software file. Patent licenses, if # any, provided herein do not apply to combinations of this program with # other software, or any other product whatsoever. # # You should have received a copy of the GNU General Public License along # with this program; if not, write the Free Software Foundation, Inc., 59 # Temple Place - Suite 330, Boston MA 02111-1307, USA. # # Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, # Mountain View, CA 94043, or: # # http://www.sgi.com # # For further information regarding this notice, see: # # http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ # # common procedures for QA scripts # # $Header: /disk7/depot/linux/pcp/dev/qa/RCS/common,v 2.52 2000/04/05 18:24:51 kenmcd Exp $ # _setenvironment() { MSGVERB="text:action" export MSGVERB } here=`pwd` rm -f $here/$iam.out _setenvironment check=${check-true} if $check then if make >/tmp/$$.make 2>&1 then : else cat /tmp/$$.make echo "Warning: make failed -- some tests may be missing" warn=1 fi rm -f /tmp/$$.make fi diff=diff if [ ! -z "$DISPLAY" ] then which xdiff >/dev/null 2>&1 && diff=xdiff which gdiff >/dev/null 2>&1 && diff=gdiff which tkdiff >/dev/null 2>&1 && diff=tkdiff fi verbose=false quick=${quick-false} group=false xgroup=false showme=false sortme=false expunge=true have_test_arg=false rm -f $tmp.list $tmp.tmp $tmp.sed for r do if $group then # arg after -g group_list=`sed -n /dev/null then : else echo "$t" >>$tmp.list fi done group=false continue elif $xgroup then # arg after -x [ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null group_list=`sed -n $tmp.tmp mv $tmp.tmp $tmp.list numsed=0 rm -f $tmp.sed fi echo "/^$t\$/d" >>$tmp.sed numsed=`expr $numsed + 1` done sed -f $tmp.sed <$tmp.list >$tmp.tmp mv $tmp.tmp $tmp.list xgroup=false continue fi xpand=true case "$r" in -\?) # usage echo "Usage: $0 [options] [testlist]"' common options -v verbose check options -g group[,group...] include tests from these groups -l line mode diff [xdiff] -n show me, do not run tests -q quick, no checks (you are on your own) -T output timestamps -x group[,group...] exclude tests from these groups ' exit 0 ;; -g) # -g group ... pick from group file group=true xpand=false ;; -l) # line mode for diff, not gdiff over modems diff=diff xpand=false ;; -q) # "quick", no checks (you are on your own) quick=true xpand=false ;; -n) # show me, don't do it showme=true xpand=false ;; -T) # turn on timestamp output timestamp=true xpand=false ;; -v) verbose=true xpand=false ;; -x) # -x group ... exclude from group file xgroup=true xpand=false ;; '[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]') echo "No tests?" status=1 exit $status ;; [0-9]*-[0-9]*) eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'` ;; [0-9]*-) eval `echo $r | sed -e 's/^/start=/' -e 's/-//'` end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/ *$//' -e 's/.* //'` if [ -z "$end" ] then echo "No tests in range \"$r\"?" status=1 exit $status fi ;; *) start=$r end=$r ;; esac # get rid of leading 0s as can be interpreted as octal start=`echo $start | sed 's/^0*//'` end=`echo $end | sed 's/^0*//'` if $xpand then have_test_arg=true $AWK_PROG /dev/null then # in group file ... OK echo $id >>$tmp.list else if [ -f expunged ] && $expunge && egrep "^$id([ ]|\$)" expunged >/dev/null then # expunged ... will be reported, but not run, later echo $id >>$tmp.list else # oops echo "$id - unknown test, ignored" fi fi done fi done if [ -s $tmp.list ] then # found some valid test numbers ... this is good : else if $have_test_arg then # had test numbers, but none in group file ... do nothing touch $tmp.list else # no test numbers, do everything from group file sed -n -e '/^[0-9][0-9][0-9]*/s/[ ].*//p' $tmp.list fi fi # should be sort -n, but this did not work for Linux when this # was ported from IRIX # list=`sort $tmp.list` rm -f $tmp.list $tmp.tmp $tmp.sed if $quick then : else if ( cd src; make -i ) then : else echo echo ":----------------------------------------------" echo ": Warning: make failed in src -- some tests may fail as a result" echo ":----------------------------------------------" echo warn=1 fi fi