Index: third_party/sqlite/src/tool/omittest.tcl |
diff --git a/third_party/sqlite/src/tool/omittest.tcl b/third_party/sqlite/src/tool/omittest.tcl |
index ec1508c23910e823b1f91dc6cc55c96a49d3692e..f1963ff13dd005c80f6cfc6a88adc1deb0479701 100644 |
--- a/third_party/sqlite/src/tool/omittest.tcl |
+++ b/third_party/sqlite/src/tool/omittest.tcl |
@@ -8,10 +8,12 @@ This Tcl script is used to test the various compile time options |
available for omitting code (the SQLITE_OMIT_xxx options). It |
should be invoked as follows: |
- <script> ?-makefile PATH-TO-MAKEFILE? |
+ <script> ?test-symbol? ?-makefile PATH-TO-MAKEFILE? ?-skip_run? |
The default value for ::MAKEFILE is "../Makefile.linux.gcc". |
+If -skip_run option is given then only the compile part is attempted. |
+ |
This script builds the testfixture program and runs the SQLite test suite |
once with each SQLITE_OMIT_ option defined and then once with all options |
defined together. Each run is performed in a seperate directory created |
@@ -46,10 +48,12 @@ they do not respect the OPTS variable. |
# |
# |
proc run_quick_test {dir omit_symbol_list} { |
+ set target "testfixture" |
# Compile the value of the OPTS Makefile variable. |
set opts "-DSQLITE_MEMDEBUG -DSQLITE_DEBUG -DSQLITE_NO_SYNC" |
if {$::tcl_platform(platform)=="windows"} { |
append opts " -DSQLITE_OS_WIN=1" |
+ set target "testfixture.exe" |
} elseif {$::tcl_platform(platform)=="os2"} { |
append opts " -DSQLITE_OS_OS2=1" |
} else { |
@@ -69,7 +73,7 @@ catch { |
file copy -force ./libtool $dir |
} |
set rc [catch { |
- exec make -C $dir -f $::MAKEFILE testfixture OPTS=$opts >& $dir/build.log |
+ exec make -C $dir -f $::MAKEFILE $target OPTS=$opts >& $dir/build.log |
}] |
if {$rc} { |
puts "No good. See $dir/build.log." |
@@ -91,16 +95,20 @@ catch { |
close $wr |
} |
- # Run the test suite. |
- puts -nonewline "Testing $dir..." |
- flush stdout |
- set rc [catch { |
- exec make -C $dir -f $::MAKEFILE test OPTS=$opts >& $dir/test.log |
- }] |
- if {$rc} { |
- puts "No good. See $dir/test.log." |
+ if {$::SKIP_RUN} { |
+ puts "Skip testing $dir." |
} else { |
- puts "Ok" |
+ # Run the test suite. |
+ puts -nonewline "Testing $dir..." |
+ flush stdout |
+ set rc [catch { |
+ exec make -C $dir -f $::MAKEFILE test OPTS=$opts >& $dir/test.log |
+ }] |
+ if {$rc} { |
+ puts "No good. See $dir/test.log." |
+ } else { |
+ puts "Ok" |
+ } |
} |
} |
@@ -112,10 +120,12 @@ catch { |
# |
proc process_options {argv} { |
if {$::tcl_platform(platform)=="windows" || $::tcl_platform(platform)=="os2"} { |
- set ::MAKEFILE ../Makefile ;# Default value |
+ set ::MAKEFILE ./Makefile ;# Default value |
} else { |
- set ::MAKEFILE ../Makefile.linux-gcc ;# Default value |
+ set ::MAKEFILE ./Makefile.linux-gcc ;# Default value |
} |
+ set ::SKIP_RUN 0 ;# Default to attempt test |
+ |
for {set i 0} {$i < [llength $argv]} {incr i} { |
switch -- [lindex $argv $i] { |
-makefile { |
@@ -123,9 +133,16 @@ proc process_options {argv} { |
set ::MAKEFILE [lindex $argv $i] |
} |
+ -skip_run { |
+ set ::SKIP_RUN 1 |
+ } |
+ |
default { |
- puts stderr [string trim $::USAGE_MESSAGE] |
- exit -1 |
+ if {[info exists ::SYMBOL]} { |
+ puts stderr [string trim $::USAGE_MESSAGE] |
+ exit -1 |
+ } |
+ set ::SYMBOL [lindex $argv $i] |
} |
} |
set ::MAKEFILE [file normalize $::MAKEFILE] |
@@ -137,79 +154,132 @@ proc process_options {argv} { |
proc main {argv} { |
# List of SQLITE_OMIT_XXX symbols supported by SQLite. |
- set ::SYMBOLS [list \ |
- SQLITE_OMIT_ALTERTABLE \ |
- SQLITE_OMIT_ANALYZE \ |
- SQLITE_OMIT_ATTACH \ |
- SQLITE_OMIT_AUTHORIZATION \ |
- SQLITE_OMIT_AUTOINCREMENT \ |
- SQLITE_OMIT_AUTOINIT \ |
- SQLITE_OMIT_AUTOVACUUM \ |
- SQLITE_OMIT_BETWEEN_OPTIMIZATION \ |
- SQLITE_OMIT_BLOB_LITERAL \ |
- SQLITE_OMIT_BUILTIN_TEST \ |
- SQLITE_OMIT_CAST \ |
- SQLITE_OMIT_CHECK \ |
- SQLITE_OMIT_COMPLETE \ |
- SQLITE_OMIT_COMPOUND_SELECT \ |
- SQLITE_OMIT_CONFLICT_CLAUSE \ |
- SQLITE_OMIT_DATETIME_FUNCS \ |
- SQLITE_OMIT_DECLTYPE \ |
- off_SQLITE_OMIT_DISKIO \ |
- SQLITE_OMIT_EXPLAIN \ |
- SQLITE_OMIT_FLAG_PRAGMAS \ |
- SQLITE_OMIT_FLOATING_POINT \ |
- SQLITE_OMIT_FOREIGN_KEY \ |
- SQLITE_OMIT_GET_TABLE \ |
- SQLITE_OMIT_GLOBALRECOVER \ |
- SQLITE_OMIT_INCRBLOB \ |
- SQLITE_OMIT_INTEGRITY_CHECK \ |
- SQLITE_OMIT_LIKE_OPTIMIZATION \ |
- SQLITE_OMIT_LOAD_EXTENSION \ |
- SQLITE_OMIT_LOCALTIME \ |
- SQLITE_OMIT_MEMORYDB \ |
- SQLITE_OMIT_OR_OPTIMIZATION \ |
- SQLITE_OMIT_PAGER_PRAGMAS \ |
- SQLITE_OMIT_PRAGMA \ |
- SQLITE_OMIT_PROGRESS_CALLBACK \ |
- SQLITE_OMIT_QUICKBALANCE \ |
- SQLITE_OMIT_REINDEX \ |
- SQLITE_OMIT_SCHEMA_PRAGMAS \ |
+ set ::OMIT_SYMBOLS [list \ |
+ SQLITE_OMIT_ALTERTABLE \ |
+ SQLITE_OMIT_ANALYZE \ |
+ SQLITE_OMIT_ATTACH \ |
+ SQLITE_OMIT_AUTHORIZATION \ |
+ SQLITE_OMIT_AUTOINCREMENT \ |
+ SQLITE_OMIT_AUTOINIT \ |
+ SQLITE_OMIT_AUTOMATIC_INDEX \ |
+ SQLITE_OMIT_AUTORESET \ |
+ SQLITE_OMIT_AUTOVACUUM \ |
+ SQLITE_OMIT_BETWEEN_OPTIMIZATION \ |
+ SQLITE_OMIT_BLOB_LITERAL \ |
+ SQLITE_OMIT_BTREECOUNT \ |
+ SQLITE_OMIT_BUILTIN_TEST \ |
+ SQLITE_OMIT_CAST \ |
+ SQLITE_OMIT_CHECK \ |
+ SQLITE_OMIT_COMPILEOPTION_DIAGS \ |
+ SQLITE_OMIT_COMPLETE \ |
+ SQLITE_OMIT_COMPOUND_SELECT \ |
+ SQLITE_OMIT_DATETIME_FUNCS \ |
+ SQLITE_OMIT_DECLTYPE \ |
+ SQLITE_OMIT_DEPRECATED \ |
+ xxxSQLITE_OMIT_DISKIO \ |
+ SQLITE_OMIT_EXPLAIN \ |
+ SQLITE_OMIT_FLAG_PRAGMAS \ |
+ SQLITE_OMIT_FLOATING_POINT \ |
+ SQLITE_OMIT_FOREIGN_KEY \ |
+ SQLITE_OMIT_GET_TABLE \ |
+ SQLITE_OMIT_INCRBLOB \ |
+ SQLITE_OMIT_INTEGRITY_CHECK \ |
+ SQLITE_OMIT_LIKE_OPTIMIZATION \ |
+ SQLITE_OMIT_LOAD_EXTENSION \ |
+ SQLITE_OMIT_LOCALTIME \ |
+ SQLITE_OMIT_LOOKASIDE \ |
+ SQLITE_OMIT_MEMORYDB \ |
+ SQLITE_OMIT_OR_OPTIMIZATION \ |
+ SQLITE_OMIT_PAGER_PRAGMAS \ |
+ SQLITE_OMIT_PRAGMA \ |
+ SQLITE_OMIT_PROGRESS_CALLBACK \ |
+ SQLITE_OMIT_QUICKBALANCE \ |
+ SQLITE_OMIT_REINDEX \ |
+ SQLITE_OMIT_SCHEMA_PRAGMAS \ |
SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS \ |
- SQLITE_OMIT_SHARED_CACHE \ |
- SQLITE_OMIT_SUBQUERY \ |
- SQLITE_OMIT_TCL_VARIABLE \ |
- SQLITE_OMIT_TEMPDB \ |
- SQLITE_OMIT_TRACE \ |
- SQLITE_OMIT_TRIGGER \ |
- SQLITE_OMIT_UTF16 \ |
- SQLITE_OMIT_VACUUM \ |
- SQLITE_OMIT_VIEW \ |
- SQLITE_OMIT_VIRTUALTABLE \ |
- SQLITE_OMIT_XFER_OPT \ |
+ SQLITE_OMIT_SHARED_CACHE \ |
+ SQLITE_OMIT_SUBQUERY \ |
+ SQLITE_OMIT_TCL_VARIABLE \ |
+ SQLITE_OMIT_TEMPDB \ |
+ SQLITE_OMIT_TRACE \ |
+ SQLITE_OMIT_TRIGGER \ |
+ SQLITE_OMIT_TRUNCATE_OPTIMIZATION \ |
+ SQLITE_OMIT_UNIQUE_ENFORCEMENT \ |
+ SQLITE_OMIT_UTF16 \ |
+ SQLITE_OMIT_VACUUM \ |
+ SQLITE_OMIT_VIEW \ |
+ SQLITE_OMIT_VIRTUALTABLE \ |
+ SQLITE_OMIT_WAL \ |
+ SQLITE_OMIT_WSD \ |
+ SQLITE_OMIT_XFER_OPT \ |
+ ] |
+ |
+ set ::ENABLE_SYMBOLS [list \ |
+ SQLITE_DISABLE_DIRSYNC \ |
+ SQLITE_DISABLE_LFS \ |
+ SQLITE_ENABLE_ATOMIC_WRITE \ |
+ xxxSQLITE_ENABLE_CEROD \ |
+ SQLITE_ENABLE_COLUMN_METADATA \ |
+ SQLITE_ENABLE_EXPENSIVE_ASSERT \ |
+ xxxSQLITE_ENABLE_FTS1 \ |
+ xxxSQLITE_ENABLE_FTS2 \ |
+ SQLITE_ENABLE_FTS3 \ |
+ SQLITE_ENABLE_FTS3_PARENTHESIS \ |
+ SQLITE_ENABLE_FTS4 \ |
+ xxxSQLITE_ENABLE_ICU \ |
+ SQLITE_ENABLE_IOTRACE \ |
+ SQLITE_ENABLE_LOAD_EXTENSION \ |
+ SQLITE_ENABLE_LOCKING_STYLE \ |
+ SQLITE_ENABLE_MEMORY_MANAGEMENT \ |
+ SQLITE_ENABLE_MEMSYS3 \ |
+ SQLITE_ENABLE_MEMSYS5 \ |
+ SQLITE_ENABLE_OVERSIZE_CELL_CHECK \ |
+ SQLITE_ENABLE_RTREE \ |
+ SQLITE_ENABLE_STAT2 \ |
+ SQLITE_ENABLE_UNLOCK_NOTIFY \ |
+ SQLITE_ENABLE_UPDATE_DELETE_LIMIT \ |
] |
# Process any command line options. |
process_options $argv |
- |
- # First try a test with all OMIT symbols except SQLITE_OMIT_FLOATING_POINT |
- # and SQLITE_OMIT_PRAGMA defined. The former doesn't work (causes segfaults) |
- # and the latter is currently incompatible with the test suite (this should |
- # be fixed, but it will be a lot of work). |
- set allsyms [list] |
- foreach s $::SYMBOLS { |
- if {$s!="SQLITE_OMIT_FLOATING_POINT" && $s!="SQLITE_OMIT_PRAGMA"} { |
- lappend allsyms $s |
+ |
+ if {[info exists ::SYMBOL] } { |
+ set sym $::SYMBOL |
+ |
+ if {[lsearch $::OMIT_SYMBOLS $sym]<0 && [lsearch $::ENABLE_SYMBOLS $sym]<0} { |
+ puts stderr "No such symbol: $sym" |
+ exit -1 |
} |
- } |
- run_quick_test test_OMIT_EVERYTHING $allsyms |
- # Now try one quick.test with each of the OMIT symbols defined. Included |
- # are the OMIT_FLOATING_POINT and OMIT_PRAGMA symbols, even though we |
- # know they will fail. It's good to be reminded of this from time to time. |
- foreach sym $::SYMBOLS { |
set dirname "test_[string range $sym 7 end]" |
run_quick_test $dirname $sym |
+ } else { |
+ # First try a test with all OMIT symbols except SQLITE_OMIT_FLOATING_POINT |
+ # and SQLITE_OMIT_PRAGMA defined. The former doesn't work (causes segfaults) |
+ # and the latter is currently incompatible with the test suite (this should |
+ # be fixed, but it will be a lot of work). |
+ set allsyms [list] |
+ foreach s $::OMIT_SYMBOLS { |
+ if {$s!="SQLITE_OMIT_FLOATING_POINT" && $s!="SQLITE_OMIT_PRAGMA"} { |
+ lappend allsyms $s |
+ } |
+ } |
+ run_quick_test test_OMIT_EVERYTHING $allsyms |
+ |
+ # Now try one quick.test with each of the OMIT symbols defined. Included |
+ # are the OMIT_FLOATING_POINT and OMIT_PRAGMA symbols, even though we |
+ # know they will fail. It's good to be reminded of this from time to time. |
+ foreach sym $::OMIT_SYMBOLS { |
+ set dirname "test_[string range $sym 7 end]" |
+ run_quick_test $dirname $sym |
+ } |
+ |
+ # Try the ENABLE/DISABLE symbols one at a time. |
+ # We don't do them all at once since some are conflicting. |
+ foreach sym $::ENABLE_SYMBOLS { |
+ set dirname "test_[string range $sym 7 end]" |
+ run_quick_test $dirname $sym |
+ } |
} |
} |