OLD | NEW |
| (Empty) |
1 # 2006 August 23 | |
2 # | |
3 # The author disclaims copyright to this source code. In place of | |
4 # a legal notice, here is a blessing: | |
5 # | |
6 # May you do good and not evil. | |
7 # May you find forgiveness for yourself and forgive others. | |
8 # May you share freely, never taking more than you give. | |
9 # | |
10 #*********************************************************************** | |
11 # This file implements regression tests for SQLite library. The | |
12 # focus of this script is automatic extension loading and the | |
13 # sqlite3_auto_extension() API. | |
14 # | |
15 # $Id: loadext2.test,v 1.3 2008/03/19 16:08:54 drh Exp $ | |
16 | |
17 set testdir [file dirname $argv0] | |
18 source $testdir/tester.tcl | |
19 | |
20 # Only run these tests if the approriate APIs are defined | |
21 # in the system under test. | |
22 # | |
23 ifcapable !load_ext { | |
24 finish_test | |
25 return | |
26 } | |
27 if {[info command sqlite3_auto_extension_sqr]==""} { | |
28 finish_test | |
29 return | |
30 } | |
31 | |
32 | |
33 # None of the extension are loaded by default. | |
34 # | |
35 do_test loadext2-1.1 { | |
36 catchsql { | |
37 SELECT sqr(2) | |
38 } | |
39 } {1 {no such function: sqr}} | |
40 do_test loadext2-1.2 { | |
41 catchsql { | |
42 SELECT cube(2) | |
43 } | |
44 } {1 {no such function: cube}} | |
45 | |
46 # Extensions loaders not currently registered | |
47 # | |
48 do_test loadext2-1.2.1 { | |
49 sqlite3_cancel_auto_extension_sqr | |
50 } {0} | |
51 do_test loadext2-1.2.2 { | |
52 sqlite3_cancel_auto_extension_sqr | |
53 } {0} | |
54 do_test loadext2-1.2.3 { | |
55 sqlite3_cancel_auto_extension_sqr | |
56 } {0} | |
57 | |
58 | |
59 # Register auto-loaders. Still functions do not exist. | |
60 # | |
61 do_test loadext2-1.3 { | |
62 sqlite3_auto_extension_sqr | |
63 sqlite3_auto_extension_cube | |
64 catchsql { | |
65 SELECT sqr(2) | |
66 } | |
67 } {1 {no such function: sqr}} | |
68 do_test loadext2-1.4 { | |
69 catchsql { | |
70 SELECT cube(2) | |
71 } | |
72 } {1 {no such function: cube}} | |
73 | |
74 | |
75 # Functions do exist in a new database connection | |
76 # | |
77 do_test loadext2-1.5 { | |
78 sqlite3 db test.db | |
79 catchsql { | |
80 SELECT sqr(2) | |
81 } | |
82 } {0 4.0} | |
83 do_test loadext2-1.6 { | |
84 catchsql { | |
85 SELECT cube(2) | |
86 } | |
87 } {0 8.0} | |
88 | |
89 | |
90 # Reset extension auto loading. Existing extensions still exist. | |
91 # | |
92 do_test loadext2-1.7.1 { | |
93 sqlite3_cancel_auto_extension_sqr | |
94 } {1} | |
95 do_test loadext2-1.7.2 { | |
96 sqlite3_cancel_auto_extension_sqr | |
97 } {0} | |
98 do_test loadext2-1.7.3 { | |
99 sqlite3_cancel_auto_extension_cube | |
100 } {1} | |
101 do_test loadext2-1.7.4 { | |
102 sqlite3_cancel_auto_extension_cube | |
103 } {0} | |
104 do_test loadext2-1.7.5 { | |
105 catchsql { | |
106 SELECT sqr(2) | |
107 } | |
108 } {0 4.0} | |
109 do_test loadext2-1.8 { | |
110 catchsql { | |
111 SELECT cube(2) | |
112 } | |
113 } {0 8.0} | |
114 | |
115 | |
116 # Register only the sqr() function. | |
117 # | |
118 do_test loadext2-1.9 { | |
119 sqlite3_auto_extension_sqr | |
120 sqlite3 db test.db | |
121 catchsql { | |
122 SELECT sqr(2) | |
123 } | |
124 } {0 4.0} | |
125 do_test loadext2-1.10 { | |
126 catchsql { | |
127 SELECT cube(2) | |
128 } | |
129 } {1 {no such function: cube}} | |
130 | |
131 # Register only the cube() function. | |
132 # | |
133 do_test loadext2-1.11 { | |
134 sqlite3_reset_auto_extension | |
135 sqlite3_auto_extension_cube | |
136 sqlite3 db test.db | |
137 catchsql { | |
138 SELECT sqr(2) | |
139 } | |
140 } {1 {no such function: sqr}} | |
141 do_test loadext2-1.12 { | |
142 catchsql { | |
143 SELECT cube(2) | |
144 } | |
145 } {0 8.0} | |
146 | |
147 # Register a broken entry point. | |
148 # | |
149 do_test loadext2-1.13 { | |
150 sqlite3_auto_extension_broken | |
151 set rc [catch {sqlite3 db test.db} errmsg] | |
152 lappend rc $errmsg | |
153 } {1 {automatic extension loading failed: broken autoext!}} | |
154 do_test loadext2-1.14 { | |
155 catchsql { | |
156 SELECT sqr(2) | |
157 } | |
158 } {1 {no such function: sqr}} | |
159 do_test loadext2-1.15 { | |
160 catchsql { | |
161 SELECT cube(2) | |
162 } | |
163 } {0 8.0} | |
164 | |
165 | |
166 sqlite3_reset_auto_extension | |
167 autoinstall_test_functions | |
168 finish_test | |
OLD | NEW |