From: ellson Date: Thu, 21 Sep 2006 19:23:53 +0000 (+0000) Subject: first cut at new "simple" regression test cases X-Git-Tag: LAST_LIBGRAPH~32^2~5876 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b4f552477591e74d079c8085edae509561ae9841;p=graphviz first cut at new "simple" regression test cases --- diff --git a/rtest2/test.tcl b/rtest2/test.tcl new file mode 100755 index 000000000..45bd5c934 --- /dev/null +++ b/rtest2/test.tcl @@ -0,0 +1,122 @@ +#!/usr/bin/tclsh + +set DOT ../cmd/dot/dot +set DIFF diff +set DIFFIMG ../contrib/diffimg/diffimg + +set graphdir test_graphs +set resultdir test_results +set referencedir test_reference + +file delete -force $graphdir $resultdir +file mkdir $graphdir $resultdir + +set dodiff 0 +if {$argc && [string equal [lindex $argv 0] reference]} { + file delete -force $referencedir + file mkdir $referencedir + set resultdir $referencedir +} { + if {[file exists $referencedir] && [file isdir $referencedir]} { + set dodiff 1 + } +} + +set state -1 +set testnum 0 +set subtestnum 0 + +set pass 0 +set fail 0 + +set fn TESTS +set f [open $fn r] +while {![eof $f]} { + set rec [gets $f] + if {[string length $rec] == 0} { + continue + } + if {[string first "#" $rec] == 0} { + continue + } + if {[string first "\t" $rec] != 0} { + set name $rec + set state 0 + incr testnum + set subtestnum 0 + continue + } + if {$state == -1} { + puts stderr "The first non-comment record in the TESTS file" + puts stderr "must be the name of a test without leading whitespace" + exit + } + set rec [string trim $rec] + if {$state == 0} { + set graph $rec + set state 1 + } { + set command $rec + set layout dot + set format xdot + regexp {\-K([a-z0-9]+)} $rec . layout + regexp {\-T([a-z0-9]+)} $rec . format + incr subtestnum + set id [format %03d.%03d $testnum $subtestnum] + set src $graphdir/$id.dot + set ref $referencedir/$id.$format + set res $resultdir/$id.$format + set testf [open $graphdir/$id.dot w] + puts $testf "// $id: $name" + puts $testf "// $command" + puts $testf $graph + close $testf + + # execute dot + switch $format { + ps - svg { + #FIXME - remove version string in output + set rc [catch {exec $DOT -K$layout -T$format $src -o $res}] + } + default { + set rc [catch {exec $DOT -K$layout -T$format $src -o $res}] + } + } + if {! $dodiff} { + continue + } + if {$rc} { + incr FAIL + puts "$id: \"$name\" CRASHED" + continue + } + + # execute diff + switch $format { + png { + # can't use diff because PNG format includes a tIME record which changes + # diffimg produces an image which highlights the differences + set rc [catch {exec $DIFFIMG $ref $res > $res.diff.png}] + } + default { + set rc [catch {exec $DIFF -u $ref $res > $res.diff}] + } + } + if {$rc} { + incr fail + puts "$id: \"$name\" FAILED" + } { + incr pass + foreach fn [glob $src $res $res.*] { + file delete $fn + } + } + } +} +close $f + +if {$dodiff} { + set total [expr {$pass+$fail}] + puts "" + puts "Summary: PASS $pass : FAIL $fail : TOTAL $total" +}