| #! /bin/bash |
| # |
| #----------------------------------------------------------------------- |
| # Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved. |
| # |
| # 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 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. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write the Free Software Foundation, |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| # |
| #----------------------------------------------------------------------- |
| # |
| # Make a new test |
| # |
| |
| # generic initialization |
| iam=new |
| . ./common.rc |
| |
| trap "rm -f /tmp/$$.; exit" 0 1 2 3 15 |
| |
| _cleanup() |
| { |
| : |
| } |
| |
| # fqdn for localhost |
| _get_fqdn() |
| { |
| NSLOOKUP_PROG="`set_prog_path nslookup`" |
| if [ "$NSLOOKUP_PROG" = "" ]; then |
| getent hosts `uname -n` | awk '{print $2}' |
| else |
| $NSLOOKUP_PROG `hostname` | $AWK_PROG '{ if ($1 == "Name:") print $2 }' |
| fi |
| } |
| |
| if [ ! -f group ] |
| then |
| echo "Creating the group index ..." |
| cat <<'End-of-File' >group |
| # QA groups control |
| # |
| # define groups and default group owners |
| # do not start group name with a digit |
| # |
| |
| # catch-all |
| # |
| other some-user-login |
| |
| # test-group association ... one line per test |
| # |
| End-of-File |
| fi |
| |
| if [ ! -w group ] |
| then |
| chmod u+w group |
| echo "Warning: making the index file \"group\" writeable" |
| fi |
| |
| if make |
| then |
| : |
| else |
| echo "Warning: make failed -- some tests may be missing" |
| fi |
| |
| last=`grep '^[0-9][0-9]* ' group | sort | tail -1 | sed -e 's/[ ].*//'` |
| # get rid of leading 0s as can be interpreted as octal |
| last=`echo $last | sed 's/^0*//'` |
| id=`$AWK_PROG </dev/null 'BEGIN{printf "%03d\n",'$last'+1}'` |
| echo "Next test is $id" |
| |
| if [ -f $id ] |
| then |
| echo "Error: test $id already exists!" |
| _cleanup |
| exit 1 |
| fi |
| |
| echo -n "Creating skeletal script for you to edit ..." |
| |
| year=`date +%Y` |
| |
| cat <<End-of-File >$id |
| #! /bin/bash |
| # FS QA Test No. $id |
| # |
| # what am I here for? |
| # |
| #----------------------------------------------------------------------- |
| # Copyright (c) $year YOUR NAME HERE. All Rights Reserved. |
| # |
| # 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 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. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write the Free Software Foundation, |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| #----------------------------------------------------------------------- |
| # |
| # creator |
| owner=$USER@`_get_fqdn` |
| |
| seq=\`basename \$0\` |
| echo "QA output created by \$seq" |
| |
| here=\`pwd\` |
| tmp=/tmp/\$\$ |
| status=1 # failure is the default! |
| trap "_cleanup; exit \\\$status" 0 1 2 3 15 |
| |
| _cleanup() |
| { |
| cd / |
| rm -f \$tmp.* |
| } |
| |
| # get standard environment, filters and checks |
| . ./common.rc |
| . ./common.filter |
| |
| # real QA test starts here |
| |
| # Modify as appropriate. |
| _supported_fs generic |
| _supported_os IRIX Linux |
| |
| # if error |
| exit |
| |
| # optional stuff if your test has verbose output to help resolve problems |
| #echo |
| #echo "If failure, check \$seq.full (this) and \$seq.full.ok (reference)" |
| |
| # success, all done |
| status=0 |
| exit |
| End-of-File |
| |
| sleep 2 # latency to read messages to this point |
| echo "" |
| |
| chmod 755 $id |
| ${EDITOR-vi} $id |
| |
| if [ $# -eq 0 ] |
| then |
| while true |
| do |
| echo -n "Add to group(s) [other] (? for list): " |
| read ans |
| [ -z "$ans" ] && ans=other |
| if [ "X$ans" = "X?" ] |
| then |
| $AWK_PROG <group ' |
| BEGIN { text = "# ???" } |
| /^[a-z]/ { printf "%-16.16s %s\n",$1,text; text = "# ???"; next } |
| NF < 2 { next } |
| { text = $0 }' \ |
| | sort |
| else |
| break |
| fi |
| done |
| else |
| # expert mode, groups are on the command line |
| # |
| for g in $* |
| do |
| if grep "^$g[ ]" group >/dev/null |
| then |
| : |
| else |
| echo "Warning: group \"$g\" not defined in ./group" |
| fi |
| done |
| ans="$*" |
| fi |
| |
| echo -n "Adding $id to group index ..." |
| echo "$id $ans" >>group |
| echo " done." |
| |
| exit 0 |