xref: /sqlite-3.40.0/test/quick.test (revision 02b4e3b3)
1#
2#    May you do good and not evil.
3#    May you find forgiveness for yourself and forgive others.
4#    May you share freely, never taking more than you give.
5#
6#***********************************************************************
7# This file runs all tests.
8#
9# $Id: quick.test,v 1.93 2009/02/26 07:15:59 danielk1977 Exp $
10
11proc lshift {lvar} {
12  upvar $lvar l
13  set ret [lindex $l 0]
14  set l [lrange $l 1 end]
15  return $ret
16}
17while {[set arg [lshift argv]] != ""} {
18  switch -- $arg {
19    -sharedpagercache {
20      sqlite3_enable_shared_cache 1
21    }
22    -soak {
23       set SOAKTEST 1
24    }
25    -start {
26       set STARTAT "[lshift argv]*"
27    }
28    default {
29      set argv [linsert $argv 0 $arg]
30      break
31    }
32  }
33}
34
35set testdir [file dirname $argv0]
36source $testdir/tester.tcl
37rename finish_test really_finish_test
38proc finish_test {} {
39  catch {db close}
40  show_memstats
41}
42set ISQUICK 1
43
44set EXCLUDE {
45  all.test
46  async.test
47  async2.test
48  async3.test
49  backup_ioerr.test
50  corrupt.test
51  corruptC.test
52  crash.test
53  crash2.test
54  crash3.test
55  crash4.test
56  crash5.test
57  crash6.test
58  crash7.test
59  delete3.test
60  fts3.test
61  fuzz.test
62  fuzz3.test
63  fuzz_malloc.test
64  in2.test
65  loadext.test
66  memleak.test
67  misc7.test
68  misuse.test
69  mutex2.test
70  onefile.test
71  permutations.test
72  quick.test
73  savepoint4.test
74  savepoint6.test
75  select9.test
76  soak.test
77  speed1.test
78  speed1p.test
79  speed2.test
80  speed3.test
81  speed4.test
82  speed4p.test
83  sqllimits1.test
84  tkt2686.test
85  thread001.test
86  thread002.test
87  thread003.test
88  thread004.test
89  trans2.test
90  vacuum3.test
91
92  incrvacuum_ioerr.test
93  autovacuum_crash.test
94  btree8.test
95  shared_err.test
96  vtab_err.test
97  veryquick.test
98  mallocAll.test
99}
100
101if {[sqlite3 -has-codec]} {
102  # lappend EXCLUDE \
103  #  conflict.test
104}
105
106
107# Files to include in the test.  If this list is empty then everything
108# that is not in the EXCLUDE list is run.
109#
110set INCLUDE {
111}
112
113foreach testfile [lsort -dictionary [glob $testdir/*.test]] {
114  # If this is "veryquick.test", do not run any of the malloc or
115  # IO error simulations.
116  if {[info exists ISVERYQUICK] && (
117    [string match *malloc* $testfile] || [string match *ioerr* $testfile]
118  ) } {
119    continue
120  }
121
122  set tail [file tail $testfile]
123  if {[lsearch -exact $EXCLUDE $tail]>=0} continue
124  if {[llength $INCLUDE]>0 && [lsearch -exact $INCLUDE $tail]<0} continue
125  if {[info exists STARTAT] && [string match $STARTAT $tail]} {unset STARTAT}
126  if {[info exists STARTAT]} continue
127  source $testfile
128  catch {db close}
129  if {$sqlite_open_file_count>0} {
130    puts "$tail did not close all files: $sqlite_open_file_count"
131    incr nErr
132    lappend ::failList $tail
133    set sqlite_open_file_count 0
134  }
135}
136#set argv quick
137#source $testdir/permutations.test
138#set argv ""
139source $testdir/misuse.test
140
141set sqlite_open_file_count 0
142really_finish_test
143