| # bailout.test -- test redirect command. |
| # |
| # redirect must trigger an AbortScript and have |
| # predictable data stored in the abort code |
| |
| # $Id: bailout.test 1760054 2016-09-09 16:02:29Z mxmanghi $ |
| |
| ::tcltest::test bailout-1.1 {::rivet::redirect command} { |
| apachetest::start {} { |
| RivetServerConf AbortScript "::rivet::apache_log_error err \\\"catching redirect\\\"" |
| RivetServerConf AbortScript "set tmpfp \[open redirect_code.txt w+\]" |
| RivetServerConf AbortScript "puts \$tmpfp \[::rivet::abort_code\]" |
| RivetServerConf AbortScript "close \$tmpfp" |
| } { |
| set url "${urlbase}redirect.rvt?base=$urlbase" |
| #puts $url |
| catch {set page1 [::http::geturl $url]} |
| puts "verifying abort code" |
| set rdfp [open redirect_code.txt r] |
| set redirect_code [dict create {*}[read $rdfp]] |
| set r1 [dict exists $redirect_code location] |
| set r2 [dict exists $redirect_code error_code] |
| } |
| list $r1 $r2 |
| } {1 1} |
| |
| |
| ::tcltest::test bailout-1.2 {::rivet::exit command} { |
| apachetest::start {} { |
| RivetServerConf AbortScript "::rivet::apache_log_error err \\\"catching exit\\\"" |
| RivetServerConf AbortScript "set abcode \[::rivet::abort_code\]" |
| RivetServerConf AbortScript "puts -nonewline \[::rivet::abort_page -exiting\]" |
| RivetServerConf AbortScript "puts -nonewline \\\" \[dict get \$abcode error_code\] \[dict get \$abcode return_code\]\\\"" |
| } { |
| puts "test exit command" |
| set url "${urlbase}exit.tcl" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r |
| } {1 exit 100} |
| |
| ::tcltest::test bailout-2.0 {::rivet::catch procedure successful execution} { |
| apachetest::start {} { |
| } { |
| set url "${urlbase}catch.rvt" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {OK} |
| |
| ::tcltest::test bailout-2.1 {::rivet::catch command generic error handling} { |
| apachetest::start {} { |
| } { |
| set url "${urlbase}catch.rvt?abort=1" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {OK} |
| |
| ::tcltest::test bailout-2.2 {::rivet::catch command abort_page handling} { |
| apachetest::start {} { |
| RivetServerConf AbortScript "::rivet::apache_log_error err \\\"catching abort condition\\\"" |
| RivetServerConf AbortScript "puts -nonewline \[::rivet::abort_page -aborting\]" |
| } { |
| puts "test ::rivet::catch and ::rivet::abort_page interaction" |
| set url "${urlbase}catch.rvt?abort=2" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r |
| } {1} |
| |
| ::tcltest::test bailout-2.3 {::rivet::catch handling options dictionary} { |
| apachetest::start {} { |
| } { |
| set url "${urlbase}catch.rvt?abort=3" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {3 error} |
| |
| ::tcltest::test bailout-3.0 {::rivet::try successful procedure call} { |
| apachetest::start {} { |
| } { |
| set url "${urlbase}try.rvt" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {finalize} |
| |
| ::tcltest::test bailout-3.1 {::rivet::try handling break return code} { |
| apachetest::start {} { |
| } { |
| set url "${urlbase}try.rvt?cond=3" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {break try 3 finalize} |
| |
| ::tcltest::test bailout-3.2 {::rivet::try handling error return code} { |
| apachetest::start {} { |
| } { |
| set url "${urlbase}try.rvt?cond=1" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {error try 1 finalize} |
| |
| ::tcltest::test bailout-3.3 {::rivet::try handling continue return code} { |
| apachetest::start {} { |
| } { |
| set url "${urlbase}try.rvt?cond=4" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {continue try 4 finalize} |
| |
| ::tcltest::test bailout-3.4 {::rivet::try abort_page handling} { |
| apachetest::start {} { |
| RivetServerConf AbortScript "::rivet::apache_log_error err \\\"catching abort condition\\\"" |
| RivetServerConf AbortScript "puts -nonewline \\\" \[::rivet::abort_page -aborting\]\\\"" |
| RivetServerConf AbortScript "puts -nonewline \\\" \[::rivet::abort_code\]\\\"" |
| } { |
| set url "${urlbase}try.rvt?cond=abort" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {finalize 1 arg1} |
| |
| ::tcltest::test bailout-3.5 {::rivet::try handling ::rivet::exit} { |
| apachetest::start {} { |
| RivetServerConf AbortScript "::rivet::apache_log_error err \\\"catching abort condition\\\"" |
| RivetServerConf AbortScript "set abcode \[::rivet::abort_code\]" |
| RivetServerConf AbortScript "puts -nonewline \\\" \[::rivet::abort_page -exiting\]\\\"" |
| RivetServerConf AbortScript "puts -nonewline \\\" \[dict get \$abcode error_code\] \[dict get \$abcode return_code\]\\\"" |
| } { |
| set url "${urlbase}try.rvt?cond=exit" |
| set page [::http::geturl $url] |
| set r [::http::data $page] |
| ::http::cleanup $page |
| } |
| set r [string trim $r] |
| set r |
| } {finalize 1 exit 101} |