X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FDrawResources%2FTestCommands.tcl;h=1669f17cf4bdc0608aed3c805662fc7f40b22802;hb=f2b42160f4202fa0848448b643965f80b351cb7b;hpb=6072d5975aaccbb87a28b4b0144eaf3e8ed7a55b diff --git a/src/DrawResources/TestCommands.tcl b/src/DrawResources/TestCommands.tcl index 4d0f849042..1669f17cf4 100644 --- a/src/DrawResources/TestCommands.tcl +++ b/src/DrawResources/TestCommands.tcl @@ -718,6 +718,7 @@ help testdiff { Compare results of two executions of tests (CPU times, ...) Use: testdiff dir1 dir2 [groupname [gridname]] [options...] Where dir1 and dir2 are directories containing logs of two test runs. + dir1 (A) should point to NEW tests results to be verified and dir2 (B) to REFERENCE results. Allowed options are: -image [filename]: compare only images and save its in specified file (default name is /diffimage-.log) @@ -2215,6 +2216,8 @@ proc _test_diff {dir1 dir2 basename image cpu memory status verbose _logvar _log # check images if {$image != false || ($image == false && $cpu == false && $memory == false)} { + set aCaseDiffColorTol 0 + if { [regexp {IMAGE_COLOR_TOLERANCE:\s*([\d.]+)} $log1 res1 imgtol1] } { set aCaseDiffColorTol $imgtol1 } set imglist1 [glob -directory $path1 -types f -tails -nocomplain ${casename}.{png,gif} ${casename}-*.{png,gif} ${casename}_*.{png,gif}] set imglist2 [glob -directory $path2 -types f -tails -nocomplain ${casename}.{png,gif} ${casename}-*.{png,gif} ${casename}_*.{png,gif}] _list_diff $imglist1 $imglist2 imgin1 imgin2 imgcommon @@ -2239,7 +2242,7 @@ proc _test_diff {dir1 dir2 basename image cpu memory status verbose _logvar _log set diffile [_diff_img_name $dir1 $dir2 $basename $imgfile] if { [catch {diffimage [file join $dir1 $basename $imgfile] \ [file join $dir2 $basename $imgfile] \ - 0 0 0 $diffile} diff] } { + -toleranceOfColor 0.0 -blackWhite off -borderFilter off $diffile} diff] } { if {$image != false} { _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile cannot be compared" } else { @@ -2247,10 +2250,35 @@ proc _test_diff {dir1 dir2 basename image cpu memory status verbose _logvar _log } file delete -force $diffile ;# clean possible previous result of diffimage } elseif { $diff != 0 } { + set diff [string trimright $diff \n] + if {$aCaseDiffColorTol != 0} { + # retry with color tolerance + if { [catch {diffimage [file join $dir1 $basename $imgfile] \ + [file join $dir2 $basename $imgfile] \ + -toleranceOfColor $aCaseDiffColorTol -blackWhite off -borderFilter off $diffile} diff2] } { + if {$image != false} { + _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile cannot be compared" + } else { + _log_and_puts log "IMAGE [split $basename /] $casename: $imgfile cannot be compared" + } + continue + } elseif { $diff2 == 0 } { + # exclude image diff within tolerance but still keep info in the log + set toLogImageCase false + file delete -force $diffile + if {$image != false} { + _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile is similar \[$diff different pixels\]" + } else { + _log_and_puts log "IMAGE [split $basename /] $casename: $imgfile is similar \[$diff different pixels\]" + } + continue + } + } + if {$image != false} { - _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile differs" + _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile differs \[$diff different pixels\]" } else { - _log_and_puts log "IMAGE [split $basename /] $casename: $imgfile differs" + _log_and_puts log "IMAGE [split $basename /] $casename: $imgfile differs \[$diff different pixels\]" } } else { file delete -force $diffile ;# clean useless artifact of diffimage @@ -2311,8 +2339,8 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} { # print header puts $fd "Diff $dir1 vs. $dir2" puts $fd "

Comparison of test results:

" - puts $fd "

Version A - $dir1

" - puts $fd "

Version B - $dir2

" + puts $fd "

Version A \[NEW\] - $dir1

" + puts $fd "

Version B \[REF\] - $dir2

" # add script for switching between images on click puts $fd "" @@ -2334,12 +2362,16 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} { if { [regexp "\[\\\[](\[0-9.e+-]+)%\[\]]" $line res value] && [expr abs($value)] > ${highlight_percent} } { puts $fd "
0 ? \"ff8080\" : \"lightgreen\"]\">$line
" - } else { + } elseif { [regexp {IMAGE[ \t]+([^:]+):[ \t]+([A-Za-z0-9_.-]+) is similar} $line res case img] } { + if { [catch {eval file join "" [lrange $case 0 end-1]} gridpath] } { + # note: special handler for the case if test grid directoried are compared directly + set gridpath "" + } + set aCaseName [lindex $case end] + puts $fd "
$line
" + } elseif { [regexp {IMAGE[ \t]+([^:]+):[ \t]+([A-Za-z0-9_.-]+)} $line res case img] } { + # add images puts $fd $line - } - - # add images - if { [regexp {IMAGE[ \t]+([^:]+):[ \t]+([A-Za-z0-9_.-]+)} $line res case img] } { if { [catch {eval file join "" [lrange $case 0 end-1]} gridpath] } { # note: special handler for the case if test grid directoried are compared directly set gridpath "" @@ -2360,6 +2392,8 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} { puts $fd "" puts $fd "
Version AVersion BDiff (click to toggle)
$img1$img2$imgd
" + } else { + puts $fd $line } } puts $fd ""