output.exp   [plain text]


proc test_treelang_output { testname srcfiles infile resfile args } {
    set comp_output [treelang_target_compile $srcfiles $testname executable $args]
    if { [treelang_check_compile $testname $args $testname $comp_output] == 0 } {
    	return 0;
    }

    verbose "Expected output is in $resfile"
    set id [open $resfile r]
    set expected ""
    append expected [read $id]
    close $id
    set output ""
    set output [exec $testname $infile]
    regsub -all "\r" "$output" "" output
    regsub "\n*$" $expected "" expected
    regsub "\n*$" $output "" output
    regsub "^\n*" $expected "" expected
    regsub "^\n*" $output "" output
    regsub -all "\[ \t\]\[ \t\]*" $expected " " expected
    regsub -all "\[ \t\]*\n\n*" $expected "\n" expected
    regsub -all "\[ \t\]\[ \t\]*" $output " " output
    regsub -all "\[ \t\]*\n\n*" $output "\n" output
    verbose "expected is $expected"
    verbose "actual is $output"

    if { $expected == $output } {
	pass $testname
    } else {
        fail $testname
    }
    exec rm $testname
}
global srcdir subdir

catch { lsort [glob -nocomplain ${srcdir}/${subdir}/*.out] } outfiles
verbose "Output files are $outfiles"

set prefix ""
foreach x $outfiles {
    regsub "\\.out$" $x "" prefix
    set bname [file tail $prefix]

    if [file exists ${prefix}.inp] {
	set inpfile ${prefix}.inp
    } else {
	set inpfile ""
    }

    verbose "inpfile is $inpfile"

    set srcfiles [lsort [glob -nocomplain ${prefix}.{c,tree}]]
    verbose "source files are $srcfiles"
    test_treelang_output "treelang/$bname" $srcfiles $inpfile $x ""
}

# Local Variables:
# tcl-indent-level:4
# End: