You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tcl.apache.org by mx...@apache.org on 2022/03/01 16:59:58 UTC
[tcl-rivet] branch master updated: add tests for the 2 forms of [::rivet::var_qs all]
This is an automated email from the ASF dual-hosted git repository.
mxmanghi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tcl-rivet.git
The following commit(s) were added to refs/heads/master by this push:
new 3b183ff add tests for the 2 forms of [::rivet::var_qs all]
3b183ff is described below
commit 3b183ff01078628870e4a050c951dc2f1ed21b9b
Author: Massimo Manghi <ma...@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 688da00..773773d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2022-03-01 Massimo Manghi <mx...@apache.org>
+ * tests/getall.rvt: add new test for the 2 forms of [::rivet::var_qs all]
+
2022-02-19 Massimo Manghi <mx...@apache.org>
* tclconfig/tcl.m4: patched tcl.m4 distributed by core.tcl.tk as it doesn't work
with Makefile.am files in nested directories. Patch submitted upstream
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-unsubscribe@tcl.apache.org
For additional commands, e-mail: commits-help@tcl.apache.org