Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
165 lines (142 sloc) 5.39 KB
#! /bin/csh -f
#
# Part of automation of the testing process for the Tokenizer/De-Tokenizer
# Automate Execution of Tokenizing and De-Tokenizing the various test-cases
# Updated Thu, 09 Feb 2006 at 13:10 PST by David L. Paktor
# Run this from the parent-directory of the various Test categories.
# Sym-links to the binaries should be here.
# Each Test category directory must have a TestArgs file,
# formatted as follows:
# Lines starting with # (Pound-sign Space) are comments,
# and are ignored
# Blank lines are also allowed, and are also ignored
# Valid lines have four comma-separated fields:
# Test-file base-name
# Result-file label
# Extra command-line switches
# A script-command, to be run after, for specific
# verification of this Test. Arguments can also
# be included in this field, as long as they have
# no commas.
# An unspecified intermediate field must be represented as
# an empty field separated by commas from the fields
# preceding and following.
# Lines that have no label, no switches, and no script
# do not need any commas.
# The -v (verbose) switch will always be used and does not need
# to be explicitly specified. However, if the "script-command"
# field starts with +V (case-sensitive), then the -v (verbose)
# switch will not be used.
#
# The Test-file base-name field may have multiple base-names,
# to run a multiple-file batch command.
# If a multiple-file batch is run:
# The Result-file label will apply only to the Log file.
# To Do:
# Contrive a way to run the second through last input files as
# separate individual jobs (with same command-line switches)
# This needs to be co-ordinated with the Auto-Compare script:
# It will need to compare the .FC files from the batch with
# those from the individual runs.
# Initial error-checking:
if ( ( ! -x ./toke ) || ( ! -x ./detok ) || ( ! -x ./romheaders ) ) then
echo 'Starting in wrong directory. Executable toke, detok and romheaders are not here.'
exit 1
endif
set TArgFiles = `find . -name TestArgs -exec expr {} : '\./\(.*\)' \;`
if ( $#TArgFiles == 0 ) then
echo 'No TestArgs files found in subdirectories.'
echo 'Starting in wrong directory?'
exit 1
endif
set parent = `pwd`
set tokex = `pwd`/toke
set detokex = `pwd`/detok
set romhdrex = `pwd`/romheaders
set chirren = `echo $TArgFiles | tr ' ' \\012 | sed -e 'sX/[^/]*$XXg'`
# The "verbose" flag is now a variable.
set vflg = '-v'
# Let's show a progress-downcount and time, stamps and elapsed.
# Find the count; leave the max number on display:
set cnt = `egrep '^[^#].*' $TArgFiles | wc -l`
echo ''
set starttime = `date +'%T'`
echo $starttime
echo $cnt
foreach dir ( $chirren )
cd $dir
set lindxmax = `cat TestArgs | wc -l`
set lindx = 0
while ( $lindx < $lindxmax )
@ lindx++
set targline = `sed -n ${lindx}p TestArgs`
if ( $#targline == 0 ) continue
if ( "$targline[1]" == "#" ) continue
set ttargs = `echo $targline | awk -F , '{print $1}'`
# One more error-check:
set tfths = ''
set fcfils = ''
unset FMissing
foreach tfth ( $ttargs )
if ( ! -f ${tfth}.fth ) then
echo File Not found: ${dir}/${tfth}.fth
echo Please update ${dir}/TestArgs file, line $lindx
set FMissing
endif
set tfths = ( $tfths ${tfth}.fth )
set fcfils = ( $fcfils ${tfth}.fc )
end
if ( $?FMissing ) continue
set ttarg = $ttargs[1]
set outfile = ''
set label = `echo $targline | awk -F , '{print $2}'`
if ( "$label" != "" ) then
set label = .$label
if ( $#tfths == 1 ) then
set fcfils = ${ttarg}${label}.fc
set outfile = ( -o $fcfils )
endif
endif
# We don't set the switches as a shell-variable because we might
# need to preserve quoted groupings that have embedded spaces.
# Collect the script-command.
# Awkward place to expect a "+V" option, but it'll have to serve....
set scriptcmd = `echo $targline | awk -F , '{print $4}'`
if ( $#scriptcmd > 0 ) then
if ( "$scriptcmd[1]" == "+V" ) then
set vflg = ""
if ( $#scriptcmd == 1 ) then
set scriptcmd = ""
else
set scriptcmd = ( $scriptcmd[2-] )
endif
endif
endif
echo -n X${cnt}' ' | tr X \\015
@ cnt--
# Now do it.
set doromhdr = 0
echo toke $vflg `sed -n ${lindx}p TestArgs | awk -F , '{print $3}'` $outfile ${tfths} >& ${ttarg}${label}.Log
echo '' >>& ${ttarg}${label}.Log
eval $tokex $vflg `sed -n ${lindx}p TestArgs | awk -F , '{print $3}'` $outfile ${tfths} >>& ${ttarg}${label}.Log
set vflg = '-v'
foreach fcfil ( $fcfils )
if ( -f ${fcfil} ) then
$detokex -v -o ${fcfil} > ${fcfil:r}.DeTok
set doromhdr = `grep 'PCI Header identified' ${fcfil:r}.DeTok | wc -l`
if ( $doromhdr ) then
$romhdrex ${fcfil} > ${fcfil:r}.RomHdr
endif
endif
end
if ( "$scriptcmd" != "" ) then
eval $scriptcmd
endif
end
cd $parent
end
# Clear the display-line
echo -n X' 'X | tr X \\015
# Show time, stamps and elapsed.
date +'%T'
echo $starttime ' (Started)'