blob: 676465794dbba2d47c2bfb038acfc420a00d392c [file] [log] [blame]
#===-test/lib/identity.exp - Script for identity tests ---------------------===#
#
# High Level Virtual Machine (HLVM)
#
# Copyright (C) 2006 Reid Spencer. All Rights Reserved.
#
# This software is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or (at
# your option) any later version.
#
# This software is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
# more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library in the file named LICENSE.txt; if not, write to the
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA
#
#===------------------------------------------------------------------------===#
proc hlvm-identity-tests { prog pat } {
global srcdir subdir objdir tmpdir objrootdir
set outdir [file join $objdir $subdir]
set tool [file join $objrootdir tools $prog $prog ]
set source [file join $srcdir $subdir ]
set files [lsort [
glob -nocomplain -tails -types {f r} -directory $source $pat]]
set dirs [lsort [
glob -nocomplain -tails -types {d r} -directory $source *]]
if { [file isdirectory $outdir] } {
cd $outdir
} else {
if { [file exists $outdir] } {
fail "identity: $outdir exists and is not a directory. Remove it"
exit(2)
} else {
file mkdir $outdir
}
}
foreach test $files {
set output [file join $outdir ${test}.out]
set testsrc [file join $source $test]
set execout ""
set retval [ catch { exec -keepnewline $tool $testsrc -o $output } msg ]
if { $retval == 1 } {
fail "$test: $tool returned $retval\n$msg"
} else {
# Do the identity test
set diffout [file join ${output}.diff]
set retval [ catch {exec diff $testsrc $output >&$diffout } ]
if {$retval == 1} {
#Get output
if { [file exists $diffout] } {
set difffile [open $diffout {RDONLY}]
set result [read $difffile]
close $difffile
} else {
set result "no diff file"
}
fail "$test: identity test failed:\n$result"
} else {
file delete $diffout
pass "$test"
}
}
}
}