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

Side by Side Diff: third_party/sqlite/src/test/releasetest.tcl

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 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
« no previous file with comments | « third_party/sqlite/src/test/regexp2.test ('k') | third_party/sqlite/src/test/rollback2.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/tclsh 1 #!/usr/bin/tclsh
2 # 2 #
3 # Documentation for this script. This may be output to stderr 3 # Documentation for this script. This may be output to stderr
4 # if the script is invoked incorrectly. See the [process_options] 4 # if the script is invoked incorrectly. See the [process_options]
5 # proc below. 5 # proc below.
6 # 6 #
7 set ::USAGE_MESSAGE { 7 set ::USAGE_MESSAGE {
8 This Tcl script is used to test the various configurations required 8 This Tcl script is used to test the various configurations required
9 before releasing a new version. Supported command line options (all 9 before releasing a new version. Supported command line options (all
10 optional) are: 10 optional) are:
11 11
12 --srcdir TOP-OF-SQLITE-TREE (see below) 12 --buildonly (Just build testfixture - do not run)
13 --config CONFIGNAME (Run only CONFIGNAME)
14 --dryrun (Print what would have happened)
15 -f|--force (Run even if uncommitted changes)
16 --info (Show diagnostic info)
17 --jobs N (Use N processes - default 1)
18 --keep (Delete no files after each test run)
19 --msvc (Use MSVC as the compiler)
13 --platform PLATFORM (see below) 20 --platform PLATFORM (see below)
14 --config CONFIGNAME (Run only CONFIGNAME) 21 --progress (Show progress messages)
15 --quick (Run "veryquick.test" only) 22 --quick (Run "veryquick.test" only)
16 --veryquick (Run "make smoketest" only) 23 --veryquick (Run "make smoketest" only)
17 --msvc (Use MSVC as the compiler)
18 --buildonly (Just build testfixture - do not run)
19 --dryrun (Print what would have happened)
20 --info (Show diagnostic info)
21 --with-tcl=DIR (Use TCL build at DIR) 24 --with-tcl=DIR (Use TCL build at DIR)
22 --jobs N (Use N processes - default 1)
23 --progress (Show progress messages)
24
25 The default value for --srcdir is the parent of the directory holding
26 this script.
27 25
28 The script determines the default value for --platform using the 26 The script determines the default value for --platform using the
29 $tcl_platform(os) and $tcl_platform(machine) variables. Supported 27 $tcl_platform(os) and $tcl_platform(machine) variables. Supported
30 platforms are "Linux-x86", "Linux-x86_64", "Darwin-i386", 28 platforms are "Linux-x86", "Linux-x86_64", "Darwin-i386",
31 "Darwin-x86_64", "Windows NT-intel", and "Windows NT-amd64". 29 "Darwin-x86_64", "Windows NT-intel", and "Windows NT-amd64".
32 30
33 Every test begins with a fresh run of the configure script at the top 31 Every test begins with a fresh run of the configure script at the top
34 of the SQLite source tree. 32 of the SQLite source tree.
35 } 33 }
36 34
37 # Return a timestamp of the form HH:MM:SS 35 # Return a timestamp of the form HH:MM:SS
38 # 36 #
39 proc now {} { 37 proc now {} {
40 return [clock format [clock seconds] -format %H:%M:%S] 38 return [clock format [clock seconds] -format %H:%M:%S]
41 } 39 }
42 40
43 # Omit comments (text between # and \n) in a long multi-line string. 41 # Omit comments (text between # and \n) in a long multi-line string.
44 # 42 #
45 proc strip_comments {in} { 43 proc strip_comments {in} {
46 regsub -all {#[^\n]*\n} $in {} out 44 regsub -all {#[^\n]*\n} $in {} out
47 return $out 45 return $out
48 } 46 }
49 47
50 array set ::Configs [strip_comments { 48 array set ::Configs [strip_comments {
51 "Default" { 49 "Default" {
52 -O2 50 -O2
53 --disable-amalgamation --disable-shared 51 --disable-amalgamation --disable-shared
52 --enable-session
54 } 53 }
55 "Sanitize" { 54 "Sanitize" {
56 CC=clang -fsanitize=undefined 55 CC=clang -fsanitize=undefined
57 -DSQLITE_ENABLE_STAT4 56 -DSQLITE_ENABLE_STAT4
57 --enable-session
58 }
59 "Stdcall" {
60 -DUSE_STDCALL=1
61 -O2
58 } 62 }
59 "Have-Not" { 63 "Have-Not" {
60 # The "Have-Not" configuration sets all possible -UHAVE_feature options 64 # The "Have-Not" configuration sets all possible -UHAVE_feature options
61 # in order to verify that the code works even on platforms that lack 65 # in order to verify that the code works even on platforms that lack
62 # these support services. 66 # these support services.
63 -DHAVE_FDATASYNC=0 67 -DHAVE_FDATASYNC=0
64 -DHAVE_GMTIME_R=0 68 -DHAVE_GMTIME_R=0
65 -DHAVE_ISNAN=0 69 -DHAVE_ISNAN=0
66 -DHAVE_LOCALTIME_R=0 70 -DHAVE_LOCALTIME_R=0
67 -DHAVE_LOCALTIME_S=0 71 -DHAVE_LOCALTIME_S=0
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 -DSQLITE_ENABLE_MEMSYS3=1 103 -DSQLITE_ENABLE_MEMSYS3=1
100 -DSQLITE_ENABLE_COLUMN_METADATA=1 104 -DSQLITE_ENABLE_COLUMN_METADATA=1
101 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 105 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1
102 -DSQLITE_SECURE_DELETE=1 106 -DSQLITE_SECURE_DELETE=1
103 -DSQLITE_SOUNDEX=1 107 -DSQLITE_SOUNDEX=1
104 -DSQLITE_ENABLE_ATOMIC_WRITE=1 108 -DSQLITE_ENABLE_ATOMIC_WRITE=1
105 -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1 109 -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1
106 -DSQLITE_ENABLE_OVERSIZE_CELL_CHECK=1 110 -DSQLITE_ENABLE_OVERSIZE_CELL_CHECK=1
107 -DSQLITE_ENABLE_STAT4 111 -DSQLITE_ENABLE_STAT4
108 -DSQLITE_ENABLE_STMT_SCANSTATUS 112 -DSQLITE_ENABLE_STMT_SCANSTATUS
109 --enable-json1 --enable-fts5 113 --enable-json1 --enable-fts5 --enable-session
110 } 114 }
111 "Debug-One" { 115 "Debug-One" {
112 --disable-shared 116 --disable-shared
113 -O2 117 -O2
114 -DSQLITE_DEBUG=1 118 -DSQLITE_DEBUG=1
115 -DSQLITE_MEMDEBUG=1 119 -DSQLITE_MEMDEBUG=1
116 -DSQLITE_MUTEX_NOOP=1 120 -DSQLITE_MUTEX_NOOP=1
117 -DSQLITE_TCL_DEFAULT_FULLMUTEX=1 121 -DSQLITE_TCL_DEFAULT_FULLMUTEX=1
118 -DSQLITE_ENABLE_FTS3=1 122 -DSQLITE_ENABLE_FTS3=1
119 -DSQLITE_ENABLE_RTREE=1 123 -DSQLITE_ENABLE_RTREE=1
120 -DSQLITE_ENABLE_MEMSYS5=1 124 -DSQLITE_ENABLE_MEMSYS5=1
121 -DSQLITE_ENABLE_MEMSYS3=1
122 -DSQLITE_ENABLE_COLUMN_METADATA=1 125 -DSQLITE_ENABLE_COLUMN_METADATA=1
123 -DSQLITE_ENABLE_STAT4 126 -DSQLITE_ENABLE_STAT4
124 -DSQLITE_ENABLE_HIDDEN_COLUMNS 127 -DSQLITE_ENABLE_HIDDEN_COLUMNS
125 -DSQLITE_MAX_ATTACHED=125 128 -DSQLITE_MAX_ATTACHED=125
126 } 129 }
127 "Fast-One" { 130 "Fast-One" {
128 -O6 131 -O6
129 -DSQLITE_ENABLE_FTS4=1 132 -DSQLITE_ENABLE_FTS4=1
130 -DSQLITE_ENABLE_RTREE=1 133 -DSQLITE_ENABLE_RTREE=1
131 -DSQLITE_ENABLE_STAT4 134 -DSQLITE_ENABLE_STAT4
132 -DSQLITE_ENABLE_RBU 135 -DSQLITE_ENABLE_RBU
133 -DSQLITE_MAX_ATTACHED=125 136 -DSQLITE_MAX_ATTACHED=125
134 -DLONGDOUBLE_TYPE=double 137 -DLONGDOUBLE_TYPE=double
138 --enable-session
135 } 139 }
136 "Device-One" { 140 "Device-One" {
137 -O2 141 -O2
138 -DSQLITE_DEBUG=1 142 -DSQLITE_DEBUG=1
139 -DSQLITE_DEFAULT_AUTOVACUUM=1 143 -DSQLITE_DEFAULT_AUTOVACUUM=1
140 -DSQLITE_DEFAULT_CACHE_SIZE=64 144 -DSQLITE_DEFAULT_CACHE_SIZE=64
141 -DSQLITE_DEFAULT_PAGE_SIZE=1024 145 -DSQLITE_DEFAULT_PAGE_SIZE=1024
142 -DSQLITE_DEFAULT_TEMP_CACHE_SIZE=32 146 -DSQLITE_DEFAULT_TEMP_CACHE_SIZE=32
143 -DSQLITE_DISABLE_LFS=1 147 -DSQLITE_DISABLE_LFS=1
144 -DSQLITE_ENABLE_ATOMIC_WRITE=1 148 -DSQLITE_ENABLE_ATOMIC_WRITE=1
(...skipping 16 matching lines...) Expand all
161 -DSQLITE_DEFAULT_TEMP_CACHE_SIZE=1000 165 -DSQLITE_DEFAULT_TEMP_CACHE_SIZE=1000
162 -DSQLITE_DISABLE_LFS=1 166 -DSQLITE_DISABLE_LFS=1
163 -DSQLITE_ENABLE_FTS3=1 167 -DSQLITE_ENABLE_FTS3=1
164 -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1 168 -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1
165 -DSQLITE_ENABLE_RTREE=1 169 -DSQLITE_ENABLE_RTREE=1
166 -DSQLITE_MAX_COMPOUND_SELECT=50 170 -DSQLITE_MAX_COMPOUND_SELECT=50
167 -DSQLITE_MAX_PAGE_SIZE=32768 171 -DSQLITE_MAX_PAGE_SIZE=32768
168 -DSQLITE_OMIT_TRACE=1 172 -DSQLITE_OMIT_TRACE=1
169 -DSQLITE_TEMP_STORE=3 173 -DSQLITE_TEMP_STORE=3
170 -DSQLITE_THREADSAFE=2 174 -DSQLITE_THREADSAFE=2
171 --enable-json1 --enable-fts5 175 --enable-json1 --enable-fts5 --enable-session
172 } 176 }
173 "Locking-Style" { 177 "Locking-Style" {
174 -O2 178 -O2
175 -DSQLITE_ENABLE_LOCKING_STYLE=1 179 -DSQLITE_ENABLE_LOCKING_STYLE=1
176 } 180 }
177 "OS-X" { 181 "Apple" {
178 -O1 # Avoid a compiler bug in gcc 4.2.1 build 5658 182 -O1 # Avoid a compiler bug in gcc 4.2.1 build 5658
179 -DSQLITE_OMIT_LOAD_EXTENSION=1 183 -DHAVE_GMTIME_R=1
180 -DSQLITE_DEFAULT_MEMSTATUS=0 184 -DHAVE_ISNAN=1
181 -DSQLITE_THREADSAFE=2 185 -DHAVE_LOCALTIME_R=1
182 -DSQLITE_OS_UNIX=1 186 -DHAVE_PREAD=1
183 -DSQLITE_ENABLE_JSON1=1 187 -DHAVE_PWRITE=1
184 -DSQLITE_ENABLE_LOCKING_STYLE=1 188 -DHAVE_USLEEP=1
185 -DUSE_PREAD=1 189 -DHAVE_USLEEP=1
186 -DSQLITE_ENABLE_RTREE=1 190 -DHAVE_UTIME=1
191 -DSQLITE_DEFAULT_CACHE_SIZE=1000
192 -DSQLITE_DEFAULT_CKPTFULLFSYNC=1
193 -DSQLITE_DEFAULT_MEMSTATUS=1
194 -DSQLITE_DEFAULT_PAGE_SIZE=1024
195 -DSQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS=1
196 -DSQLITE_ENABLE_API_ARMOR=1
197 -DSQLITE_ENABLE_AUTO_PROFILE=1
198 -DSQLITE_ENABLE_FLOCKTIMEOUT=1
187 -DSQLITE_ENABLE_FTS3=1 199 -DSQLITE_ENABLE_FTS3=1
188 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 200 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1
189 -DSQLITE_DEFAULT_CACHE_SIZE=1000 201 -DSQLITE_ENABLE_FTS3_TOKENIZER=1
202 if:os=="Darwin" -DSQLITE_ENABLE_LOCKING_STYLE=1
203 -DSQLITE_ENABLE_PERSIST_WAL=1
204 -DSQLITE_ENABLE_PURGEABLE_PCACHE=1
205 -DSQLITE_ENABLE_RTREE=1
206 -DSQLITE_ENABLE_SNAPSHOT=1
207 # -DSQLITE_ENABLE_SQLLOG=1
208 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1
190 -DSQLITE_MAX_LENGTH=2147483645 209 -DSQLITE_MAX_LENGTH=2147483645
191 -DSQLITE_MAX_VARIABLE_NUMBER=500000 210 -DSQLITE_MAX_VARIABLE_NUMBER=500000
192 -DSQLITE_DEBUG=1 211 # -DSQLITE_MEMDEBUG=1
212 -DSQLITE_NO_SYNC=1
213 -DSQLITE_OMIT_AUTORESET=1
214 -DSQLITE_OMIT_LOAD_EXTENSION=1
193 -DSQLITE_PREFER_PROXY_LOCKING=1 215 -DSQLITE_PREFER_PROXY_LOCKING=1
194 -DSQLITE_ENABLE_API_ARMOR=1 216 -DSQLITE_SERIES_CONSTRAINT_VERIFY=1
217 -DSQLITE_THREADSAFE=2
218 -DSQLITE_USE_URI=1
219 -DSQLITE_WRITE_WALFRAME_PREBUFFERED=1
220 -DUSE_GUARDED_FD=1
221 -DUSE_PREAD=1
195 --enable-json1 --enable-fts5 222 --enable-json1 --enable-fts5
196 } 223 }
197 "Extra-Robustness" { 224 "Extra-Robustness" {
198 -DSQLITE_ENABLE_OVERSIZE_CELL_CHECK=1 225 -DSQLITE_ENABLE_OVERSIZE_CELL_CHECK=1
199 -DSQLITE_MAX_ATTACHED=62 226 -DSQLITE_MAX_ATTACHED=62
200 } 227 }
201 "Devkit" { 228 "Devkit" {
202 -DSQLITE_DEFAULT_FILE_FORMAT=4 229 -DSQLITE_DEFAULT_FILE_FORMAT=4
203 -DSQLITE_MAX_ATTACHED=30 230 -DSQLITE_MAX_ATTACHED=30
204 -DSQLITE_ENABLE_COLUMN_METADATA 231 -DSQLITE_ENABLE_COLUMN_METADATA
205 -DSQLITE_ENABLE_FTS4 232 -DSQLITE_ENABLE_FTS4
233 -DSQLITE_ENABLE_FTS5
206 -DSQLITE_ENABLE_FTS4_PARENTHESIS 234 -DSQLITE_ENABLE_FTS4_PARENTHESIS
207 -DSQLITE_DISABLE_FTS4_DEFERRED 235 -DSQLITE_DISABLE_FTS4_DEFERRED
208 -DSQLITE_ENABLE_RTREE 236 -DSQLITE_ENABLE_RTREE
209 --enable-json1 --enable-fts5 237 --enable-json1 --enable-fts5
210 } 238 }
211 "No-lookaside" { 239 "No-lookaside" {
212 -DSQLITE_TEST_REALLOC_STRESS=1 240 -DSQLITE_TEST_REALLOC_STRESS=1
213 -DSQLITE_OMIT_LOOKASIDE=1 241 -DSQLITE_OMIT_LOOKASIDE=1
214 -DHAVE_USLEEP=1 242 -DHAVE_USLEEP=1
215 } 243 }
(...skipping 24 matching lines...) Expand all
240 "Fast-One" fuzztest 268 "Fast-One" fuzztest
241 "Debug-One" "mptest test" 269 "Debug-One" "mptest test"
242 "Have-Not" test 270 "Have-Not" test
243 "Secure-Delete" test 271 "Secure-Delete" test
244 "Unlock-Notify" "QUICKTEST_INCLUDE=notify2.test test" 272 "Unlock-Notify" "QUICKTEST_INCLUDE=notify2.test test"
245 "Update-Delete-Limit" test 273 "Update-Delete-Limit" test
246 "Extra-Robustness" test 274 "Extra-Robustness" test
247 "Device-Two" test 275 "Device-Two" test
248 "No-lookaside" test 276 "No-lookaside" test
249 "Devkit" test 277 "Devkit" test
278 "Apple" test
250 "Sanitize" {QUICKTEST_OMIT=func4.test,nan.test test} 279 "Sanitize" {QUICKTEST_OMIT=func4.test,nan.test test}
251 "Device-One" fulltest 280 "Device-One" fulltest
252 "Default" "threadtest fulltest" 281 "Default" "threadtest fulltest"
253 "Valgrind" valgrindtest 282 "Valgrind" valgrindtest
254 } 283 }
255 Linux-i686 { 284 Linux-i686 {
256 "Devkit" test 285 "Devkit" test
257 "Have-Not" test 286 "Have-Not" test
258 "Unlock-Notify" "QUICKTEST_INCLUDE=notify2.test test" 287 "Unlock-Notify" "QUICKTEST_INCLUDE=notify2.test test"
259 "Device-One" test 288 "Device-One" test
260 "Device-Two" test 289 "Device-Two" test
261 "Default" "threadtest fulltest" 290 "Default" "threadtest fulltest"
262 } 291 }
263 Darwin-i386 { 292 Darwin-i386 {
264 "Locking-Style" "mptest test" 293 "Locking-Style" "mptest test"
265 "Have-Not" test 294 "Have-Not" test
266 "OS-X" "threadtest fulltest" 295 "Apple" "threadtest fulltest"
267 } 296 }
268 Darwin-x86_64 { 297 Darwin-x86_64 {
269 "Locking-Style" "mptest test" 298 "Locking-Style" "mptest test"
270 "Have-Not" test 299 "Have-Not" test
271 "OS-X" "threadtest fulltest" 300 "Apple" "threadtest fulltest"
272 } 301 }
273 "Windows NT-intel" { 302 "Windows NT-intel" {
303 "Stdcall" test
274 "Have-Not" test 304 "Have-Not" test
275 "Default" "mptest fulltestonly" 305 "Default" "mptest fulltestonly"
276 } 306 }
277 "Windows NT-amd64" { 307 "Windows NT-amd64" {
308 "Stdcall" test
278 "Have-Not" test 309 "Have-Not" test
279 "Default" "mptest fulltestonly" 310 "Default" "mptest fulltestonly"
280 } 311 }
281 312
282 # The Failure-Detection platform runs various tests that deliberately 313 # The Failure-Detection platform runs various tests that deliberately
283 # fail. This is used as a test of this script to verify that this script 314 # fail. This is used as a test of this script to verify that this script
284 # correctly identifies failures. 315 # correctly identifies failures.
285 # 316 #
286 Failure-Detection { 317 Failure-Detection {
287 Fail0 "TEST_FAILURE=0 test" 318 Fail0 "TEST_FAILURE=0 test"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 # list in the same format as each element of the list passed to the 461 # list in the same format as each element of the list passed to the
431 # [run_all_test_suites] command in the master process. 462 # [run_all_test_suites] command in the master process.
432 # 463 #
433 # The slave then runs the "configure && make test" commands specified. It 464 # The slave then runs the "configure && make test" commands specified. It
434 # exits successfully if the tests passes, or with a non-zero error code 465 # exits successfully if the tests passes, or with a non-zero error code
435 # otherwise. 466 # otherwise.
436 # 467 #
437 proc run_slave_test {} { 468 proc run_slave_test {} {
438 # Read global vars configuration from stdin. 469 # Read global vars configuration from stdin.
439 set V [gets stdin] 470 set V [gets stdin]
440 foreach {::TRACE ::MSVC ::DRYRUN} $V {} 471 foreach {::TRACE ::MSVC ::DRYRUN ::KEEPFILES} $V {}
441 472
442 # Read the test-suite configuration from stdin. 473 # Read the test-suite configuration from stdin.
443 set T [gets stdin] 474 set T [gets stdin]
444 foreach {title dir configOpts testtarget makeOpts cflags opts} $T {} 475 foreach {title dir configOpts testtarget makeOpts cflags opts} $T {}
445 476
446 # Create and switch to the test directory. 477 # Create and switch to the test directory.
447 set ::env(SQLITE_TMPDIR) [file normalize $dir] 478 set normaldir [file normalize $dir]
479 set ::env(SQLITE_TMPDIR) $normaldir
448 trace_cmd file mkdir $dir 480 trace_cmd file mkdir $dir
449 trace_cmd cd $dir 481 trace_cmd cd $dir
450 catch {file delete core} 482 catch {file delete core}
451 catch {file delete test.log} 483 catch {file delete test.log}
452 484
453 # Run the "./configure && make" commands. 485 # Run the "./configure && make" commands.
454 set rc 0 486 set rc 0
455 set rc [catch [configureCommand $configOpts]] 487 set rc [catch [configureCommand $configOpts]]
456 if {!$rc} { 488 if {!$rc} {
457 if {[info exists ::env(TCLSH_CMD)]} { 489 if {[info exists ::env(TCLSH_CMD)]} {
458 set savedEnv(TCLSH_CMD) $::env(TCLSH_CMD) 490 set savedEnv(TCLSH_CMD) $::env(TCLSH_CMD)
459 } else { 491 } else {
460 unset -nocomplain savedEnv(TCLSH_CMD) 492 unset -nocomplain savedEnv(TCLSH_CMD)
461 } 493 }
462 set ::env(TCLSH_CMD) [file nativename [info nameofexecutable]] 494 set ::env(TCLSH_CMD) [file nativename [info nameofexecutable]]
463 set rc [catch [makeCommand $testtarget $makeOpts $cflags $opts]] 495 set rc [catch [makeCommand $testtarget $makeOpts $cflags $opts]]
464 if {[info exists savedEnv(TCLSH_CMD)]} { 496 if {[info exists savedEnv(TCLSH_CMD)]} {
465 set ::env(TCLSH_CMD) $savedEnv(TCLSH_CMD) 497 set ::env(TCLSH_CMD) $savedEnv(TCLSH_CMD)
466 } else { 498 } else {
467 unset -nocomplain ::env(TCLSH_CMD) 499 unset -nocomplain ::env(TCLSH_CMD)
468 } 500 }
469 } 501 }
470 502
503 # Clean up lots of extra files if --keep was not specified.
504 if {$::KEEPFILES==0} { cleanup $normaldir }
505
471 # Exis successfully if the test passed, or with a non-zero error code 506 # Exis successfully if the test passed, or with a non-zero error code
472 # otherwise. 507 # otherwise.
473 exit $rc 508 exit $rc
474 } 509 }
475 510
476 # This command is invoked in the master process each time a slave 511 # This command is invoked in the master process each time a slave
477 # file-descriptor is readable. 512 # file-descriptor is readable.
478 # 513 #
479 proc slave_fileevent {fd T tm1} { 514 proc slave_fileevent {fd T tm1} {
480 global G 515 global G
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 } 595 }
561 596
562 # Run the job. 597 # Run the job.
563 # 598 #
564 set tm1 [clock seconds] 599 set tm1 [clock seconds]
565 incr G(nJob) 600 incr G(nJob)
566 set script [file normalize [info script]] 601 set script [file normalize [info script]]
567 set fd [open "|[info nameofexecutable] $script --slave" r+] 602 set fd [open "|[info nameofexecutable] $script --slave" r+]
568 fconfigure $fd -blocking 0 603 fconfigure $fd -blocking 0
569 fileevent $fd readable [list slave_fileevent $fd $T $tm1] 604 fileevent $fd readable [list slave_fileevent $fd $T $tm1]
570 puts $fd [list $::TRACE $::MSVC $::DRYRUN] 605 puts $fd [list $::TRACE $::MSVC $::DRYRUN $::KEEPFILES]
571 puts $fd [list {*}$T] 606 puts $fd [list {*}$T]
572 flush $fd 607 flush $fd
573 } 608 }
574 } 609 }
575 } 610 }
576 611
577 proc add_test_suite {listvar name testtarget config} { 612 proc add_test_suite {listvar name testtarget config} {
578 upvar $listvar alltests 613 upvar $listvar alltests
579 614
580 # Tcl variable $opts is used to build up the value used to set the 615 # Tcl variable $opts is used to build up the value used to set the
581 # OPTS Makefile variable. Variable $cflags holds the value for 616 # OPTS Makefile variable. Variable $cflags holds the value for
582 # CFLAGS. The makefile will pass OPTS to both gcc and lemon, but 617 # CFLAGS. The makefile will pass OPTS to both gcc and lemon, but
583 # CFLAGS is only passed to gcc. 618 # CFLAGS is only passed to gcc.
584 # 619 #
585 set makeOpts "" 620 set makeOpts ""
586 set cflags [expr {$::MSVC ? "-Zi" : "-g"}] 621 set cflags [expr {$::MSVC ? "-Zi" : "-g"}]
587 set opts "" 622 set opts ""
588 set title ${name}($testtarget) 623 set title ${name}($testtarget)
589 set configOpts $::WITHTCL 624 set configOpts $::WITHTCL
625 set skip 0
590 626
591 regsub -all {#[^\n]*\n} $config \n config 627 regsub -all {#[^\n]*\n} $config \n config
592 foreach arg $config { 628 foreach arg $config {
629 if {$skip} {
630 set skip 0
631 continue
632 }
593 if {[regexp {^-[UD]} $arg]} { 633 if {[regexp {^-[UD]} $arg]} {
594 lappend opts $arg 634 lappend opts $arg
595 } elseif {[regexp {^[A-Z]+=} $arg]} { 635 } elseif {[regexp {^[A-Z]+=} $arg]} {
596 lappend testtarget $arg 636 lappend testtarget $arg
637 } elseif {[regexp {^if:([a-z]+)(.*)} $arg all key tail]} {
638 # Arguments of the form 'if:os=="Linux"' will cause the subsequent
639 # argument to be skipped if the $tcl_platform(os) is not "Linux", for
640 # example...
641 set skip [expr !(\$::tcl_platform($key)$tail)]
597 } elseif {[regexp {^--(enable|disable)-} $arg]} { 642 } elseif {[regexp {^--(enable|disable)-} $arg]} {
598 if {$::MSVC} { 643 if {$::MSVC} {
599 if {$arg eq "--disable-amalgamation"} { 644 if {$arg eq "--disable-amalgamation"} {
600 lappend makeOpts USE_AMALGAMATION=0 645 lappend makeOpts USE_AMALGAMATION=0
601 continue 646 continue
602 } 647 }
603 if {$arg eq "--disable-shared"} { 648 if {$arg eq "--disable-shared"} {
604 lappend makeOpts USE_CRT_DLL=0 DYNAMIC_SHELL=0 649 lappend makeOpts USE_CRT_DLL=0 DYNAMIC_SHELL=0
605 continue 650 continue
606 } 651 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 726
682 # The following procedure returns the "make" command to be executed for the 727 # The following procedure returns the "make" command to be executed for the
683 # specified targets, compiler flags, and options. 728 # specified targets, compiler flags, and options.
684 # 729 #
685 proc makeCommand { targets makeOpts cflags opts } { 730 proc makeCommand { targets makeOpts cflags opts } {
686 set result [list trace_cmd exec] 731 set result [list trace_cmd exec]
687 if {$::MSVC} { 732 if {$::MSVC} {
688 set nmakeDir [file nativename $::SRCDIR] 733 set nmakeDir [file nativename $::SRCDIR]
689 set nmakeFile [file nativename [file join $nmakeDir Makefile.msc]] 734 set nmakeFile [file nativename [file join $nmakeDir Makefile.msc]]
690 lappend result nmake /f $nmakeFile TOP=$nmakeDir 735 lappend result nmake /f $nmakeFile TOP=$nmakeDir
736 if {[regexp {USE_STDCALL=1} $cflags]} {
737 lappend result USE_STDCALL=1
738 }
691 } else { 739 } else {
692 lappend result make 740 lappend result make
693 } 741 }
694 foreach makeOpt $makeOpts { 742 foreach makeOpt $makeOpts {
695 lappend result $makeOpt 743 lappend result $makeOpt
696 } 744 }
697 lappend result clean 745 lappend result clean
698 foreach target $targets { 746 foreach target $targets {
699 lappend result $target 747 lappend result $target
700 } 748 }
(...skipping 24 matching lines...) Expand all
725 proc process_options {argv} { 773 proc process_options {argv} {
726 set ::SRCDIR [file normalize [file dirname [file dirname $::argv0]]] 774 set ::SRCDIR [file normalize [file dirname [file dirname $::argv0]]]
727 set ::QUICK 0 775 set ::QUICK 0
728 set ::MSVC 0 776 set ::MSVC 0
729 set ::BUILDONLY 0 777 set ::BUILDONLY 0
730 set ::DRYRUN 0 778 set ::DRYRUN 0
731 set ::TRACE 0 779 set ::TRACE 0
732 set ::JOBS 1 780 set ::JOBS 1
733 set ::PROGRESS_MSGS 0 781 set ::PROGRESS_MSGS 0
734 set ::WITHTCL {} 782 set ::WITHTCL {}
783 set ::FORCE 0
784 set ::KEEPFILES 0 ;# Keep extra files after test run
735 set config {} 785 set config {}
736 set platform $::tcl_platform(os)-$::tcl_platform(machine) 786 set platform $::tcl_platform(os)-$::tcl_platform(machine)
737 787
738 for {set i 0} {$i < [llength $argv]} {incr i} { 788 for {set i 0} {$i < [llength $argv]} {incr i} {
739 set x [lindex $argv $i] 789 set x [lindex $argv $i]
740 if {[regexp {^--[a-z]} $x]} {set x [string range $x 1 end]} 790 if {[regexp {^--[a-z]} $x]} {set x [string range $x 1 end]}
741 switch -glob -- $x { 791 switch -glob -- $x {
742 -slave { 792 -slave {
743 run_slave_test 793 run_slave_test
744 exit 794 exit
745 } 795 }
746 796
797 # Undocumented legacy option: --srcdir DIRECTORY
798 #
799 # DIRECTORY is the root of the SQLite checkout. This sets the
800 # SRCDIR global variable. But that variable is already set
801 # automatically so there really is no reason to have this option.
802 #
747 -srcdir { 803 -srcdir {
748 incr i 804 incr i
749 set ::SRCDIR [file normalize [lindex $argv $i]] 805 set ::SRCDIR [file normalize [lindex $argv $i]]
750 } 806 }
751 807
752 -platform { 808 -platform {
753 incr i 809 incr i
754 set platform [lindex $argv $i] 810 set platform [lindex $argv $i]
755 } 811 }
756 812
(...skipping 23 matching lines...) Expand all
780 } 836 }
781 837
782 -buildonly { 838 -buildonly {
783 set ::BUILDONLY 1 839 set ::BUILDONLY 1
784 } 840 }
785 841
786 -dryrun { 842 -dryrun {
787 set ::DRYRUN 1 843 set ::DRYRUN 1
788 } 844 }
789 845
846 -force -
847 -f {
848 set ::FORCE 1
849 }
850
790 -trace { 851 -trace {
791 set ::TRACE 1 852 set ::TRACE 1
792 } 853 }
793 854
794 -info { 855 -info {
795 PUTS "Command-line Options:" 856 PUTS "Command-line Options:"
796 PUTS " --srcdir $::SRCDIR" 857 PUTS " --srcdir $::SRCDIR"
797 PUTS " --platform [list $platform]" 858 PUTS " --platform [list $platform]"
798 PUTS " --config [list $config]" 859 PUTS " --config [list $config]"
799 if {$::QUICK} { 860 if {$::QUICK} {
(...skipping 12 matching lines...) Expand all
812 foreach y [lsort [array names ::Configs]] { 873 foreach y [lsort [array names ::Configs]] {
813 PUTS " [list $y]" 874 PUTS " [list $y]"
814 } 875 }
815 exit 876 exit
816 } 877 }
817 878
818 -g { 879 -g {
819 lappend ::EXTRACONFIG [lindex $argv $i] 880 lappend ::EXTRACONFIG [lindex $argv $i]
820 } 881 }
821 882
883 -keep {
884 set ::KEEPFILES 1
885 }
886
822 -with-tcl=* { 887 -with-tcl=* {
823 set ::WITHTCL -$x 888 set ::WITHTCL -$x
824 } 889 }
825 890
826 -D* - 891 -D* -
827 -O* - 892 -O* -
828 -enable-* - 893 -enable-* -
829 -disable-* - 894 -disable-* -
830 *=* { 895 *=* {
831 lappend ::EXTRACONFIG [lindex $argv $i] 896 lappend ::EXTRACONFIG [lindex $argv $i]
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 if {$::BUILDONLY} {PUTSNNL " --buildonly"} 938 if {$::BUILDONLY} {PUTSNNL " --buildonly"}
874 if {$::MSVC} {PUTSNNL " --msvc"} 939 if {$::MSVC} {PUTSNNL " --msvc"}
875 switch -- $::QUICK { 940 switch -- $::QUICK {
876 1 {PUTSNNL " --quick"} 941 1 {PUTSNNL " --quick"}
877 2 {PUTSNNL " --veryquick"} 942 2 {PUTSNNL " --veryquick"}
878 } 943 }
879 if {$::JOBS>1} {PUTSNNL " --jobs $::JOBS"} 944 if {$::JOBS>1} {PUTSNNL " --jobs $::JOBS"}
880 PUTS "" 945 PUTS ""
881 } 946 }
882 947
948 # Check to see if there are uncommitted changes in the SQLite source
949 # checkout. Exit if there are. Except: Do nothing if the --force
950 # flag is used. Also, ignore this test if the fossil binary is
951 # unavailable, or if the source tree is not a valid fossil checkout.
952 #
953 proc check_uncommitted {} {
954 if {$::FORCE} return
955 set pwd [pwd]
956 cd $::SRCDIR
957 if {[catch {exec fossil changes} res]==0 && [string trim $res]!=""} {
958 puts "ERROR: The check-out contains uncommitted changes:"
959 puts $res
960 puts "Use the -f or --force options to override"
961 exit 1
962 }
963 cd $pwd
964 }
965
966 # A test run has just finished in directory $dir. This command deletes all
967 # non-essential files from the directory. Specifically, everything except
968 #
969 # * The "testfixture" and "sqlite3" binaries,
970 # * The "test-out.log" and "test.log" log files.
971 #
972 proc cleanup {dir} {
973 set K(testfixture) 1
974 set K(testfixture.exe) 1
975 set K(sqlite3) 1
976 set K(sqlite3.exe) 1
977 set K(test-out.txt) 1
978 set K(test.log) 1
979
980 foreach f [glob -nocomplain [file join $dir *]] {
981 set tail [file tail $f]
982 if {[info exists K($tail)]==0} {
983 file delete -force $f
984 }
985 }
986 }
987
988
883 # Main routine. 989 # Main routine.
884 # 990 #
885 proc main {argv} { 991 proc main {argv} {
886 992
887 # Process any command line options. 993 # Process any command line options.
888 set ::EXTRACONFIG {} 994 set ::EXTRACONFIG {}
889 process_options $argv 995 process_options $argv
996 if {!$::DRYRUN} check_uncommitted
890 PUTS [string repeat * 79] 997 PUTS [string repeat * 79]
891 998
892 set ::NERR 0 999 set ::NERR 0
893 set ::NTEST 0 1000 set ::NTEST 0
894 set ::NTESTCASE 0 1001 set ::NTESTCASE 0
895 set ::NERRCASE 0 1002 set ::NERRCASE 0
896 set ::SQLITE_VERSION {} 1003 set ::SQLITE_VERSION {}
897 set STARTTIME [clock seconds] 1004 set STARTTIME [clock seconds]
898 foreach {zConfig target} $::CONFIGLIST { 1005 foreach {zConfig target} $::CONFIGLIST {
899 if {$::MSVC && ($zConfig eq "Sanitize" || "checksymbols" in $target 1006 if {$::MSVC && ($zConfig eq "Sanitize" || "checksymbols" in $target
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 if {[catch {exec hostname} HNAME]==0} {append etime " on $HNAME"} 1058 if {[catch {exec hostname} HNAME]==0} {append etime " on $HNAME"}
952 PUTS [string repeat * 79] 1059 PUTS [string repeat * 79]
953 incr ::NERRCASE $::NERR 1060 incr ::NERRCASE $::NERR
954 PUTS "$::NERRCASE failures out of $::NTESTCASE tests in $etime" 1061 PUTS "$::NERRCASE failures out of $::NTESTCASE tests in $etime"
955 if {$::SQLITE_VERSION ne ""} { 1062 if {$::SQLITE_VERSION ne ""} {
956 PUTS "SQLite $::SQLITE_VERSION" 1063 PUTS "SQLite $::SQLITE_VERSION"
957 } 1064 }
958 } 1065 }
959 1066
960 main $argv 1067 main $argv
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/regexp2.test ('k') | third_party/sqlite/src/test/rollback2.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698