This is an automated email from the ASF dual-hosted git repository. mxmanghi pushed a commit to branch quattuor in repository https://gitbox.apache.org/repos/asf/tcl-rivet.git
commit 039fb0925d4def3df644c19d83ddd680221f05eb Author: Massimo Manghi <massimo.man...@gmail.com> AuthorDate: Tue Mar 1 17:59:44 2022 +0100 add tests for the 2 forms of [::rivet::var_qs all] --- ChangeLog | 3 ++ tests/get.test | 104 ++++++++++++++++++++++++++++++++----------------------- tests/getall.rvt | 20 +++++++++++ tests/rivet.test | 2 +- 4 files changed, 85 insertions(+), 44 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d25c58..8c8e0fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2022-03-01 Massimo Manghi <mxman...@apache.org> + * tests/getall.rvt: add new test for the 2 forms of [::rivet::var_qs all] + 2022-02-20 Massimo Manghi <mxman...@apache.org> * tclconfig/tcl.m4: merging patched tcl.m4 files that solves issue with failing 'install' target diff --git a/tests/get.test b/tests/get.test index 96e2430..035c8b0 100644 --- a/tests/get.test +++ b/tests/get.test @@ -1,61 +1,79 @@ -# $Id$ +# -- get.test +# +# testing ::rivet::var command for accessing urlencoded +# variables ::tcltest::test getvariables-1.1 {GET variables} { - set page [ ::http::geturl "${urlbase}get.rvt?foobar=goober" ] - regexp -line {\[::rivet::var get foobar\] = goober$} [ ::http::data $page ] match - set match + set page [ ::http::geturl "${urlbase}get.rvt?foobar=goober" ] + regexp -line {\[::rivet::var get foobar\] = goober$} [ ::http::data $page ] match + set match } {[::rivet::var get foobar] = goober} - + ::tcltest::test getvariables-1.2 {GET variables - exists} { - set page [ ::http::geturl "${urlbase}get.rvt?xst=1" ] - regexp -line {\[::rivet::var exists xst\]\[::rivet::var exists noxst\] = 1 0$} [ ::http::data $page ] match - set match + set page [ ::http::geturl "${urlbase}get.rvt?xst=1" ] + regexp -line {\[::rivet::var exists xst\]\[::rivet::var exists noxst\] = 1 0$} [ ::http::data $page ] match + set match } {[::rivet::var exists xst][::rivet::var exists noxst] = 1 0} - + ::tcltest::test getvariables-1.3 {GET variables - doesn't exist} { - set page [ ::http::geturl "${urlbase}get.rvt" ] - regexp -line {\[::rivet::var get xst\] = } [ ::http::data $page ] match - set match + set page [ ::http::geturl "${urlbase}get.rvt" ] + regexp -line {\[::rivet::var get xst\] = } [ ::http::data $page ] match + set match } {[::rivet::var get xst] = } - + ::tcltest::test getvariables-1.4 {GET variables - default value} { - set page [ ::http::geturl "${urlbase}get.rvt?defaulttest=1" ] - regexp {^\[::rivet::var get xst foo\] = foo} [ ::http::data $page ] match - set match + set page [::http::geturl "${urlbase}get.rvt?defaulttest=1"] + regexp {^\[::rivet::var get xst foo\] = foo} [ ::http::data $page ] match + set match } {[::rivet::var get xst foo] = foo} - -::tcltest::test getvariables-1.5 {GET variables - var_qs exists} { - set page [ ::http::geturl "${urlbase}get.rvt?xst=1" ] - regexp -line {\[::rivet::var_qs exists xst\]\[::rivet::var_qs exists noxst\] = 1 0$} [ ::http::data $page ] match - set match + + ::tcltest::test getvariables-1.5 {GET variables - var_qs exists} { + set page [::http::geturl "${urlbase}get.rvt?xst=1"] + regexp -line {\[::rivet::var_qs exists xst\]\[::rivet::var_qs exists noxst\] = 1 0$} [ ::http::data $page ] match + set match } {[::rivet::var_qs exists xst][::rivet::var_qs exists noxst] = 1 0} - -::tcltest::test getvariables-2.1 {GET variables + I18N} { - set page [ ::http::geturl "${urlbase}get.rvt?M�s=T�" ] - regexp -line {^\[::rivet::var get M�s\] = T�$} [ ::http::data $page ] match - set match + + ::tcltest::test getvariables-2.1 {GET variables + I18N} { + set page [::http::geturl "${urlbase}get.rvt?M�s=T�"] + regexp -line {^\[::rivet::var get M�s\] = T�$} [ ::http::data $page ] match + set match } {[::rivet::var get M�s] = T�} - -::tcltest::test getvariables-2.2 {GET variables + I18N + encoding} { - set page [ ::http::geturl [ format "${urlbase}get.rvt?%s" [ ::http::formatQuery M�s T� ] ] ] - regexp -line {^\[::rivet::var get M�s\] = T�$} [ ::http::data $page ] match - set match + + ::tcltest::test getvariables-2.2 {GET variables + I18N + encoding} { + set page [::http::geturl [format "${urlbase}get.rvt?%s" [::http::formatQuery M�s T�]]] + regexp -line {^\[::rivet::var get M�s\] = T�$} [ ::http::data $page ] match + set match } {[::rivet::var get M�s] = T�} - + ::tcltest::test getvariables-3.1 {GET multi-value variable} { - set page [ ::http::geturl "${urlbase}get.rvt?lstvar1=a&lstvar1=b&lstvar1=c+d" ] - regexp -line {\[::rivet::var get lstvar1\] = a b c d$} [ ::http::data $page ] match - set match + set page [::http::geturl "${urlbase}get.rvt?lstvar1=a&lstvar1=b&lstvar1=c+d"] + regexp -line {\[::rivet::var get lstvar1\] = a b c d$} [ ::http::data $page ] match + set match } {[::rivet::var get lstvar1] = a b c d} - + ::tcltest::test getvariables-3.2 {GET multi-value variable as list} { - set page [ ::http::geturl "${urlbase}get.rvt?lstvar2=a&lstvar2=b&lstvar2=c+d" ] - regexp -line {\[::rivet::var list lstvar2\] = a b {c d}$} [ ::http::data $page ] match - set match + set page [::http::geturl "${urlbase}get.rvt?lstvar2=a&lstvar2=b&lstvar2=c+d"] + regexp -line {\[::rivet::var list lstvar2\] = a b {c d}$} [ ::http::data $page ] match + set match } {[::rivet::var list lstvar2] = a b {c d}} - + ::tcltest::test getvariables-4.1 {var_qs} { - set page [ ::http::geturl "${urlbase}get.rvt?foobar=goober" ] - regexp -line {\[::rivet::var_qs get foobar\] = goober$} [::http::data $page] match - set match + set page [::http::geturl "${urlbase}get.rvt?foobar=goober"] + regexp -line {\[::rivet::var_qs get foobar\] = goober$} [::http::data $page] match + set match } {[::rivet::var_qs get foobar] = goober} + +::tcltest::test getvariables-5.1 {GET var_qs all} { + set page [::http::geturl "${urlbase}getall.rvt?a=1&b=2&c=3&d=4"] + set ptext [::http::data $page] + regexp -line {^\[::rivet::var_qs all\]\s=\s.*$} $ptext match + set match +} {[::rivet::var_qs all] = a|1|b|2|c|3|d|4} + +::tcltest::test getvariables-5.2 {GET var_qs all <defaults>} { + set page [::http::geturl "${urlbase}getall.rvt"] + set ptext [::http::data $page] + regexp -line {^\[::rivet::var_qs all\]\s=\s.*$} $ptext match + set match +} {[::rivet::var_qs all] = a|1|b|2|c|3|d|4} + diff --git a/tests/getall.rvt b/tests/getall.rvt new file mode 100644 index 0000000..51a1db3 --- /dev/null +++ b/tests/getall.rvt @@ -0,0 +1,20 @@ +<? +set nvars [::rivet::var_qs number] +if {$nvars > 0} { + set arguments [::rivet::var_qs all] +} else { + set arguments [::rivet::var_qs all [dict create a 1 b 2 c 3 d 4]] +} + +# being a flat list of key-value pair we assume it +# to be interpreted as a dictionary +set vnames [dict keys $arguments] + +# in order to have a result in a definite order +set result [lmap k [lsort $vnames] { list $k [dict get $arguments $k] }] + +# two nested join on the list in order to have a flat list + +puts -nonewline "\[::rivet::var_qs all\] = [join [join $result] |]" + +?> diff --git a/tests/rivet.test b/tests/rivet.test index 6ed3950..139a625 100755 --- a/tests/rivet.test +++ b/tests/rivet.test @@ -36,7 +36,7 @@ set TestList {rivetlib.test shorthand.test headers.test \ parse.test upload.test makeurl.test commands.test} # Test stanzas are created by giving the test a name and a -# description. The code is then executed, and the results compared +# description. The code is then executed, and the results compared # with the desired result, which is placed after the block of code. # See man tcltest for more information. --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@tcl.apache.org For additional commands, e-mail: commits-h...@tcl.apache.org