Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Side by Side Diff: third_party/sqlite/tool/omittest.tcl

Issue 3108030: Move bundled copy of sqlite one level deeper to better separate it... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/tool/mksqlite3internalh.tcl ('k') | third_party/sqlite/tool/opcodeDoc.awk » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1
2 set rcsid {$Id: omittest.tcl,v 1.8 2008/10/13 15:35:09 drh Exp $}
3
4 # Documentation for this script. This may be output to stderr
5 # if the script is invoked incorrectly.
6 set ::USAGE_MESSAGE {
7 This Tcl script is used to test the various compile time options
8 available for omitting code (the SQLITE_OMIT_xxx options). It
9 should be invoked as follows:
10
11 <script> ?-makefile PATH-TO-MAKEFILE?
12
13 The default value for ::MAKEFILE is "../Makefile.linux.gcc".
14
15 This script builds the testfixture program and runs the SQLite test suite
16 once with each SQLITE_OMIT_ option defined and then once with all options
17 defined together. Each run is performed in a seperate directory created
18 as a sub-directory of the current directory by the script. The output
19 of the build is saved in <sub-directory>/build.log. The output of the
20 test-suite is saved in <sub-directory>/test.log.
21
22 Almost any SQLite makefile (except those generated by configure - see below)
23 should work. The following properties are required:
24
25 * The makefile should support the "testfixture" target.
26 * The makefile should support the "test" target.
27 * The makefile should support the variable "OPTS" as a way to pass
28 options from the make command line to lemon and the C compiler.
29
30 More precisely, the following two invocations must be supported:
31
32 make -f $::MAKEFILE testfixture OPTS="-DSQLITE_OMIT_ALTERTABLE=1"
33 make -f $::MAKEFILE test
34
35 Makefiles generated by the sqlite configure program cannot be used as
36 they do not respect the OPTS variable.
37 }
38
39
40 # Build a testfixture executable and run quick.test using it. The first
41 # parameter is the name of the directory to create and use to run the
42 # test in. The second parameter is a list of OMIT symbols to define
43 # when doing so. For example:
44 #
45 # run_quick_test /tmp/testdir {SQLITE_OMIT_TRIGGER SQLITE_OMIT_VIEW}
46 #
47 #
48 proc run_quick_test {dir omit_symbol_list} {
49 # Compile the value of the OPTS Makefile variable.
50 set opts "-DSQLITE_MEMDEBUG -DSQLITE_DEBUG -DSQLITE_NO_SYNC"
51 if {$::tcl_platform(platform)=="windows"} {
52 append opts " -DSQLITE_OS_WIN=1"
53 } elseif {$::tcl_platform(platform)=="os2"} {
54 append opts " -DSQLITE_OS_OS2=1"
55 } else {
56 append opts " -DSQLITE_OS_UNIX=1"
57 }
58 foreach sym $omit_symbol_list {
59 append opts " -D${sym}=1"
60 }
61
62 # Create the directory and do the build. If an error occurs return
63 # early without attempting to run the test suite.
64 file mkdir $dir
65 puts -nonewline "Building $dir..."
66 flush stdout
67 catch {
68 file copy -force ./config.h $dir
69 file copy -force ./libtool $dir
70 }
71 set rc [catch {
72 exec make -C $dir -f $::MAKEFILE testfixture OPTS=$opts >& $dir/build.log
73 }]
74 if {$rc} {
75 puts "No good. See $dir/build.log."
76 return
77 } else {
78 puts "Ok"
79 }
80
81 # Create an empty file "$dir/sqlite3". This is to trick the makefile out
82 # of trying to build the sqlite shell. The sqlite shell won't build
83 # with some of the OMIT options (i.e OMIT_COMPLETE).
84 set sqlite3_dummy $dir/sqlite3
85 if {$::tcl_platform(platform)=="windows" || $::tcl_platform(platform)=="os2"} {
86 append sqlite3_dummy ".exe"
87 }
88 if {![file exists $sqlite3_dummy]} {
89 set wr [open $sqlite3_dummy w]
90 puts $wr "dummy"
91 close $wr
92 }
93
94 # Run the test suite.
95 puts -nonewline "Testing $dir..."
96 flush stdout
97 set rc [catch {
98 exec make -C $dir -f $::MAKEFILE test OPTS=$opts >& $dir/test.log
99 }]
100 if {$rc} {
101 puts "No good. See $dir/test.log."
102 } else {
103 puts "Ok"
104 }
105 }
106
107
108 # This proc processes the command line options passed to this script.
109 # Currently the only option supported is "-makefile", default
110 # "../Makefile.linux-gcc". Set the ::MAKEFILE variable to the value of this
111 # option.
112 #
113 proc process_options {argv} {
114 if {$::tcl_platform(platform)=="windows" || $::tcl_platform(platform)=="os2"} {
115 set ::MAKEFILE ../Makefile ;# Default value
116 } else {
117 set ::MAKEFILE ../Makefile.linux-gcc ;# Default value
118 }
119 for {set i 0} {$i < [llength $argv]} {incr i} {
120 switch -- [lindex $argv $i] {
121 -makefile {
122 incr i
123 set ::MAKEFILE [lindex $argv $i]
124 }
125
126 default {
127 puts stderr [string trim $::USAGE_MESSAGE]
128 exit -1
129 }
130 }
131 set ::MAKEFILE [file normalize $::MAKEFILE]
132 }
133 }
134
135 # Main routine.
136 #
137
138 proc main {argv} {
139 # List of SQLITE_OMIT_XXX symbols supported by SQLite.
140 set ::SYMBOLS [list \
141 SQLITE_OMIT_ALTERTABLE \
142 SQLITE_OMIT_ANALYZE \
143 SQLITE_OMIT_ATTACH \
144 SQLITE_OMIT_AUTHORIZATION \
145 SQLITE_OMIT_AUTOINCREMENT \
146 SQLITE_OMIT_AUTOINIT \
147 SQLITE_OMIT_AUTOVACUUM \
148 SQLITE_OMIT_BETWEEN_OPTIMIZATION \
149 SQLITE_OMIT_BLOB_LITERAL \
150 SQLITE_OMIT_BUILTIN_TEST \
151 SQLITE_OMIT_CAST \
152 SQLITE_OMIT_CHECK \
153 SQLITE_OMIT_COMPLETE \
154 SQLITE_OMIT_COMPOUND_SELECT \
155 SQLITE_OMIT_CONFLICT_CLAUSE \
156 SQLITE_OMIT_DATETIME_FUNCS \
157 SQLITE_OMIT_DECLTYPE \
158 off_SQLITE_OMIT_DISKIO \
159 SQLITE_OMIT_EXPLAIN \
160 SQLITE_OMIT_FLAG_PRAGMAS \
161 SQLITE_OMIT_FLOATING_POINT \
162 SQLITE_OMIT_FOREIGN_KEY \
163 SQLITE_OMIT_GET_TABLE \
164 SQLITE_OMIT_GLOBALRECOVER \
165 SQLITE_OMIT_INCRBLOB \
166 SQLITE_OMIT_INTEGRITY_CHECK \
167 SQLITE_OMIT_LIKE_OPTIMIZATION \
168 SQLITE_OMIT_LOAD_EXTENSION \
169 SQLITE_OMIT_LOCALTIME \
170 SQLITE_OMIT_MEMORYDB \
171 SQLITE_OMIT_OR_OPTIMIZATION \
172 SQLITE_OMIT_PAGER_PRAGMAS \
173 SQLITE_OMIT_PRAGMA \
174 SQLITE_OMIT_PROGRESS_CALLBACK \
175 SQLITE_OMIT_QUICKBALANCE \
176 SQLITE_OMIT_REINDEX \
177 SQLITE_OMIT_SCHEMA_PRAGMAS \
178 SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS \
179 SQLITE_OMIT_SHARED_CACHE \
180 SQLITE_OMIT_SUBQUERY \
181 SQLITE_OMIT_TCL_VARIABLE \
182 SQLITE_OMIT_TEMPDB \
183 SQLITE_OMIT_TRACE \
184 SQLITE_OMIT_TRIGGER \
185 SQLITE_OMIT_UTF16 \
186 SQLITE_OMIT_VACUUM \
187 SQLITE_OMIT_VIEW \
188 SQLITE_OMIT_VIRTUALTABLE \
189 SQLITE_OMIT_XFER_OPT \
190 ]
191
192 # Process any command line options.
193 process_options $argv
194
195 # First try a test with all OMIT symbols except SQLITE_OMIT_FLOATING_POINT
196 # and SQLITE_OMIT_PRAGMA defined. The former doesn't work (causes segfaults)
197 # and the latter is currently incompatible with the test suite (this should
198 # be fixed, but it will be a lot of work).
199 set allsyms [list]
200 foreach s $::SYMBOLS {
201 if {$s!="SQLITE_OMIT_FLOATING_POINT" && $s!="SQLITE_OMIT_PRAGMA"} {
202 lappend allsyms $s
203 }
204 }
205 run_quick_test test_OMIT_EVERYTHING $allsyms
206
207 # Now try one quick.test with each of the OMIT symbols defined. Included
208 # are the OMIT_FLOATING_POINT and OMIT_PRAGMA symbols, even though we
209 # know they will fail. It's good to be reminded of this from time to time.
210 foreach sym $::SYMBOLS {
211 set dirname "test_[string range $sym 7 end]"
212 run_quick_test $dirname $sym
213 }
214 }
215
216 main $argv
OLDNEW
« no previous file with comments | « third_party/sqlite/tool/mksqlite3internalh.tcl ('k') | third_party/sqlite/tool/opcodeDoc.awk » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698