blob: 198bac19886198972f3264ae3f56ec713a09664e [file] [log] [blame]
# 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}