| 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: |