diff options
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/memleak.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/memleak.test | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/memleak.test b/libraries/sqlite/unix/sqlite-3.5.1/test/memleak.test new file mode 100644 index 0000000..f4aaf27 --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/memleak.test | |||
@@ -0,0 +1,98 @@ | |||
1 | # 2001 September 15 | ||
2 | # | ||
3 | # The author disclaims copyright to this source code. In place of | ||
4 | # a legal notice, here is a blessing: | ||
5 | # | ||
6 | # May you do good and not evil. | ||
7 | # May you find forgiveness for yourself and forgive others. | ||
8 | # May you share freely, never taking more than you give. | ||
9 | # | ||
10 | #*********************************************************************** | ||
11 | # This file runs all tests. | ||
12 | # | ||
13 | # $Id: memleak.test,v 1.10 2007/03/30 17:17:52 drh Exp $ | ||
14 | |||
15 | set testdir [file dirname $argv0] | ||
16 | source $testdir/tester.tcl | ||
17 | rename finish_test memleak_finish_test | ||
18 | proc finish_test {} { | ||
19 | catch {db close} | ||
20 | memleak_check | ||
21 | } | ||
22 | |||
23 | if {[file exists ./sqlite_test_count]} { | ||
24 | set COUNT [exec cat ./sqlite_test_count] | ||
25 | } else { | ||
26 | set COUNT 3 | ||
27 | } | ||
28 | |||
29 | # LeakList will hold a list of the number of unfreed mallocs after | ||
30 | # each round of the test. This number should be constant. If it | ||
31 | # grows, it may mean there is a memory leak in the library. | ||
32 | # | ||
33 | set LeakList {} | ||
34 | |||
35 | set EXCLUDE { | ||
36 | all.test | ||
37 | quick.test | ||
38 | misuse.test | ||
39 | memleak.test | ||
40 | btree2.test | ||
41 | async.test | ||
42 | async2.test | ||
43 | trans.test | ||
44 | crash.test | ||
45 | autovacuum_crash.test | ||
46 | } | ||
47 | # Test files btree2.test and btree4.test don't work if the | ||
48 | # SQLITE_DEFAULT_AUTOVACUUM macro is defined to true (because they depend | ||
49 | # on tables being allocated starting at page 2). | ||
50 | # | ||
51 | ifcapable default_autovacuum { | ||
52 | lappend EXCLUDE btree2.test | ||
53 | lappend EXCLUDE btree4.test | ||
54 | } | ||
55 | |||
56 | if {[sqlite3 -has-codec]} { | ||
57 | # lappend EXCLUDE | ||
58 | } | ||
59 | if {[llength $argv]>0} { | ||
60 | set FILELIST $argv | ||
61 | set argv {} | ||
62 | } else { | ||
63 | set FILELIST [lsort -dictionary [glob $testdir/*.test]] | ||
64 | } | ||
65 | |||
66 | foreach testfile $FILELIST { | ||
67 | set tail [file tail $testfile] | ||
68 | if {[lsearch -exact $EXCLUDE $tail]>=0} continue | ||
69 | set LeakList {} | ||
70 | for {set COUNTER 0} {$COUNTER<$COUNT} {incr COUNTER} { | ||
71 | source $testfile | ||
72 | if {[info exists Leak]} { | ||
73 | lappend LeakList $Leak | ||
74 | } | ||
75 | } | ||
76 | if {$LeakList!=""} { | ||
77 | puts -nonewline memory-leak-test-$tail... | ||
78 | incr ::nTest | ||
79 | foreach x $LeakList { | ||
80 | if {$x!=[lindex $LeakList 0]} { | ||
81 | puts " failed! ($LeakList)" | ||
82 | incr ::nErr | ||
83 | lappend ::failList memory-leak-test-$tail | ||
84 | break | ||
85 | } | ||
86 | } | ||
87 | puts " Ok" | ||
88 | } | ||
89 | } | ||
90 | memleak_finish_test | ||
91 | |||
92 | # Run the malloc tests and the misuse test after memory leak detection. | ||
93 | # Both tests leak memory. | ||
94 | # | ||
95 | #catch {source $testdir/misuse.test} | ||
96 | #catch {source $testdir/malloc.test} | ||
97 | |||
98 | memleak_finish_test | ||