11077e3f7Sdanielk1977# 2008 June 21 21077e3f7Sdanielk1977# 31077e3f7Sdanielk1977# The author disclaims copyright to this source code. In place of 41077e3f7Sdanielk1977# a legal notice, here is a blessing: 51077e3f7Sdanielk1977# 61077e3f7Sdanielk1977# May you do good and not evil. 71077e3f7Sdanielk1977# May you find forgiveness for yourself and forgive others. 81077e3f7Sdanielk1977# May you share freely, never taking more than you give. 91077e3f7Sdanielk1977# 101077e3f7Sdanielk1977#*********************************************************************** 111077e3f7Sdanielk1977# 121077e3f7Sdanielk1977 131077e3f7Sdanielk1977set testdir [file dirname $argv0] 141077e3f7Sdanielk1977source $testdir/tester.tcl 1513a3cb82Sdandb close 161077e3f7Sdanielk1977 170626dfc3Sdan#------------------------------------------------------------------------- 180626dfc3Sdan# test_suite NAME OPTIONS 191077e3f7Sdanielk1977# 201077e3f7Sdanielk1977# where available options are: 211077e3f7Sdanielk1977# 22430e74cdSdan# -description TITLE (default "") 231077e3f7Sdanielk1977# -initialize SCRIPT (default "") 241077e3f7Sdanielk1977# -shutdown SCRIPT (default "") 251077e3f7Sdanielk1977# -presql SQL (default "") 260626dfc3Sdan# -files LIST-OF-FILES (default $::ALLTESTS) 272fce9ab3Sdan# -prefix NAME (default "$::NAME.") 281ce1b4a7Sdan# -dbconfig SCRIPT (default "") 290626dfc3Sdan# 300626dfc3Sdanproc test_suite {name args} { 31430e74cdSdan 32430e74cdSdan set default(-shutdown) "" 33430e74cdSdan set default(-initialize) "" 34430e74cdSdan set default(-presql) "" 35430e74cdSdan set default(-description) "no description supplied (fixme)" 360626dfc3Sdan set default(-files) "" 372fce9ab3Sdan set default(-prefix) "${name}." 381ce1b4a7Sdan set default(-dbconfig) "" 39430e74cdSdan 40430e74cdSdan array set options [array get default] 410626dfc3Sdan if {[llength $args]%2} { 420626dfc3Sdan error "uneven number of options/switches passed to test_suite" 43430e74cdSdan } 440626dfc3Sdan foreach {k v} $args { 450626dfc3Sdan set o [array names options ${k}*] 460626dfc3Sdan if {[llength $o]>1} { error "ambiguous option: $k" } 470626dfc3Sdan if {[llength $o]==0} { error "unknown option: $k" } 480626dfc3Sdan set options([lindex $o 0]) $v 490a846f96Sdrh } 501077e3f7Sdanielk1977 510626dfc3Sdan set ::testspec($name) [array get options] 520626dfc3Sdan lappend ::testsuitelist $name 53c1def3e0Sdanielk1977} 540626dfc3Sdan 550626dfc3Sdan#------------------------------------------------------------------------- 560626dfc3Sdan# test_set ARGS... 570626dfc3Sdan# 580626dfc3Sdanproc test_set {args} { 590626dfc3Sdan set isExclude 0 600626dfc3Sdan foreach a $args { 610626dfc3Sdan if {[string match -* $a]} { 620626dfc3Sdan switch -- $a { 630626dfc3Sdan -include { set isExclude 0 } 640626dfc3Sdan -exclude { set isExclude 1 } 650626dfc3Sdan default { 660626dfc3Sdan error "Unknown switch: $a" 670626dfc3Sdan } 680626dfc3Sdan } 690626dfc3Sdan } elseif {$isExclude == 0} { 700626dfc3Sdan foreach f $a { set t($f) 1 } 710a846f96Sdrh } else { 720626dfc3Sdan foreach f $a { array unset t $f } 73897230ebSdan foreach f $a { array unset t */$f } 741077e3f7Sdanielk1977 } 751077e3f7Sdanielk1977 } 761077e3f7Sdanielk1977 770626dfc3Sdan return [array names t] 781077e3f7Sdanielk1977} 791077e3f7Sdanielk1977 800626dfc3Sdan#------------------------------------------------------------------------- 810626dfc3Sdan# Set up the following global list variables containing the names of 820626dfc3Sdan# various test scripts: 830626dfc3Sdan# 840626dfc3Sdan# $alltests 852fce9ab3Sdan# $allquicktests 860626dfc3Sdan# 870626dfc3Sdanset alltests [list] 880626dfc3Sdanforeach f [glob $testdir/*.test] { lappend alltests [file tail $f] } 89e82126c9Sdanforeach f [glob -nocomplain \ 90e82126c9Sdan $testdir/../ext/rtree/*.test \ 91e82126c9Sdan $testdir/../ext/fts5/test/*.test \ 92cd84474eSdan $testdir/../ext/expert/*.test \ 934b8035e6Sdan $testdir/../ext/lsm1/test/*.test \ 94f2f8a3a3Sdan $testdir/../ext/recover/*.test \ 95e82126c9Sdan] { 96897230ebSdan lappend alltests $f 97897230ebSdan} 987cf7df7dSdanforeach f [glob -nocomplain $testdir/../ext/session/*.test] { 997cf7df7dSdan lappend alltests $f 1007cf7df7dSdan} 101897230ebSdan 1020626dfc3Sdanif {$::tcl_platform(platform)!="unix"} { 1030626dfc3Sdan set alltests [test_set $alltests -exclude crash.test crash2.test] 104c1def3e0Sdanielk1977} 1050626dfc3Sdanset alltests [test_set $alltests -exclude { 1060626dfc3Sdan all.test async.test quick.test veryquick.test 1070626dfc3Sdan memleak.test permutations.test soak.test fts3.test 108905da63aSdrh mallocAll.test rtree.test full.test extraquick.test 1091e8487dbSmistachkin session.test rbu.test 1100626dfc3Sdan}] 1110626dfc3Sdan 1120626dfc3Sdanset allquicktests [test_set $alltests -exclude { 1130626dfc3Sdan async2.test async3.test backup_ioerr.test corrupt.test 1140626dfc3Sdan corruptC.test crash.test crash2.test crash3.test crash4.test crash5.test 1150626dfc3Sdan crash6.test crash7.test delete3.test e_fts3.test fts3rnd.test 1160626dfc3Sdan fkey_malloc.test fuzz.test fuzz3.test fuzz_malloc.test in2.test loadext.test 117273f3f0dSdan misc7.test mutex2.test notify2.test onefile.test pagerfault2.test 1180626dfc3Sdan savepoint4.test savepoint6.test select9.test 1190626dfc3Sdan speed1.test speed1p.test speed2.test speed3.test speed4.test 1200626dfc3Sdan speed4p.test sqllimits1.test tkt2686.test thread001.test thread002.test 1210626dfc3Sdan thread003.test thread004.test thread005.test trans2.test vacuum3.test 1220626dfc3Sdan incrvacuum_ioerr.test autovacuum_crash.test btree8.test shared_err.test 123533100d3Sdan vtab_err.test walslow.test walcrash.test walcrash3.test 1242aba5d96Sdan walthread.test rtree3.test indexfault.test securedel2.test 125db2f9190Sdrh sort3.test sort4.test fts4growth.test fts4growth2.test 1268417863fSmistachkin bigsort.test walprotocol.test mmap4.test fuzzer2.test 127be7721d1Sdan walcrash2.test e_fkey.test backup.test 128be7721d1Sdan 129be7721d1Sdan fts4merge.test fts4merge2.test fts4merge4.test fts4check.test 13023d3f5d6Sdan fts4merge5.test 131be7721d1Sdan fts3cov.test fts3snippet.test fts3corrupt2.test fts3an.test 132be7721d1Sdan fts3defer.test fts4langid.test fts3sort.test fts5unicode.test 1338e62d370Sdan recovercorrupt.test 134be7721d1Sdan 135be7721d1Sdan rtree4.test 1364df68e0aSdan sessionbig.test 137cf2ad7aeSdan 138cf2ad7aeSdan writecrash.test view3.test 139cf2ad7aeSdan fts5dlidx.test fts5ac.test fts4merge3.test fts5prefix.test 140cf2ad7aeSdan sessionB.test 1410626dfc3Sdan}] 1426310990dSdanif {[info exists ::env(QUICKTEST_INCLUDE)]} { 1436310990dSdan set allquicktests [concat $allquicktests $::env(QUICKTEST_INCLUDE)] 1446310990dSdan} 1454081d5daSdrhif {[info exists ::env(QUICKTEST_OMIT)]} { 14696e337dfSdan # If environment variable QUICKTEST_OMIT is set, it is a comma-separated 14796e337dfSdan # list of regular expressions to match against test file names in 14896e337dfSdan # the "allquicktests" set. Any matches are excluded. Only the filename 14996e337dfSdan # is matched, not any directory component of the path. 15096e337dfSdan set all [list] 15196e337dfSdan foreach a $allquicktests { 15296e337dfSdan set bIn 1 1534081d5daSdrh foreach x [split $::env(QUICKTEST_OMIT) ,] { 15496e337dfSdan if {[regexp $x [file tail $a]]} { 15596e337dfSdan set bIn 0 15696e337dfSdan break 1574081d5daSdrh } 1584081d5daSdrh } 15996e337dfSdan if {$bIn} { 16096e337dfSdan lappend all $a 16196e337dfSdan } 16296e337dfSdan } 16396e337dfSdan set allquicktests $all 16496e337dfSdan} 165c1def3e0Sdanielk1977 166edb31cd1Sdrh# If the TEST_FAILURE environment variable is set, it means that we what to 167edb31cd1Sdrh# deliberately provoke test failures in order to test the test infrastructure. 168edb31cd1Sdrh# Only the main.test module is needed for this. 169edb31cd1Sdrh# 170edb31cd1Sdrhif {[info exists ::env(TEST_FAILURE)]} { 171edb31cd1Sdrh set allquicktests main.test 172edb31cd1Sdrh} 173d63bd759Sdrh 1741077e3f7Sdanielk1977############################################################################# 1751077e3f7Sdanielk1977# Start of tests 1760626dfc3Sdan# 1770626dfc3Sdan 1780626dfc3Sdan#------------------------------------------------------------------------- 1790626dfc3Sdan# Define the generic test suites: 1800626dfc3Sdan# 1810626dfc3Sdan# veryquick 1820626dfc3Sdan# quick 1830626dfc3Sdan# full 1840626dfc3Sdan# 185e91a54e1Sdanlappend ::testsuitelist xxx 1860626dfc3Sdan 1872fce9ab3Sdantest_suite "veryquick" -prefix "" -description { 188905da63aSdrh "Very" quick test suite. Runs in minutes on a workstation. 1890626dfc3Sdan This test suite is the same as the "quick" tests, except that some files 1900626dfc3Sdan that test malloc and IO errors are omitted. 1910626dfc3Sdan} -files [ 192e82126c9Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* *bigfile* *_err* \ 193b6e9f7a4Sdan *fts5corrupt* *fts5big* *fts5aj* 194905da63aSdrh] 195905da63aSdrh 1969776784fSdrhtest_suite "shell" -prefix "" -description { 1979776784fSdrh Run tests of the command-line shell 1989776784fSdrh} -files [ 1999776784fSdrh test_set [glob $testdir/shell*.test] 2009776784fSdrh] 2019776784fSdrh 202905da63aSdrhtest_suite "extraquick" -prefix "" -description { 203905da63aSdrh "Extra" quick test suite. Runs in a few minutes on a workstation. 204905da63aSdrh This test suite is the same as the "veryquick" tests, except that 205905da63aSdrh slower tests are omitted. 206905da63aSdrh} -files [ 207be7721d1Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* *bigfile* *_err* \ 208905da63aSdrh wal3.test fts4merge* sort2.test mmap1.test walcrash* \ 209905da63aSdrh percentile.test where8m.test walcksum.test savepoint3.test \ 210905da63aSdrh fuzzer1.test fuzzer3.test fts3expr3.test 2110626dfc3Sdan] 2120626dfc3Sdan 2139b4c59faSdrhtest_suite "mmap" -prefix "mm-" -description { 214e895b873Sdan Similar to veryquick. Except with memory mapping enabled. 2155d8a1372Sdan} -presql { 2169b4c59faSdrh pragma mmap_size = 268435456; 2175d8a1372Sdan} -files [ 21823f8a7cdSdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* -include malloc.test 2190626dfc3Sdan] 2200626dfc3Sdan 22125568441Sdantest_suite "valgrind" -prefix "" -description { 22225568441Sdan Run the "veryquick" test suite with a couple of multi-process tests (that 22325568441Sdan fail under valgrind) omitted. 22425568441Sdan} -files [ 225be7721d1Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* *_err* wal.test \ 226f015a3d1Slarrybr shell2.test shell6.test shell7.test \ 227f015a3d1Slarrybr crash8.test atof1.test selectG.test \ 228f2f72a0fSdan tkt-fc62af4523.test numindex1.test corruptK.test 22925568441Sdan] -initialize { 23025568441Sdan set ::G(valgrind) 1 23125568441Sdan} -shutdown { 23225568441Sdan unset -nocomplain ::G(valgrind) 23325568441Sdan} 23425568441Sdan 2355f43812aSdantest_suite "valgrind-nolookaside" -prefix "" -description { 2365f43812aSdan Run the "veryquick" test suite with a couple of multi-process tests (that 2375f43812aSdan fail under valgrind) omitted. 2385f43812aSdan} -files [ 239be7721d1Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* *_err* \ 240be7721d1Sdan wal.test atof1.test 2415f43812aSdan] -initialize { 2425f43812aSdan set ::G(valgrind) 1 2435f43812aSdan catch {db close} 2445f43812aSdan sqlite3_shutdown 2455f43812aSdan sqlite3_config_lookaside 0 0 2465f43812aSdan sqlite3_initialize 2475f43812aSdan autoinstall_test_functions 2485f43812aSdan} -shutdown { 2495f43812aSdan catch {db close} 2505f43812aSdan sqlite3_shutdown 2515f43812aSdan sqlite3_config_lookaside 100 500 2525f43812aSdan sqlite3_initialize 2535f43812aSdan autoinstall_test_functions 2545f43812aSdan unset -nocomplain ::G(valgrind) 2555f43812aSdan} 2565f43812aSdan 2575f43812aSdan 2582fce9ab3Sdantest_suite "quick" -prefix "" -description { 2590626dfc3Sdan Quick test suite. Runs in around 10 minutes on a workstation. 2600626dfc3Sdan} -files [ 2610626dfc3Sdan test_set $allquicktests 2620626dfc3Sdan] 2630626dfc3Sdan 2642fce9ab3Sdantest_suite "full" -prefix "" -description { 2650626dfc3Sdan Full test suite. Takes a long time. 2660626dfc3Sdan} -files [ 2670626dfc3Sdan test_set $alltests 2680626dfc3Sdan] -initialize { 2690626dfc3Sdan unset -nocomplain ::G(isquick) 2700626dfc3Sdan} 2710626dfc3Sdan 272ea5542d1Sdantest_suite "threads" -prefix "" -description { 273ea5542d1Sdan All multi-threaded tests. 274ea5542d1Sdan} -files { 275ea5542d1Sdan notify2.test thread001.test thread002.test thread003.test 276ea5542d1Sdan thread004.test thread005.test walthread.test 277ea5542d1Sdan} 278ea5542d1Sdan 279a69f7d5aSdantest_suite "fts3" -prefix "" -description { 280ddf80eb8Sdan All FTS3 tests except fts3rnd.test. 281a69f7d5aSdan} -files { 282119fc11eSdan fts3aa.test fts3ab.test fts3ac.test fts3ad.test 283119fc11eSdan fts3ae.test fts3af.test fts3ag.test fts3ah.test 284119fc11eSdan fts3ai.test fts3aj.test fts3ak.test fts3al.test 285119fc11eSdan fts3am.test fts3an.test fts3ao.test fts3atoken.test 286119fc11eSdan fts3auto.test fts3aux1.test fts3aux2.test fts3b.test 287119fc11eSdan fts3comp1.test fts3conf.test fts3corrupt2.test fts3corrupt.test 28829d77dc4Sdan fts3corrupt4.test 289119fc11eSdan fts3cov.test fts3c.test fts3defer2.test fts3defer3.test 290119fc11eSdan fts3defer.test fts3drop.test fts3d.test fts3e.test 291119fc11eSdan fts3expr2.test fts3expr3.test fts3expr4.test fts3expr5.test 292119fc11eSdan fts3expr.test fts3fault2.test fts3fault.test fts3first.test 293119fc11eSdan fts3join.test fts3malloc.test fts3matchinfo.test fts3near.test 294119fc11eSdan fts3offsets.test fts3prefix2.test fts3prefix.test fts3query.test 295119fc11eSdan fts3shared.test fts3snippet.test fts3sort.test fts3tok1.test 296119fc11eSdan fts3tok_err.test fts3varint.test fts4aa.test fts4check.test 297119fc11eSdan fts4content.test fts4docid.test fts4growth2.test fts4growth.test 298119fc11eSdan fts4incr.test fts4langid.test fts4lastrowid.test fts4merge2.test 299119fc11eSdan fts4merge4.test fts4merge.test fts4noti.test fts4onepass.test 300119fc11eSdan fts4opt.test fts4unicode.test 301ddf47470Sdan fts3corrupt3.test 302624edacfSdan fts3misc.test 303a69f7d5aSdan} 304a69f7d5aSdan 30522d43ec4Sdantest_suite "fts5" -prefix "" -description { 30622d43ec4Sdan All FTS5 tests. 307e716aca2Sdan} -files [glob -nocomplain $::testdir/../ext/fts5/test/*.test] 30822d43ec4Sdan 30923d53888Sdantest_suite "fts5-light" -prefix "" -description { 31023d53888Sdan All FTS5 tests. 31123d53888Sdan} -files [ 31223d53888Sdan test_set \ 31323d53888Sdan [glob -nocomplain $::testdir/../ext/fts5/test/*.test] \ 31423d53888Sdan -exclude *corrupt* *fault* *big* *fts5aj* 31523d53888Sdan] 31623d53888Sdan 3179a94722dSdantest_suite "window" -prefix "" -description { 3189a94722dSdan All window function related tests . 3199a94722dSdan} -files [ 3209a94722dSdan test_set [glob -nocomplain $::testdir/window*.test] 3219a94722dSdan] 3229a94722dSdan 32359541d70Smistachkintest_suite "lsm1" -prefix "" -description { 32459541d70Smistachkin All LSM1 tests. 32559541d70Smistachkin} -files [glob -nocomplain $::testdir/../ext/lsm1/test/*.test] 32659541d70Smistachkin 327a879342bSdantest_suite "nofaultsim" -prefix "" -description { 328a879342bSdan "Very" quick test suite. Runs in less than 5 minutes on a workstation. 329a879342bSdan This test suite is the same as the "quick" tests, except that some files 330a879342bSdan that test malloc and IO errors are omitted. 331a879342bSdan} -files [ 332be7721d1Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* *_err* 333a879342bSdan] -initialize { 334a879342bSdan catch {db close} 335a879342bSdan sqlite3_shutdown 336a879342bSdan install_malloc_faultsim 0 337a879342bSdan sqlite3_initialize 338a879342bSdan autoinstall_test_functions 339a879342bSdan} -shutdown { 340a879342bSdan unset -nocomplain ::G(valgrind) 341a879342bSdan} 342ea5542d1Sdan 343fd5874d2Sdrhtest_suite "queryplanner" -prefix "" -description { 344fd5874d2Sdrh Tests of the query planner and query optimizer 345fd5874d2Sdrh} -files { 346fd5874d2Sdrh alter2.test alter3.test alter4.test alter.test analyze3.test 347fd5874d2Sdrh analyze4.test analyze5.test analyze6.test analyze7.test analyze8.test 3484fe425adSdrh analyze.test attach2.test attach3.test attach4.test 349fd5874d2Sdrh attach.test autoinc.test autoindex1.test between.test cast.test 350fd5874d2Sdrh check.test closure01.test coalesce.test collate1.test collate2.test 351fd5874d2Sdrh collate3.test collate4.test collate5.test collate6.test collate7.test 352fd5874d2Sdrh collate8.test collate9.test collateA.test colmeta.test colname.test 353fd5874d2Sdrh conflict.test count.test coveridxscan.test createtab.test cse.test 354fd5874d2Sdrh date.test dbstatus2.test dbstatus.test default.test delete2.test 355fd5874d2Sdrh delete3.test delete.test descidx1.test descidx2.test descidx3.test 356fd5874d2Sdrh distinctagg.test distinct.test e_createtable.test e_delete.test 3574fe425adSdrh e_droptrigger.test e_dropview.test e_expr.test e_insert.test 358fd5874d2Sdrh eqp.test e_reindex.test e_resolve.test e_select2.test e_select.test 359fd5874d2Sdrh e_update.test exists.test expr.test fkey1.test fkey2.test fkey3.test 3604fe425adSdrh fkey4.test fkey5.test func2.test func3.test func.test 3614fe425adSdrh in3.test in4.test in5.test index2.test index3.test 3624fe425adSdrh index4.test index5.test indexedby.test index.test 363fd5874d2Sdrh insert2.test insert3.test insert4.test insert5.test insert.test 364fd5874d2Sdrh instr.test in.test intpkey.test join2.test join3.test join4.test 365fd5874d2Sdrh join5.test join6.test join.test like2.test like.test limit.test 366fd5874d2Sdrh minmax2.test minmax3.test minmax4.test minmax.test misc1.test misc2.test 367fd5874d2Sdrh misc3.test misc4.test misc5.test misc6.test misc7.test orderby1.test 368fd5874d2Sdrh orderby2.test orderby3.test orderby4.test randexpr1.test regexp1.test 369fd5874d2Sdrh reindex.test rowhash.test rowid.test schema2.test schema3.test 3704fe425adSdrh schema4.test schema5.test schema.test 371fd5874d2Sdrh select1.test select2.test select3.test select4.test select5.test 372fd5874d2Sdrh select6.test select7.test select8.test select9.test selectA.test 373fd5874d2Sdrh selectB.test selectC.test selectD.test selectE.test sidedelete.test 374fd5874d2Sdrh sort.test spellfix.test subquery2.test subquery.test subselect.test 375fd5874d2Sdrh substr.test tkt-02a8e81d44.test tkt1435.test tkt1443.test tkt1444.test 376fd5874d2Sdrh tkt1449.test tkt1473.test tkt1501.test tkt1512.test tkt1514.test 377fd5874d2Sdrh tkt1536.test tkt1537.test tkt1567.test tkt1644.test tkt1667.test 378fd5874d2Sdrh tkt1873.test tkt2141.test tkt2192.test tkt2213.test tkt2251.test 379fd5874d2Sdrh tkt2285.test tkt2332.test tkt2339.test tkt2391.test tkt2409.test 380fd5874d2Sdrh tkt2450.test tkt2565.test tkt2640.test tkt2643.test tkt2686.test 381fd5874d2Sdrh tkt-26ff0c2d1e.test tkt2767.test tkt2817.test tkt2820.test tkt2822.test 382fd5874d2Sdrh tkt2832.test tkt2854.test tkt2920.test tkt2927.test tkt2942.test 383fd5874d2Sdrh tkt-2a5629202f.test tkt-2d1a5c67d.test tkt-2ea2425d34.test tkt3080.test 384fd5874d2Sdrh tkt3093.test tkt3121.test tkt-31338dca7e.test tkt-313723c356.test 385fd5874d2Sdrh tkt3201.test tkt3292.test tkt3298.test tkt3334.test tkt3346.test 386fd5874d2Sdrh tkt3357.test tkt3419.test tkt3424.test tkt3442.test tkt3457.test 387fd5874d2Sdrh tkt3461.test tkt3493.test tkt3508.test tkt3522.test tkt3527.test 388fd5874d2Sdrh tkt3541.test tkt3554.test tkt3581.test tkt35xx.test tkt3630.test 389fd5874d2Sdrh tkt3718.test tkt3731.test tkt3757.test tkt3761.test tkt3762.test 390fd5874d2Sdrh tkt3773.test tkt3791.test tkt3793.test tkt3810.test tkt3824.test 391fd5874d2Sdrh tkt3832.test tkt3838.test tkt3841.test tkt-385a5b56b9.test tkt3871.test 392fd5874d2Sdrh tkt3879.test tkt-38cb5df375.test tkt3911.test tkt3918.test tkt3922.test 393fd5874d2Sdrh tkt3929.test tkt3935.test tkt3992.test tkt3997.test tkt-3998683a16.test 394fd5874d2Sdrh tkt-3a77c9714e.test tkt-3fe897352e.test tkt4018.test tkt-4a03edc4c8.test 395fd5874d2Sdrh tkt-4dd95f6943.test tkt-54844eea3f.test tkt-5d863f876e.test 396fd5874d2Sdrh tkt-5e10420e8d.test tkt-5ee23731f.test tkt-6bfb98dfc0.test 397fd5874d2Sdrh tkt-752e1646fc.test tkt-78e04e52ea.test tkt-7a31705a7e6.test 398fd5874d2Sdrh tkt-7bbfb7d442.test tkt-80ba201079.test tkt-80e031a00f.test 399fd5874d2Sdrh tkt-8454a207b9.test tkt-91e2e8ba6f.test tkt-94c04eaadb.test 400fd5874d2Sdrh tkt-9d68c883.test tkt-a7b7803e.test tkt-b1d3a2e531.test 401fd5874d2Sdrh tkt-b351d95f9.test tkt-b72787b1.test tkt-bd484a090c.test 402fd5874d2Sdrh tkt-bdc6bbbb38.test tkt-c48d99d690.test tkt-cbd054fa6b.test 403fd5874d2Sdrh tkt-d11f09d36e.test tkt-d635236375.test tkt-d82e3f3721.test 404fd5874d2Sdrh tkt-f3e5abed55.test tkt-f777251dc7a.test tkt-f7b4edec.test 405fd5874d2Sdrh tkt-f973c7ac31.test tkt-fa7bf5ec.test tkt-fc62af4523.test 406fd5874d2Sdrh tkt-fc7bd6358f.test trigger1.test trigger2.test trigger3.test 407fd5874d2Sdrh trigger4.test trigger5.test trigger6.test trigger7.test trigger8.test 408fd5874d2Sdrh trigger9.test triggerA.test triggerB.test triggerC.test triggerD.test 409fd5874d2Sdrh types2.test types3.test types.test unique.test unordered.test 410fd5874d2Sdrh update.test view.test vtab1.test vtab2.test vtab3.test vtab4.test 411fd5874d2Sdrh vtab5.test vtab6.test vtab7.test vtab8.test vtab9.test vtab_alter.test 4124fe425adSdrh vtabA.test vtabB.test vtabC.test vtabD.test vtabE.test 413fd5874d2Sdrh vtabF.test where2.test where3.test where4.test where5.test where6.test 414fd5874d2Sdrh where7.test where8m.test where8.test where9.test whereA.test whereB.test 415fd5874d2Sdrh whereC.test whereD.test whereE.test whereF.test wherelimit.test 416fd5874d2Sdrh where.test 417fd5874d2Sdrh} 418fd5874d2Sdrh 41930e2f0aeSdantest_suite "vfslog" -prefix "" -description { 42030e2f0aeSdan "Vfslog" quick test suite. Like "veryquick" except does not omits 42130e2f0aeSdan a few tests that do not work with a version 1 VFS. And the quota* tests, 42230e2f0aeSdan which do not work with a VFS that uses the pVfs argument passed to 42330e2f0aeSdan sqlite3_vfs methods. 42430e2f0aeSdan} -files [ 42530e2f0aeSdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* oserror.test \ 42630e2f0aeSdan pager1.test syscall.test sysfault.test tkt3457.test quota* superlock* \ 42730e2f0aeSdan wal* mmap* 42830e2f0aeSdan] 42930e2f0aeSdan 4304da30f88Sdantest_suite "atomic-batch-write" -prefix "" -description { 4314da30f88Sdan Like veryquick.test, but must be run on a file-system that supports 4324da30f88Sdan atomic-batch-writes. Tests that depend on the journal file being present 4334da30f88Sdan are omitted. 4344da30f88Sdan} -files [ 4354da30f88Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* *bigfile* *_err* \ 4364da30f88Sdan *fts5corrupt* *fts5big* *fts5aj* \ 4374da30f88Sdan crash8.test delete_db.test \ 4384da30f88Sdan exclusive.test journal3.test \ 4394da30f88Sdan journal1.test \ 4404da30f88Sdan jrnlmode.test jrnlmode2.test \ 4414da30f88Sdan lock4.test pager1.test \ 4424da30f88Sdan pager3.test sharedA.test \ 4434da30f88Sdan symlink.test stmt.test \ 4444da30f88Sdan sync.test sync2.test \ 4454da30f88Sdan tempdb.test tkt3457.test \ 4464da30f88Sdan vacuum5.test wal2.test \ 4474da30f88Sdan walmode.test zerodamage.test 4484da30f88Sdan] -initialize { 4494da30f88Sdan if {[atomic_batch_write test.db]==0} { 4504da30f88Sdan error "File system does NOT support atomic-batch-write" 4514da30f88Sdan } 4524da30f88Sdan} 4534da30f88Sdan 454e91a54e1Sdanlappend ::testsuitelist xxx 4550626dfc3Sdan#------------------------------------------------------------------------- 4560626dfc3Sdan# Define the coverage related test suites: 4570626dfc3Sdan# 4580626dfc3Sdan# coverage-wal 4590626dfc3Sdan# 4600626dfc3Sdantest_suite "coverage-wal" -description { 4610626dfc3Sdan Coverage tests for file wal.c. 4620626dfc3Sdan} -files { 4638d69a581Sdan wal.test wal2.test wal3.test wal4.test wal5.test 4648d69a581Sdan wal64k.test wal6.test wal7.test wal8.test wal9.test 4658d69a581Sdan walbak.test walbig.test walblock.test walcksum.test walcrash2.test 4668d69a581Sdan walcrash3.test walcrash4.test walcrash.test walfault.test walhook.test 4678d69a581Sdan walmode.test walnoshm.test waloverwrite.test walpersist.test 4688d69a581Sdan walprotocol2.test walprotocol.test walro2.test walrofault.test 4698d69a581Sdan walro.test walshared.test walslow.test walvfs.test 47092107a38Sdan walfault2.test 4718d69a581Sdan nockpt.test 472f6febee0Sdan 473f6febee0Sdan snapshot2.test snapshot3.test snapshot4.test 474f6febee0Sdan snapshot_fault.test snapshot.test snapshot_up.test 4750626dfc3Sdan} 4760626dfc3Sdan 477e91a54e1Sdantest_suite "coverage-pager" -description { 478e91a54e1Sdan Coverage tests for file pager.c. 479e91a54e1Sdan} -files { 480f43d7fceSdan pager1.test pager2.test pagerfault.test pagerfault2.test 481f43d7fceSdan walfault.test walbak.test journal2.test tkt-9d68c883.test 482e91a54e1Sdan} 4830626dfc3Sdan 484b49d1047Sdantest_suite "coverage-analyze" -description { 485b49d1047Sdan Coverage tests for file analyze.c. 486b49d1047Sdan} -files { 487b49d1047Sdan analyze3.test analyze4.test analyze5.test analyze6.test 488cfee884eSdrh analyze7.test analyze8.test analyze9.test 489cfee884eSdrh analyze.test mallocA.test 490b49d1047Sdan} 491b49d1047Sdan 4920d51def2Sdantest_suite "coverage-sorter" -description { 4930d51def2Sdan Coverage tests for file vdbesort.c. 4940d51def2Sdan} -files { 4950d51def2Sdan sort.test sortfault.test 4960d51def2Sdan} 4970d51def2Sdan 4980626dfc3Sdan 499e91a54e1Sdanlappend ::testsuitelist xxx 5000626dfc3Sdan#------------------------------------------------------------------------- 5010626dfc3Sdan# Define the permutation test suites: 5020626dfc3Sdan# 5031077e3f7Sdanielk1977 504b2a0f75cSdrh# Run some tests using pre-allocated page blocks. 5051077e3f7Sdanielk1977# 5064c5aeeccSdan# mmap1.test is excluded because a good number of its tests depend on 5074c5aeeccSdan# the page-cache being larger than the database. But this permutation 5084c5aeeccSdan# causes the effective limit on the page-cache to be just 24 pages. 5094c5aeeccSdan# 5100626dfc3Sdantest_suite "memsubsys1" -description { 511b2a0f75cSdrh Tests using pre-allocated page blocks 5120626dfc3Sdan} -files [ 5134c5aeeccSdan test_set $::allquicktests -exclude ioerr5.test malloc5.test mmap1.test 5140626dfc3Sdan] -initialize { 51503bc525aSdan test_set_config_pagecache 4096 24 5161077e3f7Sdanielk1977 catch {db close} 5171077e3f7Sdanielk1977 sqlite3_shutdown 5181077e3f7Sdanielk1977 sqlite3_initialize 519bb77b753Sdrh autoinstall_test_functions 5201077e3f7Sdanielk1977} -shutdown { 52103bc525aSdan test_restore_config_pagecache 5221077e3f7Sdanielk1977 catch {db close} 5231077e3f7Sdanielk1977 sqlite3_shutdown 5241077e3f7Sdanielk1977 sqlite3_initialize 525bb77b753Sdrh autoinstall_test_functions 5261077e3f7Sdanielk1977} 5271077e3f7Sdanielk1977 528b2a0f75cSdrh# Run some tests using pre-allocated page blocks. This time 5291077e3f7Sdanielk1977# the allocations are too small to use in most cases. 5301077e3f7Sdanielk1977# 53134c61e68Sdanielk1977# Both ioerr5.test and malloc5.test are excluded because they test the 53234c61e68Sdanielk1977# sqlite3_soft_heap_limit() and sqlite3_release_memory() functionality. 53334c61e68Sdanielk1977# This functionality is disabled if a pre-allocated page block is provided. 53434c61e68Sdanielk1977# 5350626dfc3Sdantest_suite "memsubsys2" -description { 536b2a0f75cSdrh Tests using small pre-allocated page blocks 5370626dfc3Sdan} -files [ 5380626dfc3Sdan test_set $::allquicktests -exclude ioerr5.test malloc5.test 5390626dfc3Sdan] -initialize { 54003bc525aSdan test_set_config_pagecache 512 5 541d63bd759Sdrh catch {db close} 5421077e3f7Sdanielk1977 sqlite3_shutdown 5431077e3f7Sdanielk1977 sqlite3_initialize 544bb77b753Sdrh autoinstall_test_functions 5451077e3f7Sdanielk1977} -shutdown { 54603bc525aSdan test_restore_config_pagecache 5471077e3f7Sdanielk1977 catch {db close} 5481077e3f7Sdanielk1977 sqlite3_shutdown 5491077e3f7Sdanielk1977 sqlite3_initialize 550bb77b753Sdrh autoinstall_test_functions 5511077e3f7Sdanielk1977} 5521077e3f7Sdanielk1977 553e2a7c6e0Sdrh# Run all tests with the lookaside allocator disabled. 554e2a7c6e0Sdrh# 5550626dfc3Sdantest_suite "nolookaside" -description { 556e2a7c6e0Sdrh OOM tests with lookaside disabled 557e2a7c6e0Sdrh} -initialize { 558e2a7c6e0Sdrh catch {db close} 559e2a7c6e0Sdrh sqlite3_shutdown 560e2a7c6e0Sdrh sqlite3_config_lookaside 0 0 561e2a7c6e0Sdrh sqlite3_initialize 562bb77b753Sdrh autoinstall_test_functions 563e2a7c6e0Sdrh} -shutdown { 564e2a7c6e0Sdrh catch {db close} 565e2a7c6e0Sdrh sqlite3_shutdown 566e2a7c6e0Sdrh sqlite3_config_lookaside 100 500 567e2a7c6e0Sdrh sqlite3_initialize 568bb77b753Sdrh autoinstall_test_functions 5690626dfc3Sdan} -files $::allquicktests 570e2a7c6e0Sdrh 5711077e3f7Sdanielk1977# Run some tests in SQLITE_CONFIG_SINGLETHREAD mode. 5721077e3f7Sdanielk1977# 5730626dfc3Sdantest_suite "singlethread" -description { 5741077e3f7Sdanielk1977 Tests run in SQLITE_CONFIG_SINGLETHREAD mode 5751077e3f7Sdanielk1977} -initialize { 5761077e3f7Sdanielk1977 catch {db close} 5771077e3f7Sdanielk1977 sqlite3_shutdown 57804df18dcSdrh catch {sqlite3_config singlethread} 579bb77b753Sdrh sqlite3_initialize 580bb77b753Sdrh autoinstall_test_functions 5810626dfc3Sdan} -files { 5821077e3f7Sdanielk1977 delete.test delete2.test insert.test rollback.test select1.test 5831077e3f7Sdanielk1977 select2.test trans.test update.test vacuum.test types.test 5841077e3f7Sdanielk1977 types2.test types3.test 5851077e3f7Sdanielk1977} -shutdown { 5861077e3f7Sdanielk1977 catch {db close} 5871077e3f7Sdanielk1977 sqlite3_shutdown 58804df18dcSdrh catch {sqlite3_config serialized} 589bb77b753Sdrh sqlite3_initialize 590bb77b753Sdrh autoinstall_test_functions 5911077e3f7Sdanielk1977} 5921077e3f7Sdanielk1977 5930626dfc3Sdantest_suite "nomutex" -description { 594039963adSdrh Tests run with the SQLITE_OPEN_MULTITHREADED flag passed to sqlite3_open(). 5959a6284c1Sdanielk1977} -initialize { 596b1e1a0fdSdan set ::G(perm:sqlite3_args) [list -fullmutex 0 -nomutex 1] 5970626dfc3Sdan} -files { 5989a6284c1Sdanielk1977 delete.test delete2.test insert.test rollback.test select1.test 5999a6284c1Sdanielk1977 select2.test trans.test update.test vacuum.test types.test 6009a6284c1Sdanielk1977 types2.test types3.test 6019a6284c1Sdanielk1977} 6029a6284c1Sdanielk1977 6031077e3f7Sdanielk1977# Run some tests in SQLITE_CONFIG_MULTITHREAD mode. 6041077e3f7Sdanielk1977# 6050626dfc3Sdantest_suite "multithread" -description { 6061077e3f7Sdanielk1977 Tests run in SQLITE_CONFIG_MULTITHREAD mode 6071077e3f7Sdanielk1977} -initialize { 6081077e3f7Sdanielk1977 catch {db close} 6091077e3f7Sdanielk1977 sqlite3_shutdown 61004df18dcSdrh catch {sqlite3_config multithread} 611bb77b753Sdrh sqlite3_initialize 612bb77b753Sdrh autoinstall_test_functions 6130626dfc3Sdan} -files { 6141077e3f7Sdanielk1977 delete.test delete2.test insert.test rollback.test select1.test 6151077e3f7Sdanielk1977 select2.test trans.test update.test vacuum.test types.test 616dfea4533Sdan types2.test types3.test sort4.test 6171077e3f7Sdanielk1977} -shutdown { 6181077e3f7Sdanielk1977 catch {db close} 6191077e3f7Sdanielk1977 sqlite3_shutdown 62004df18dcSdrh catch {sqlite3_config serialized} 621bb77b753Sdrh sqlite3_initialize 622bb77b753Sdrh autoinstall_test_functions 6231077e3f7Sdanielk1977} 6241077e3f7Sdanielk1977 625039963adSdrh# Run some tests in SQLITE_OPEN_FULLMUTEX mode. 626039963adSdrh# 6270626dfc3Sdantest_suite "fullmutex" -description { 628039963adSdrh Tests run in SQLITE_OPEN_FULLMUTEX mode 629039963adSdrh} -initialize { 630b1e1a0fdSdan set ::G(perm:sqlite3_args) [list -nomutex 0 -fullmutex 1] 6310626dfc3Sdan} -files { 632039963adSdrh delete.test delete2.test insert.test rollback.test select1.test 633039963adSdrh select2.test trans.test update.test vacuum.test types.test 634039963adSdrh types2.test types3.test 635039963adSdrh} 636039963adSdrh 6371077e3f7Sdanielk1977# Run some tests using the "onefile" demo. 6381077e3f7Sdanielk1977# 6390626dfc3Sdantest_suite "onefile" -description { 6401077e3f7Sdanielk1977 Run some tests using the "test_onefile.c" demo 6411077e3f7Sdanielk1977} -initialize { 642b1e1a0fdSdan set ::G(perm:sqlite3_args) [list -vfs fs] 6430626dfc3Sdan} -files { 6441077e3f7Sdanielk1977 conflict.test insert.test insert2.test insert3.test 6451077e3f7Sdanielk1977 rollback.test select1.test select2.test select3.test 6461077e3f7Sdanielk1977} 6471077e3f7Sdanielk1977 6481077e3f7Sdanielk1977# Run some tests using UTF-16 databases. 6491077e3f7Sdanielk1977# 6500626dfc3Sdantest_suite "utf16" -description { 6511077e3f7Sdanielk1977 Run tests using UTF-16 databases 6522dd6d809Sdanielk1977} -presql { 6531077e3f7Sdanielk1977 pragma encoding = 'UTF-16' 6540626dfc3Sdan} -files { 6551077e3f7Sdanielk1977 alter.test alter3.test 65622d73b1cSdan analyze.test analyze3.test analyze4.test analyze5.test analyze6.test 657cfee884eSdrh analyze7.test analyze8.test analyze9.test 6581077e3f7Sdanielk1977 auth.test bind.test blob.test capi2.test capi3.test collate1.test 6591077e3f7Sdanielk1977 collate2.test collate3.test collate4.test collate5.test collate6.test 6601077e3f7Sdanielk1977 conflict.test date.test delete.test expr.test fkey1.test func.test 6611077e3f7Sdanielk1977 hook.test index.test insert2.test insert.test interrupt.test in.test 6621077e3f7Sdanielk1977 intpkey.test ioerr.test join2.test join.test lastinsert.test 6631077e3f7Sdanielk1977 laststmtchanges.test limit.test lock2.test lock.test main.test 6641077e3f7Sdanielk1977 memdb.test minmax.test misc1.test misc2.test misc3.test notnull.test 6651077e3f7Sdanielk1977 null.test progress.test quote.test rowid.test select1.test select2.test 6661077e3f7Sdanielk1977 select3.test select4.test select5.test select6.test sort.test 6671077e3f7Sdanielk1977 subselect.test tableapi.test table.test temptable.test 6681077e3f7Sdanielk1977 trace.test trigger1.test trigger2.test trigger3.test 6691077e3f7Sdanielk1977 trigger4.test types2.test types.test unique.test update.test 6701077e3f7Sdanielk1977 vacuum.test view.test where.test 671b78b83a2Sdan bestindex1.test 6721077e3f7Sdanielk1977} 6731077e3f7Sdanielk1977 6741077e3f7Sdanielk1977# Run some tests in exclusive locking mode. 6751077e3f7Sdanielk1977# 6760626dfc3Sdantest_suite "exclusive" -description { 6771077e3f7Sdanielk1977 Run tests in exclusive locking mode. 6781077e3f7Sdanielk1977} -presql { 6791077e3f7Sdanielk1977 pragma locking_mode = 'exclusive' 6800626dfc3Sdan} -files { 6811077e3f7Sdanielk1977 rollback.test select1.test select2.test 6821077e3f7Sdanielk1977 malloc.test ioerr.test 6831077e3f7Sdanielk1977} 6841077e3f7Sdanielk1977 68504335886Sdrh# Run some tests in exclusive locking mode with truncated journals. 68604335886Sdrh# 6870626dfc3Sdantest_suite "exclusive-truncate" -description { 68804335886Sdrh Run tests in exclusive locking mode and truncate journal mode. 68904335886Sdrh} -presql { 69004335886Sdrh pragma locking_mode = 'exclusive'; 69104335886Sdrh pragma journal_mode = TRUNCATE; 6920626dfc3Sdan} -files { 69304335886Sdrh delete.test delete2.test insert.test rollback.test select1.test 69404335886Sdrh select2.test update.test malloc.test ioerr.test 69504335886Sdrh} 69604335886Sdrh 6971077e3f7Sdanielk1977# Run some tests in persistent journal mode. 6981077e3f7Sdanielk1977# 6990626dfc3Sdantest_suite "persistent_journal" -description { 7001077e3f7Sdanielk1977 Run tests in persistent-journal mode. 7011077e3f7Sdanielk1977} -presql { 7021077e3f7Sdanielk1977 pragma journal_mode = persist 7030626dfc3Sdan} -files { 7041077e3f7Sdanielk1977 delete.test delete2.test insert.test rollback.test select1.test 7051077e3f7Sdanielk1977 select2.test trans.test update.test vacuum.test 7061077e3f7Sdanielk1977} 7071077e3f7Sdanielk1977 70804335886Sdrh# Run some tests in truncating journal mode. 70904335886Sdrh# 7100626dfc3Sdantest_suite "truncate_journal" -description { 71104335886Sdrh Run tests in persistent-journal mode. 71204335886Sdrh} -presql { 71304335886Sdrh pragma journal_mode = truncate 7140626dfc3Sdan} -files { 71504335886Sdrh delete.test delete2.test insert.test rollback.test select1.test 71604335886Sdrh select2.test trans.test update.test vacuum.test 71704335886Sdrh malloc.test ioerr.test 71804335886Sdrh} 71904335886Sdrh 7201077e3f7Sdanielk1977# Run some error tests in persistent journal mode. 7211077e3f7Sdanielk1977# 7220626dfc3Sdantest_suite "persistent_journal_error" -description { 7231077e3f7Sdanielk1977 Run malloc.test and ioerr.test in persistent-journal mode. 7241077e3f7Sdanielk1977} -presql { 7251077e3f7Sdanielk1977 pragma journal_mode = persist 7260626dfc3Sdan} -files { 7271077e3f7Sdanielk1977 malloc.test ioerr.test 7281077e3f7Sdanielk1977} 7291077e3f7Sdanielk1977 7301077e3f7Sdanielk1977# Run some tests in no journal mode. 7311077e3f7Sdanielk1977# 7320626dfc3Sdantest_suite "no_journal" -description { 7331077e3f7Sdanielk1977 Run tests in no-journal mode. 7341077e3f7Sdanielk1977} -presql { 7351077e3f7Sdanielk1977 pragma journal_mode = persist 7360626dfc3Sdan} -files { 7371077e3f7Sdanielk1977 delete.test delete2.test insert.test rollback.test select1.test 7381077e3f7Sdanielk1977 select2.test trans.test update.test vacuum.test 7391077e3f7Sdanielk1977} 7401077e3f7Sdanielk1977 7411077e3f7Sdanielk1977# Run some error tests in no journal mode. 7421077e3f7Sdanielk1977# 7430626dfc3Sdantest_suite "no_journal_error" -description { 7441077e3f7Sdanielk1977 Run malloc.test and ioerr.test in no-journal mode. 7451077e3f7Sdanielk1977} -presql { 7461077e3f7Sdanielk1977 pragma journal_mode = persist 7470626dfc3Sdan} -files { 7481077e3f7Sdanielk1977 malloc.test ioerr.test 7491077e3f7Sdanielk1977} 7501077e3f7Sdanielk1977 7511077e3f7Sdanielk1977# Run some crash-tests in autovacuum mode. 7521077e3f7Sdanielk1977# 7530626dfc3Sdantest_suite "autovacuum_crash" -description { 7541077e3f7Sdanielk1977 Run crash.test in autovacuum mode. 7551077e3f7Sdanielk1977} -presql { 7561077e3f7Sdanielk1977 pragma auto_vacuum = 1 7570626dfc3Sdan} -files crash.test 7581077e3f7Sdanielk1977 7591077e3f7Sdanielk1977# Run some ioerr-tests in autovacuum mode. 7601077e3f7Sdanielk1977# 7610626dfc3Sdantest_suite "autovacuum_ioerr" -description { 7621077e3f7Sdanielk1977 Run ioerr.test in autovacuum mode. 7631077e3f7Sdanielk1977} -presql { 7641077e3f7Sdanielk1977 pragma auto_vacuum = 1 7650626dfc3Sdan} -files ioerr.test 7661077e3f7Sdanielk1977 767b3175389Sdanielk1977# Run tests with an in-memory journal. 768b3175389Sdanielk1977# 7690626dfc3Sdantest_suite "inmemory_journal" -description { 770b3175389Sdanielk1977 Run tests with an in-memory journal file. 771b3175389Sdanielk1977} -presql { 772b3175389Sdanielk1977 pragma journal_mode = 'memory' 7730626dfc3Sdan} -files [test_set $::allquicktests -exclude { 774b3175389Sdanielk1977 # Exclude all tests that simulate IO errors. 77585979cd8Sdrh autovacuum_ioerr2.test cffault.test incrvacuum_ioerr.test ioerr.test 776b3175389Sdanielk1977 ioerr.test ioerr2.test ioerr3.test ioerr4.test ioerr5.test 7772206a2b6Sdrh vacuum3.test incrblob_err.test diskfull.test backup_ioerr.test 778c3b84830Sshaneh e_fts3.test fts3cov.test fts3malloc.test fts3rnd.test 77914cee38bSdan fts3snippet.test mmapfault.test sessionfault.test sessionfault2.test 780b3175389Sdanielk1977 781b3175389Sdanielk1977 # Exclude test scripts that use tcl IO to access journal files or count 782b3175389Sdanielk1977 # the number of fsync() calls. 783b3175389Sdanielk1977 pager.test exclusive.test jrnlmode.test sync.test misc1.test 784cb257902Sdanielk1977 journal1.test conflict.test crash8.test tkt3457.test io.test 7854fc4ba77Sdan journal3.test 8_3_names.test shmlock.test 78601d38564Sdan 787cb354603Sdan pager1.test async4.test corrupt.test filefmt.test pager2.test 788cb354603Sdan corrupt5.test corruptA.test pageropt.test 789cb354603Sdan 79001d38564Sdan # Exclude stmt.test, which expects sub-journals to use temporary files. 79185979cd8Sdrh stmt.test symlink.test 7920b944135Sdrh 7936b4e9a84Sdan zerodamage.test 7946b4e9a84Sdan 7950b944135Sdrh # WAL mode is different. 796b5a2d55eSdrh wal* tkt-2d1a5c67d.test backcompat.test e_wal* rowallock.test 797ee7de914Sdan 798ee7de914Sdan # This test does not work as the "PRAGMA journal_mode = memory" 799ee7de914Sdan # statement switches the database out of wal mode at inopportune 800ee7de914Sdan # times. 801ee7de914Sdan snapshot_fault.test 802b3906816Sdan 803b3906816Sdan # This test assumes a journal file is created on disk. 804b3906816Sdan delete_db.test 80518b20c98Sdan 80618b20c98Sdan # This test depends on a successful recovery from the pager error 80718b20c98Sdan # state. Which is not possible with an in-memory journal 80818b20c98Sdan fts5fault1.test 809*a16edfa2Sdan 810*a16edfa2Sdan recoverpgsz.test 8110626dfc3Sdan}] 812b3175389Sdanielk1977 8136b39c2e4Sdanielk1977ifcapable mem3 { 8140626dfc3Sdan test_suite "memsys3" -description { 81557e5ea93Sdanielk1977 Run tests using the allocator in mem3.c. 816eace527bSdan } -files [test_set $::allquicktests -exclude { 8178a42cbd3Sdrh autovacuum.test delete3.test manydb.test 8188a42cbd3Sdrh bigrow.test incrblob2.test memdb.test 8198a42cbd3Sdrh bitvec.test index2.test memsubsys1.test 8208a42cbd3Sdrh capi3c.test ioerr.test memsubsys2.test 8218a42cbd3Sdrh capi3.test join3.test pagesize.test 8228b322827Sdanielk1977 collate5.test limit.test backup_ioerr.test 8238b322827Sdanielk1977 backup_malloc.test 8240626dfc3Sdan }] -initialize { 82557e5ea93Sdanielk1977 catch {db close} 82657e5ea93Sdanielk1977 sqlite3_reset_auto_extension 82757e5ea93Sdanielk1977 sqlite3_shutdown 8287830cd41Sdrh sqlite3_config_heap 25000000 0 829e2a7c6e0Sdrh sqlite3_config_lookaside 0 0 8308b322827Sdanielk1977 ifcapable mem5 { 8318b322827Sdanielk1977 # If both memsys3 and memsys5 are enabled in the build, the call to 8328b322827Sdanielk1977 # [sqlite3_config_heap] will initialize the system to use memsys5. 8338b322827Sdanielk1977 # The following overrides this preference and installs the memsys3 8348b322827Sdanielk1977 # allocator. 8358b322827Sdanielk1977 sqlite3_install_memsys3 8368b322827Sdanielk1977 } 83732155ef0Sdanielk1977 install_malloc_faultsim 1 83857e5ea93Sdanielk1977 sqlite3_initialize 83957e5ea93Sdanielk1977 autoinstall_test_functions 84057e5ea93Sdanielk1977 } -shutdown { 84157e5ea93Sdanielk1977 catch {db close} 84257e5ea93Sdanielk1977 sqlite3_shutdown 8430d84e5b2Sdanielk1977 sqlite3_config_heap 0 0 844e2a7c6e0Sdrh sqlite3_config_lookaside 100 500 84532155ef0Sdanielk1977 install_malloc_faultsim 1 84657e5ea93Sdanielk1977 sqlite3_initialize 847bb77b753Sdrh autoinstall_test_functions 84857e5ea93Sdanielk1977 } 8496b39c2e4Sdanielk1977} 85057e5ea93Sdanielk1977 8516b39c2e4Sdanielk1977ifcapable mem5 { 8520626dfc3Sdan test_suite "memsys5" -description { 8536b39c2e4Sdanielk1977 Run tests using the allocator in mem5.c. 854eace527bSdan } -files [test_set $::allquicktests -exclude { 8558a42cbd3Sdrh autovacuum.test delete3.test manydb.test 8568a42cbd3Sdrh bigrow.test incrblob2.test memdb.test 8578a42cbd3Sdrh bitvec.test index2.test memsubsys1.test 8588a42cbd3Sdrh capi3c.test ioerr.test memsubsys2.test 8598a42cbd3Sdrh capi3.test join3.test pagesize.test 860ac8d7b35Sdanielk1977 collate5.test limit.test zeroblob.test 8610626dfc3Sdan }] -initialize { 862c66c0e14Sdanielk1977 catch {db close} 863c66c0e14Sdanielk1977 sqlite3_shutdown 8647830cd41Sdrh sqlite3_config_heap 25000000 64 865e2a7c6e0Sdrh sqlite3_config_lookaside 0 0 8665099be5eSdanielk1977 install_malloc_faultsim 1 8675099be5eSdanielk1977 sqlite3_initialize 8685099be5eSdanielk1977 autoinstall_test_functions 8695099be5eSdanielk1977 } -shutdown { 8705099be5eSdanielk1977 catch {db close} 8715099be5eSdanielk1977 sqlite3_shutdown 8720d84e5b2Sdanielk1977 sqlite3_config_heap 0 0 873e2a7c6e0Sdrh sqlite3_config_lookaside 100 500 8745099be5eSdanielk1977 install_malloc_faultsim 1 8755099be5eSdanielk1977 sqlite3_initialize 876bb77b753Sdrh autoinstall_test_functions 8775099be5eSdanielk1977 } 8785099be5eSdanielk1977 8790626dfc3Sdan test_suite "memsys5-2" -description { 8805099be5eSdanielk1977 Run tests using the allocator in mem5.c in a different configuration. 8810626dfc3Sdan } -files { 8828a42cbd3Sdrh select1.test 8835099be5eSdanielk1977 } -initialize { 8845099be5eSdanielk1977 catch {db close} 8855099be5eSdanielk1977 sqlite3_shutdown 886b0c6a888Sdan sqlite3_config_memstatus 0 8877830cd41Sdrh sqlite3_config_heap 40000000 16 888e2a7c6e0Sdrh sqlite3_config_lookaside 0 0 889c66c0e14Sdanielk1977 install_malloc_faultsim 1 890c66c0e14Sdanielk1977 sqlite3_initialize 891c66c0e14Sdanielk1977 autoinstall_test_functions 892c66c0e14Sdanielk1977 } -shutdown { 893c66c0e14Sdanielk1977 catch {db close} 894c66c0e14Sdanielk1977 sqlite3_shutdown 8950d84e5b2Sdanielk1977 sqlite3_config_heap 0 0 896e2a7c6e0Sdrh sqlite3_config_lookaside 100 500 897c66c0e14Sdanielk1977 install_malloc_faultsim 1 898c66c0e14Sdanielk1977 sqlite3_initialize 899bb77b753Sdrh autoinstall_test_functions 900c66c0e14Sdanielk1977 } 9016b39c2e4Sdanielk1977} 902c66c0e14Sdanielk1977 9038a42cbd3Sdrhifcapable threadsafe { 9040626dfc3Sdan test_suite "no_mutex_try" -description { 9058a42cbd3Sdrh The sqlite3_mutex_try() interface always fails 9060626dfc3Sdan } -files [ 9070626dfc3Sdan test_set $::allquicktests -exclude mutex1.test mutex2.test 9080626dfc3Sdan ] -initialize { 9098a42cbd3Sdrh catch {db close} 9108a42cbd3Sdrh sqlite3_shutdown 9118a42cbd3Sdrh install_mutex_counters 1 9128a42cbd3Sdrh set ::disable_mutex_try 1 913bb77b753Sdrh sqlite3_initialize 914bb77b753Sdrh autoinstall_test_functions 9158a42cbd3Sdrh } -shutdown { 9168a42cbd3Sdrh catch {db close} 9178a42cbd3Sdrh sqlite3_shutdown 9188a42cbd3Sdrh install_mutex_counters 0 919bb77b753Sdrh sqlite3_initialize 920bb77b753Sdrh autoinstall_test_functions 9218a42cbd3Sdrh } 9228a42cbd3Sdrh} 9238a42cbd3Sdrh 924b13dee99Sdanielk1977# run_tests "crash_safe_append" -description { 925b13dee99Sdanielk1977# Run crash.test with persistent journals on a SAFE_APPEND file-system. 926b13dee99Sdanielk1977# } -initialize { 927b13dee99Sdanielk1977# rename crashsql sa_crashsql 928b13dee99Sdanielk1977# proc crashsql {args} { 929b13dee99Sdanielk1977# set options [lrange $args 0 [expr {[llength $args]-2}]] 930b13dee99Sdanielk1977# lappend options -char safe_append 931b13dee99Sdanielk1977# set sql [lindex $args end] 932b13dee99Sdanielk1977# lappend options " 933b13dee99Sdanielk1977# PRAGMA journal_mode=persistent; 934b13dee99Sdanielk1977# $sql 935b13dee99Sdanielk1977# " 936b13dee99Sdanielk1977# set fd [open test.db-journal w] 937b13dee99Sdanielk1977# puts $fd [string repeat 1234567890 100000] 938b13dee99Sdanielk1977# close $fd 939b13dee99Sdanielk1977# eval sa_crashsql $options 940b13dee99Sdanielk1977# } 941b13dee99Sdanielk1977# } -shutdown { 942b13dee99Sdanielk1977# rename crashsql {} 943b13dee99Sdanielk1977# rename sa_crashsql crashsql 9440626dfc3Sdan# } -files crash.test 945b13dee99Sdanielk1977 9460626dfc3Sdantest_suite "safe_append" -description { 947755339ecSdanielk1977 Run some tests on a SAFE_APPEND file-system. 948755339ecSdanielk1977} -initialize { 949b1e1a0fdSdan set ::G(perm:sqlite3_args) [list -vfs devsym] 950755339ecSdanielk1977 sqlite3_simulate_device -char safe_append 9510626dfc3Sdan} -files [ 9520626dfc3Sdan test_set $::allquicktests shared_err.test -exclude async3.test 9530626dfc3Sdan] 954755339ecSdanielk1977 955b232c232Sdrh# The set of tests to run on the alternative-pcache 956b232c232Sdrhset perm-alt-pcache-testset { 957b232c232Sdrh async.test 958b232c232Sdrh attach.test 959b232c232Sdrh delete.test delete2.test 960b232c232Sdrh index.test 961b232c232Sdrh insert.test insert2.test 962b232c232Sdrh join.test join2.test 963b232c232Sdrh rollback.test 964b232c232Sdrh select1.test select2.test 965b232c232Sdrh trans.test 966b232c232Sdrh update.test 967b232c232Sdrh} 968b232c232Sdrh 9692acd4c63Sdanforeach discard_rate {0 10 50 90 100} { 9702acd4c63Sdan test_suite "pcache${discard_rate}" -description " 9712acd4c63Sdan Alternative pcache implementation with ${discard_rate}% random discard 9722acd4c63Sdan " -initialize " 973b232c232Sdrh catch {db close} 974b232c232Sdrh sqlite3_shutdown 9752acd4c63Sdan sqlite3_config_alt_pcache 1 $discard_rate 1 976b232c232Sdrh sqlite3_initialize 977b232c232Sdrh autoinstall_test_functions 9782acd4c63Sdan " -shutdown { 979b232c232Sdrh catch {db close} 980b232c232Sdrh sqlite3_shutdown 981b232c232Sdrh sqlite3_config_alt_pcache 0 0 0 982b232c232Sdrh sqlite3_config_lookaside 100 500 983b232c232Sdrh install_malloc_faultsim 1 984b232c232Sdrh sqlite3_initialize 985bb77b753Sdrh autoinstall_test_functions 9860626dfc3Sdan } -files ${perm-alt-pcache-testset} 9872acd4c63Sdan} 988b13dee99Sdanielk1977 9890626dfc3Sdantest_suite "journaltest" -description { 990f3107512Sdanielk1977 Check that pages are synced before being written (test_journal.c). 991f3107512Sdanielk1977} -initialize { 992f3107512Sdanielk1977 catch {db close} 993f3107512Sdanielk1977 register_jt_vfs -default "" 994f3107512Sdanielk1977} -shutdown { 995f3107512Sdanielk1977 unregister_jt_vfs 9960626dfc3Sdan} -files [test_set $::allquicktests -exclude { 9970626dfc3Sdan wal* incrvacuum.test ioerr.test corrupt4.test io.test crash8.test 99805accd22Sdan async4.test bigfile.test backcompat.test e_wal* fstat.test mmap2.test 99905accd22Sdan pager1.test syscall.test tkt3457.test *malloc* mmap* multiplex* nolock* 100005accd22Sdan pager2.test *fault* rowal* snapshot* superlock* symlink.test 1001e88c0cdeSdan delete_db.test shmlock.test chunksize.test 100255f36787Sdan busy2.test avfs.test external_reader.test 1003fb4a626dSdrh}] 1004f3107512Sdanielk1977 10050a7a9155Sdanif {[info commands register_demovfs] != ""} { 10060626dfc3Sdan test_suite "demovfs" -description { 1007430e74cdSdan Check that the demovfs (code in test_demovfs.c) more or less works. 10080a7a9155Sdan } -initialize { 10090a7a9155Sdan register_demovfs 10100a7a9155Sdan } -shutdown { 10110a7a9155Sdan unregister_demovfs 10120626dfc3Sdan } -files { 10130a7a9155Sdan insert.test insert2.test insert3.test rollback.test 10140a7a9155Sdan select1.test select2.test select3.test 10150a7a9155Sdan } 10160a7a9155Sdan} 10170a7a9155Sdan 10180626dfc3Sdantest_suite "wal" -description { 101971cb518fSdan Run tests with journal_mode=WAL 102031f98fc8Sdan} -initialize { 1021430e74cdSdan set ::G(savepoint6_iterations) 100 102231f98fc8Sdan} -shutdown { 1023430e74cdSdan unset -nocomplain ::G(savepoint6_iterations) 10240626dfc3Sdan} -files { 1025e106de63Sdan savepoint.test savepoint2.test savepoint6.test 1026e106de63Sdan trans.test avtrans.test 102760f9da75Sdan 102860f9da75Sdan fts3aa.test fts3ab.test fts3ac.test fts3ad.test 102960f9da75Sdan fts3ae.test fts3af.test fts3ag.test fts3ah.test 103060f9da75Sdan fts3ai.test fts3aj.test fts3ak.test fts3al.test 103160f9da75Sdan fts3am.test fts3an.test fts3ao.test fts3b.test 103260f9da75Sdan fts3c.test fts3d.test fts3e.test fts3query.test 103371cb518fSdan} 1034897230ebSdan 1035897230ebSdantest_suite "rtree" -description { 1036897230ebSdan All R-tree related tests. Provides coverage of source file rtree.c. 1037897230ebSdan} -files [glob -nocomplain $::testdir/../ext/rtree/*.test] 1038897230ebSdan 10397cf7df7dSdantest_suite "session" -description { 10407cf7df7dSdan All session module related tests. 10417cf7df7dSdan} -files [glob -nocomplain $::testdir/../ext/session/*.test] 10427cf7df7dSdan 104335e2858eSdantest_suite "session_eec" -description { 104435e2858eSdan All session module related tests with sqlite3_extended_result_codes() set. 104535e2858eSdan} -files [ 104635e2858eSdan glob -nocomplain $::testdir/../ext/session/*.test 104735e2858eSdan] -dbconfig { 104835e2858eSdan sqlite3_extended_result_codes $::dbhandle 1 104935e2858eSdan} 105035e2858eSdan 1051f1a08ad8Sdrhtest_suite "session_strm" -description { 1052ef7a6304Sdan All session module related tests using the streaming APIs. 1053ef7a6304Sdan} -files [ 1054ef7a6304Sdan glob -nocomplain $::testdir/../ext/session/*.test 1055ef7a6304Sdan] -dbconfig { 1056ef7a6304Sdan set ::sqlite3session_streams 1 1057ef7a6304Sdan} 1058ef7a6304Sdan 1059cfb8f8d6Sdrhtest_suite "rbu" -description { 1060cfb8f8d6Sdrh RBU tests. 106193fdbfa6Sdan} -files [ 1062cfb8f8d6Sdrh test_set [glob -nocomplain $::testdir/../ext/rbu/*.test] -exclude rbu.test 106393fdbfa6Sdan] 106493fdbfa6Sdan 10651ce1b4a7Sdantest_suite "no_optimization" -description { 10661ce1b4a7Sdan Run test scripts with optimizations disabled using the 10671ce1b4a7Sdan sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS) interface. 1068108e6b2cSdan} -files [ 1069108e6b2cSdan test_set \ 1070108e6b2cSdan [glob -nocomplain $::testdir/window*.test] \ 1071108e6b2cSdan where.test where2.test where3.test where4.test where5.test \ 1072108e6b2cSdan where6.test where7.test where8.test where9.test \ 1073108e6b2cSdan whereA.test whereB.test wherelimit.test \ 1074108e6b2cSdan select1.test select2.test select3.test select4.test select5.test \ 1075eefef9aeSdan select7.test select8.test selectA.test selectC.test \ 1076eefef9aeSdan -exclude windowpushd.test 1077108e6b2cSdan] -dbconfig { 10781ce1b4a7Sdan optimization_control $::dbhandle all 0 10791ce1b4a7Sdan} 10801ce1b4a7Sdan 1081c431fd55Sdantest_suite "prepare" -description { 1082c431fd55Sdan Run tests with the db connection using sqlite3_prepare() instead of _v2(). 1083c431fd55Sdan} -dbconfig { 10848544d43eSdrh $::dbhandle version -use-legacy-prepare 1 1085c431fd55Sdan #$::dbhandle cache size 0 1086c431fd55Sdan} -files [ 1087a50b3091Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* \ 1088a50b3091Sdan stmtvtab1.test index9.test 1089c431fd55Sdan] 1090c431fd55Sdan 10912e3a5a81Sdantest_suite "sorterref" -prefix "" -description { 10922e3a5a81Sdan Run the "veryquick" test suite with SQLITE_CONFIG_SORTERREF_SIZE set 10932e3a5a81Sdan to 0 so that sorter-references are used whenever possible. 10942e3a5a81Sdan} -files [ 10952e3a5a81Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* *bigfile* *_err* \ 10962e3a5a81Sdan *fts5corrupt* *fts5big* *fts5aj* 10972e3a5a81Sdan] -initialize { 10982e3a5a81Sdan catch {db close} 10992e3a5a81Sdan sqlite3_shutdown 11002e3a5a81Sdan sqlite3_config_sorterref 0 11012e3a5a81Sdan sqlite3_initialize 11022e3a5a81Sdan autoinstall_test_functions 11032e3a5a81Sdan} -shutdown { 11042e3a5a81Sdan catch {db close} 11052e3a5a81Sdan sqlite3_shutdown 11062e3a5a81Sdan sqlite3_config_sorterref -1 11072e3a5a81Sdan sqlite3_initialize 11082e3a5a81Sdan autoinstall_test_functions 11092e3a5a81Sdan} 11102e3a5a81Sdan 111100bd55e1Sdantest_suite "maindbname" -prefix "" -description { 111200bd55e1Sdan Run the "veryquick" test suite with SQLITE_DBCONFIG_MAINDBNAME used to 111300bd55e1Sdan set the name of database 0 to "icecube". 111400bd55e1Sdan} -files [ 111500bd55e1Sdan test_set $allquicktests -exclude *malloc* *ioerr* *fault* *bigfile* *_err* \ 111600bd55e1Sdan *fts5corrupt* *fts5big* *fts5aj* 111700bd55e1Sdan] -dbconfig { 111800bd55e1Sdan dbconfig_maindbname_icecube $::dbhandle 111900bd55e1Sdan} 112000bd55e1Sdan 11211077e3f7Sdanielk1977# End of tests 11221077e3f7Sdanielk1977############################################################################# 11231077e3f7Sdanielk1977 11240626dfc3Sdan# run_tests NAME OPTIONS 11250626dfc3Sdan# 11260626dfc3Sdan# where available options are: 11270626dfc3Sdan# 11282fce9ab3Sdan# -description TITLE 11292fce9ab3Sdan# -initialize SCRIPT 11302fce9ab3Sdan# -shutdown SCRIPT 11312fce9ab3Sdan# -files LIST-OF-FILES 11322fce9ab3Sdan# -prefix NAME 1133b1e1a0fdSdan# -dbconfig SCRIPT 11340626dfc3Sdan# 11350626dfc3Sdanproc run_tests {name args} { 1136b1e1a0fdSdan set options(-initialize) "" 1137b1e1a0fdSdan set options(-shutdown) "" 1138b1e1a0fdSdan set options(-prefix) "" 1139b1e1a0fdSdan set options(-dbconfig) "" 11407d0fa14cSdan set options(-presql) "" 1141b1e1a0fdSdan 11420626dfc3Sdan array set options $args 11431077e3f7Sdanielk1977 1144d506de02Sdan set ::G(perm:name) $name 1145d506de02Sdan set ::G(perm:prefix) $options(-prefix) 11460626dfc3Sdan set ::G(isquick) 1 11471ce1b4a7Sdan set ::G(perm:dbconfig) $options(-dbconfig) 11487d0fa14cSdan set ::G(perm:presql) $options(-presql) 11490626dfc3Sdan 1150867bc4deSdan set filelist [lsort $options(-files)] 1151867bc4deSdan if {[info exists ::env(TCLTEST_PART)]} { 1152867bc4deSdan regexp {^([0-9]*)/([0-9]*)$} $::env(TCLTEST_PART) -> A B 1153867bc4deSdan set nFile [expr {([llength $filelist]+$B-1)/$B}] 1154867bc4deSdan set filelist [lrange $filelist [expr ($A-1)*$nFile] [expr $A*$nFile-1]] 1155867bc4deSdan } 1156867bc4deSdan 1157867bc4deSdan foreach file $filelist { 1158897230ebSdan if {[file tail $file] == $file} { set file [file join $::testdir $file] } 1159632f0ed2Sdan 1160632f0ed2Sdan if {[info exists ::env(SQLITE_TEST_PATTERN_LIST)]} { 1161632f0ed2Sdan set ok 0 1162632f0ed2Sdan foreach p $::env(SQLITE_TEST_PATTERN_LIST) { 1163632f0ed2Sdan set p [string map {% *} $p] 1164632f0ed2Sdan if {[string match $p [file tail $file]]} {set ok 1 ; break} 1165632f0ed2Sdan } 1166632f0ed2Sdan if {!$ok} continue 1167632f0ed2Sdan } 1168632f0ed2Sdan 1169632f0ed2Sdan uplevel $options(-initialize) 1170897230ebSdan slave_test_file $file 11710626dfc3Sdan uplevel $options(-shutdown) 1172b1e1a0fdSdan unset -nocomplain ::G(perm:sqlite3_args) 117305accd22Sdan } 11740626dfc3Sdan 11750626dfc3Sdan unset ::G(perm:name) 1176d506de02Sdan unset ::G(perm:prefix) 11771ce1b4a7Sdan unset ::G(perm:dbconfig) 11787d0fa14cSdan unset ::G(perm:presql) 11790626dfc3Sdan} 11800626dfc3Sdan 11810626dfc3Sdanproc run_test_suite {name} { 11820626dfc3Sdan if {[info exists ::testspec($name)]==0} { 11830626dfc3Sdan error "No such test suite: $name" 11840626dfc3Sdan } 11850626dfc3Sdan uplevel run_tests $name $::testspec($name) 11860626dfc3Sdan} 11870626dfc3Sdan 11880626dfc3Sdanproc help {} { 1189e91a54e1Sdan puts "Usage: $::argv0 TESTSUITE ?TESTFILE?" 1190e91a54e1Sdan puts "" 1191e91a54e1Sdan puts "Available test-suites are:" 1192b1e1a0fdSdan 1193b1e1a0fdSdan set iPos 0 11940626dfc3Sdan foreach k $::testsuitelist { 1195b1e1a0fdSdan if {[info exists ::testspec($k)]} { 1196b1e1a0fdSdan switch $iPos { 1197b1e1a0fdSdan 0 { 1198e91a54e1Sdan puts "" 1199b1e1a0fdSdan puts -nonewline " [format %-30s $k]" 1200b1e1a0fdSdan } 1201b1e1a0fdSdan 1202b1e1a0fdSdan 1 { 1203b1e1a0fdSdan puts -nonewline [format %-30s $k] 1204b1e1a0fdSdan } 1205b1e1a0fdSdan 1206b1e1a0fdSdan 2 { 1207b1e1a0fdSdan puts -nonewline $k 12080626dfc3Sdan } 1209e91a54e1Sdan } 1210b1e1a0fdSdan 1211b1e1a0fdSdan set iPos [expr (($iPos+1) % 3)] 1212b1e1a0fdSdan } 1213b1e1a0fdSdan } 1214b1e1a0fdSdan puts "" 12150626dfc3Sdan exit -1 12160626dfc3Sdan} 12170626dfc3Sdan 1218a5809363Sdrhif {[file tail $argv0] == "permutations.test"} { 12190626dfc3Sdan proc main {argv} { 12200626dfc3Sdan if {[llength $argv]==0} { 12210626dfc3Sdan help 12220626dfc3Sdan } else { 1223b1e1a0fdSdan 1224b1e1a0fdSdan # See if the first argument is a named test-suite. 1225b1e1a0fdSdan # 1226a5809363Sdrh set suite [file tail [lindex $argv 0]] 1227b1e1a0fdSdan if {[info exists ::testspec($suite)]} { 1228b1e1a0fdSdan set S $::testspec($suite) 1229b1e1a0fdSdan set i 1 1230b1e1a0fdSdan } else { 1231a24df58fSdan set suite default 1232b1e1a0fdSdan set S [list] 1233b1e1a0fdSdan set i 0 1234b1e1a0fdSdan } 1235b1e1a0fdSdan 12360626dfc3Sdan set extra "" 1237b1e1a0fdSdan if {$i < [llength $argv] && [string range [lindex $argv $i] 0 0]!="-" } { 1238b1e1a0fdSdan set files [list] 1239b1e1a0fdSdan for {} {$i < [llength $argv]} {incr i} { 1240b1e1a0fdSdan set pattern [string map {% *} [lindex $argv $i]] 1241b1e1a0fdSdan if {[string range $pattern 0 0]=="-"} break 1242b1e1a0fdSdan foreach f $::alltests { 1243b1e1a0fdSdan set tail [file tail $f] 1244b1e1a0fdSdan if {[lsearch $files $f]<0 && [string match $pattern $tail]} { 1245b1e1a0fdSdan lappend files $f 1246b1e1a0fdSdan } 1247b1e1a0fdSdan } 1248b1e1a0fdSdan } 1249b1e1a0fdSdan set extra [list -files $files] 1250b1e1a0fdSdan } 1251b1e1a0fdSdan 1252a24df58fSdan eval [list run_tests $suite] $S $extra 12530626dfc3Sdan } 12540626dfc3Sdan } 12550626dfc3Sdan main $argv 12566caccc16Sdrh set argv {} 12571077e3f7Sdanielk1977 finish_test 12580626dfc3Sdan} 1259