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

Unified 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/sqlite/src/test/releasetest.tcl
diff --git a/third_party/sqlite/src/test/releasetest.tcl b/third_party/sqlite/src/test/releasetest.tcl
old mode 100644
new mode 100755
index bb902eec3eac98c8b97c6e824af2c65934802136..99823e3b1c3f458e14f1c5c6704ee1ac6c99ec9d
--- a/third_party/sqlite/src/test/releasetest.tcl
+++ b/third_party/sqlite/src/test/releasetest.tcl
@@ -9,21 +9,19 @@ This Tcl script is used to test the various configurations required
before releasing a new version. Supported command line options (all
optional) are:
- --srcdir TOP-OF-SQLITE-TREE (see below)
- --platform PLATFORM (see below)
- --config CONFIGNAME (Run only CONFIGNAME)
- --quick (Run "veryquick.test" only)
- --veryquick (Run "make smoketest" only)
- --msvc (Use MSVC as the compiler)
--buildonly (Just build testfixture - do not run)
+ --config CONFIGNAME (Run only CONFIGNAME)
--dryrun (Print what would have happened)
+ -f|--force (Run even if uncommitted changes)
--info (Show diagnostic info)
- --with-tcl=DIR (Use TCL build at DIR)
--jobs N (Use N processes - default 1)
+ --keep (Delete no files after each test run)
+ --msvc (Use MSVC as the compiler)
+ --platform PLATFORM (see below)
--progress (Show progress messages)
-
-The default value for --srcdir is the parent of the directory holding
-this script.
+ --quick (Run "veryquick.test" only)
+ --veryquick (Run "make smoketest" only)
+ --with-tcl=DIR (Use TCL build at DIR)
The script determines the default value for --platform using the
$tcl_platform(os) and $tcl_platform(machine) variables. Supported
@@ -51,10 +49,16 @@ array set ::Configs [strip_comments {
"Default" {
-O2
--disable-amalgamation --disable-shared
+ --enable-session
}
"Sanitize" {
CC=clang -fsanitize=undefined
-DSQLITE_ENABLE_STAT4
+ --enable-session
+ }
+ "Stdcall" {
+ -DUSE_STDCALL=1
+ -O2
}
"Have-Not" {
# The "Have-Not" configuration sets all possible -UHAVE_feature options
@@ -106,7 +110,7 @@ array set ::Configs [strip_comments {
-DSQLITE_ENABLE_OVERSIZE_CELL_CHECK=1
-DSQLITE_ENABLE_STAT4
-DSQLITE_ENABLE_STMT_SCANSTATUS
- --enable-json1 --enable-fts5
+ --enable-json1 --enable-fts5 --enable-session
}
"Debug-One" {
--disable-shared
@@ -118,7 +122,6 @@ array set ::Configs [strip_comments {
-DSQLITE_ENABLE_FTS3=1
-DSQLITE_ENABLE_RTREE=1
-DSQLITE_ENABLE_MEMSYS5=1
- -DSQLITE_ENABLE_MEMSYS3=1
-DSQLITE_ENABLE_COLUMN_METADATA=1
-DSQLITE_ENABLE_STAT4
-DSQLITE_ENABLE_HIDDEN_COLUMNS
@@ -132,6 +135,7 @@ array set ::Configs [strip_comments {
-DSQLITE_ENABLE_RBU
-DSQLITE_MAX_ATTACHED=125
-DLONGDOUBLE_TYPE=double
+ --enable-session
}
"Device-One" {
-O2
@@ -168,30 +172,53 @@ array set ::Configs [strip_comments {
-DSQLITE_OMIT_TRACE=1
-DSQLITE_TEMP_STORE=3
-DSQLITE_THREADSAFE=2
- --enable-json1 --enable-fts5
+ --enable-json1 --enable-fts5 --enable-session
}
"Locking-Style" {
-O2
-DSQLITE_ENABLE_LOCKING_STYLE=1
}
- "OS-X" {
+ "Apple" {
-O1 # Avoid a compiler bug in gcc 4.2.1 build 5658
- -DSQLITE_OMIT_LOAD_EXTENSION=1
- -DSQLITE_DEFAULT_MEMSTATUS=0
- -DSQLITE_THREADSAFE=2
- -DSQLITE_OS_UNIX=1
- -DSQLITE_ENABLE_JSON1=1
- -DSQLITE_ENABLE_LOCKING_STYLE=1
- -DUSE_PREAD=1
- -DSQLITE_ENABLE_RTREE=1
+ -DHAVE_GMTIME_R=1
+ -DHAVE_ISNAN=1
+ -DHAVE_LOCALTIME_R=1
+ -DHAVE_PREAD=1
+ -DHAVE_PWRITE=1
+ -DHAVE_USLEEP=1
+ -DHAVE_USLEEP=1
+ -DHAVE_UTIME=1
+ -DSQLITE_DEFAULT_CACHE_SIZE=1000
+ -DSQLITE_DEFAULT_CKPTFULLFSYNC=1
+ -DSQLITE_DEFAULT_MEMSTATUS=1
+ -DSQLITE_DEFAULT_PAGE_SIZE=1024
+ -DSQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS=1
+ -DSQLITE_ENABLE_API_ARMOR=1
+ -DSQLITE_ENABLE_AUTO_PROFILE=1
+ -DSQLITE_ENABLE_FLOCKTIMEOUT=1
-DSQLITE_ENABLE_FTS3=1
-DSQLITE_ENABLE_FTS3_PARENTHESIS=1
- -DSQLITE_DEFAULT_CACHE_SIZE=1000
+ -DSQLITE_ENABLE_FTS3_TOKENIZER=1
+ if:os=="Darwin" -DSQLITE_ENABLE_LOCKING_STYLE=1
+ -DSQLITE_ENABLE_PERSIST_WAL=1
+ -DSQLITE_ENABLE_PURGEABLE_PCACHE=1
+ -DSQLITE_ENABLE_RTREE=1
+ -DSQLITE_ENABLE_SNAPSHOT=1
+ # -DSQLITE_ENABLE_SQLLOG=1
+ -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1
-DSQLITE_MAX_LENGTH=2147483645
-DSQLITE_MAX_VARIABLE_NUMBER=500000
- -DSQLITE_DEBUG=1
+ # -DSQLITE_MEMDEBUG=1
+ -DSQLITE_NO_SYNC=1
+ -DSQLITE_OMIT_AUTORESET=1
+ -DSQLITE_OMIT_LOAD_EXTENSION=1
-DSQLITE_PREFER_PROXY_LOCKING=1
- -DSQLITE_ENABLE_API_ARMOR=1
+ -DSQLITE_SERIES_CONSTRAINT_VERIFY=1
+ -DSQLITE_THREADSAFE=2
+ -DSQLITE_USE_URI=1
+ -DSQLITE_WRITE_WALFRAME_PREBUFFERED=1
+ -DUSE_GUARDED_FD=1
+ -DUSE_PREAD=1
--enable-json1 --enable-fts5
}
"Extra-Robustness" {
@@ -203,6 +230,7 @@ array set ::Configs [strip_comments {
-DSQLITE_MAX_ATTACHED=30
-DSQLITE_ENABLE_COLUMN_METADATA
-DSQLITE_ENABLE_FTS4
+ -DSQLITE_ENABLE_FTS5
-DSQLITE_ENABLE_FTS4_PARENTHESIS
-DSQLITE_DISABLE_FTS4_DEFERRED
-DSQLITE_ENABLE_RTREE
@@ -247,6 +275,7 @@ array set ::Platforms [strip_comments {
"Device-Two" test
"No-lookaside" test
"Devkit" test
+ "Apple" test
"Sanitize" {QUICKTEST_OMIT=func4.test,nan.test test}
"Device-One" fulltest
"Default" "threadtest fulltest"
@@ -263,18 +292,20 @@ array set ::Platforms [strip_comments {
Darwin-i386 {
"Locking-Style" "mptest test"
"Have-Not" test
- "OS-X" "threadtest fulltest"
+ "Apple" "threadtest fulltest"
}
Darwin-x86_64 {
"Locking-Style" "mptest test"
"Have-Not" test
- "OS-X" "threadtest fulltest"
+ "Apple" "threadtest fulltest"
}
"Windows NT-intel" {
+ "Stdcall" test
"Have-Not" test
"Default" "mptest fulltestonly"
}
"Windows NT-amd64" {
+ "Stdcall" test
"Have-Not" test
"Default" "mptest fulltestonly"
}
@@ -437,14 +468,15 @@ proc count_tests_and_errors {logfile rcVar errmsgVar} {
proc run_slave_test {} {
# Read global vars configuration from stdin.
set V [gets stdin]
- foreach {::TRACE ::MSVC ::DRYRUN} $V {}
+ foreach {::TRACE ::MSVC ::DRYRUN ::KEEPFILES} $V {}
# Read the test-suite configuration from stdin.
set T [gets stdin]
foreach {title dir configOpts testtarget makeOpts cflags opts} $T {}
# Create and switch to the test directory.
- set ::env(SQLITE_TMPDIR) [file normalize $dir]
+ set normaldir [file normalize $dir]
+ set ::env(SQLITE_TMPDIR) $normaldir
trace_cmd file mkdir $dir
trace_cmd cd $dir
catch {file delete core}
@@ -468,6 +500,9 @@ proc run_slave_test {} {
}
}
+ # Clean up lots of extra files if --keep was not specified.
+ if {$::KEEPFILES==0} { cleanup $normaldir }
+
# Exis successfully if the test passed, or with a non-zero error code
# otherwise.
exit $rc
@@ -567,7 +602,7 @@ proc run_all_test_suites {alltests} {
set fd [open "|[info nameofexecutable] $script --slave" r+]
fconfigure $fd -blocking 0
fileevent $fd readable [list slave_fileevent $fd $T $tm1]
- puts $fd [list $::TRACE $::MSVC $::DRYRUN]
+ puts $fd [list $::TRACE $::MSVC $::DRYRUN $::KEEPFILES]
puts $fd [list {*}$T]
flush $fd
}
@@ -587,13 +622,23 @@ proc add_test_suite {listvar name testtarget config} {
set opts ""
set title ${name}($testtarget)
set configOpts $::WITHTCL
+ set skip 0
regsub -all {#[^\n]*\n} $config \n config
foreach arg $config {
+ if {$skip} {
+ set skip 0
+ continue
+ }
if {[regexp {^-[UD]} $arg]} {
lappend opts $arg
} elseif {[regexp {^[A-Z]+=} $arg]} {
lappend testtarget $arg
+ } elseif {[regexp {^if:([a-z]+)(.*)} $arg all key tail]} {
+ # Arguments of the form 'if:os=="Linux"' will cause the subsequent
+ # argument to be skipped if the $tcl_platform(os) is not "Linux", for
+ # example...
+ set skip [expr !(\$::tcl_platform($key)$tail)]
} elseif {[regexp {^--(enable|disable)-} $arg]} {
if {$::MSVC} {
if {$arg eq "--disable-amalgamation"} {
@@ -688,6 +733,9 @@ proc makeCommand { targets makeOpts cflags opts } {
set nmakeDir [file nativename $::SRCDIR]
set nmakeFile [file nativename [file join $nmakeDir Makefile.msc]]
lappend result nmake /f $nmakeFile TOP=$nmakeDir
+ if {[regexp {USE_STDCALL=1} $cflags]} {
+ lappend result USE_STDCALL=1
+ }
} else {
lappend result make
}
@@ -732,6 +780,8 @@ proc process_options {argv} {
set ::JOBS 1
set ::PROGRESS_MSGS 0
set ::WITHTCL {}
+ set ::FORCE 0
+ set ::KEEPFILES 0 ;# Keep extra files after test run
set config {}
set platform $::tcl_platform(os)-$::tcl_platform(machine)
@@ -744,6 +794,12 @@ proc process_options {argv} {
exit
}
+ # Undocumented legacy option: --srcdir DIRECTORY
+ #
+ # DIRECTORY is the root of the SQLite checkout. This sets the
+ # SRCDIR global variable. But that variable is already set
+ # automatically so there really is no reason to have this option.
+ #
-srcdir {
incr i
set ::SRCDIR [file normalize [lindex $argv $i]]
@@ -787,6 +843,11 @@ proc process_options {argv} {
set ::DRYRUN 1
}
+ -force -
+ -f {
+ set ::FORCE 1
+ }
+
-trace {
set ::TRACE 1
}
@@ -819,6 +880,10 @@ proc process_options {argv} {
lappend ::EXTRACONFIG [lindex $argv $i]
}
+ -keep {
+ set ::KEEPFILES 1
+ }
+
-with-tcl=* {
set ::WITHTCL -$x
}
@@ -880,6 +945,47 @@ proc process_options {argv} {
PUTS ""
}
+# Check to see if there are uncommitted changes in the SQLite source
+# checkout. Exit if there are. Except: Do nothing if the --force
+# flag is used. Also, ignore this test if the fossil binary is
+# unavailable, or if the source tree is not a valid fossil checkout.
+#
+proc check_uncommitted {} {
+ if {$::FORCE} return
+ set pwd [pwd]
+ cd $::SRCDIR
+ if {[catch {exec fossil changes} res]==0 && [string trim $res]!=""} {
+ puts "ERROR: The check-out contains uncommitted changes:"
+ puts $res
+ puts "Use the -f or --force options to override"
+ exit 1
+ }
+ cd $pwd
+}
+
+# A test run has just finished in directory $dir. This command deletes all
+# non-essential files from the directory. Specifically, everything except
+#
+# * The "testfixture" and "sqlite3" binaries,
+# * The "test-out.log" and "test.log" log files.
+#
+proc cleanup {dir} {
+ set K(testfixture) 1
+ set K(testfixture.exe) 1
+ set K(sqlite3) 1
+ set K(sqlite3.exe) 1
+ set K(test-out.txt) 1
+ set K(test.log) 1
+
+ foreach f [glob -nocomplain [file join $dir *]] {
+ set tail [file tail $f]
+ if {[info exists K($tail)]==0} {
+ file delete -force $f
+ }
+ }
+}
+
+
# Main routine.
#
proc main {argv} {
@@ -887,6 +993,7 @@ proc main {argv} {
# Process any command line options.
set ::EXTRACONFIG {}
process_options $argv
+ if {!$::DRYRUN} check_uncommitted
PUTS [string repeat * 79]
set ::NERR 0
« 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