summaryrefslogtreecommitdiffstats
path: root/test/uri2.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/uri2.test')
-rw-r--r--test/uri2.test63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/uri2.test b/test/uri2.test
new file mode 100644
index 0000000..52feb7b
--- /dev/null
+++ b/test/uri2.test
@@ -0,0 +1,63 @@
+# 2016 October 26
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+#
+# Tests for SQLITE_ENABLE_URI_00_ERROR builds.
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+
+ifcapable !uri_00_error {
+ finish_test
+ return
+}
+
+set testprefix uri2
+db close
+sqlite3_shutdown
+sqlite3_config_uri 1
+
+foreach {tn uri} {
+ 1 file:test.db%00trailing
+ 2 file:test.db?%00trailing=1
+ 3 file:test.db?trailing=1%00
+ 4 file:test.db?trailing=1&abc%00def
+ 5 file:test.db?trailing=1&abc%00def
+} {
+ do_test 1.$tn.1 {
+ set rc [catch { sqlite3 db $uri } msg]
+ list $rc $msg
+ } {1 {unexpected %00 in uri}}
+
+ do_test 1.$tn.2 {
+ set DB2 [sqlite3_open $uri]
+ sqlite3_errcode $DB2
+ } {SQLITE_ERROR}
+
+ catch { sqlite3_close $DB2 }
+
+ do_test 1.$tn.2 {
+ sqlite3 db ""
+ catchsql { ATTACH $uri AS aux }
+ } {1 {unexpected %00 in uri}}
+
+ do_test 1.$tn.3 {
+ sqlite3_errcode db
+ } {SQLITE_ERROR}
+
+ catch { db close }
+}
+
+reset_db
+do_test 2.0 {
+ expr {[lsearch [execsql {PRAGMA compile_options}] ENABLE_URI_00_ERROR] >= 0}
+} 1
+
+finish_test