TABLE OF CONTENTS
::pwtk::test
SYNOPSIS
proc ::pwtk::test {cmd {expectedResult ""} {expectedError ""}} {
PURPOSE
Produce a nice output for testing scripts/commands and tests that the result matches.
ARGUMENTS
- expectedResult -- (optional) the result of the test will be compared against $expectedResult
- expectedError -- (optional) the error text of the test will be compared against $expectedError
SOURCE
variable catch_error set result {} set error {} set pass N/A puts " ===============================================================Testing== SCRIPT: $cmd " set catch_error 1 set tmp [file join [::fileutil::tempdir] error.[pid]] try { if { $expectedError ne {} } { ::pwtk::redirect_stderr_to $tmp { uplevel $cmd } } else { set result [uplevel $cmd] } } on error err { if { [info commands ::tcl::orig_puts] ne {} } { # BEWARE: error occured while evaluation script in # ::pwtk::redirect_stderr_to, revert "puts" to default Tcl puts # (see ::pwtk::redirect_stderr_to) rename ::puts {} rename ::tcl::orig_puts ::puts } if { $expectedError ne {} } { set result [readFile $tmp] } ifnotempty err { set error "\n\nCODING_ERROR: $err" } } set catch_error 0 if { $expectedResult ne {} } { set pass [expr { [testProcessResult_ $result] == [testProcessResult_ $expectedResult] ? 1 : 0 } ] } if { $expectedError ne {} } { set pass [expr { [filterQEerror_ [testProcessResult_ $result]] == [filterQEerror_ [testProcessResult_ $expectedError]] ? 1 : 0 } ] } ifnotempty result { puts "RESULT: [testProcessResult_ $result]" } if { $pass != 1 && $expectedResult ne {} } { puts "EXPECTED RESULT: [testProcessResult_ $expectedResult]" } if { $pass != 1 && $expectedError ne {} } { puts "EXPECTED ERROR: [testProcessResult_ $expectedError]" } puts " PASSED: $pass$error ======================================================================== " }