| Index: third_party/sqlite/src/test/quota.test | 
| diff --git a/third_party/sqlite/src/test/quota.test b/third_party/sqlite/src/test/quota.test | 
| index 2cf7628004a941bc5984770ae971c7c5b6d18ad0..f9655fb8c0ad0e40c54d246318f4acfabcd16393 100644 | 
| --- a/third_party/sqlite/src/test/quota.test | 
| +++ b/third_party/sqlite/src/test/quota.test | 
| @@ -12,8 +12,17 @@ | 
|  | 
| set testdir [file dirname $argv0] | 
| source $testdir/tester.tcl | 
| + | 
| +# If SQLITE_CURDIR is not defined, omit this file. | 
| +ifcapable !curdir { | 
| +  finish_test | 
| +  return | 
| +} | 
| + | 
| source $testdir/malloc_common.tcl | 
|  | 
| +unset -nocomplain defaultVfs | 
| +set defaultVfs [file_control_vfsname db] | 
| db close | 
|  | 
| do_test quota-1.1 { sqlite3_quota_initialize nosuchvfs 1 } {SQLITE_ERROR} | 
| @@ -48,6 +57,7 @@ do_test quota-1.8 { sqlite3_quota_shutdown }               {SQLITE_OK} | 
| # | 
| sqlite3_quota_initialize "" 1 | 
|  | 
| +unset -nocomplain quota_request_ok | 
| proc quota_check {filename limitvar size} { | 
| upvar $limitvar limit | 
|  | 
| @@ -73,6 +83,9 @@ do_test quota-2.1.2 { | 
| } | 
| set ::quota | 
| } {} | 
| +do_test quota-2.1.2.1 { | 
| +  file_control_vfsname db | 
| +} quota/$defaultVfs | 
| do_test quota-2.1.3 { file size test.db } {4096} | 
| do_test quota-2.1.4 { | 
| catchsql { INSERT INTO t1 VALUES(3, randomblob(1100)) } | 
| @@ -123,7 +136,7 @@ proc quota_check {filename limitvar size} { | 
| } | 
|  | 
| do_test quota-3.1.1 { | 
| -  file delete -force test.db | 
| +  forcedelete test.db | 
| sqlite3_quota_initialize "" 1 | 
| sqlite3_quota_set *test.db 4096 quota_check | 
| } {SQLITE_OK} | 
| @@ -158,7 +171,7 @@ do_test quota-3.1.6 { | 
| } {SQLITE_OK} | 
|  | 
| do_test quota-3.2.1 { | 
| -  file delete force test.db test2.db | 
| +  delete_file force test.db test2.db | 
|  | 
| sqlite3_quota_set * 4096 {} | 
| sqlite3 db1a test.db | 
| @@ -202,6 +215,9 @@ do_test quota-3.2.9 { | 
| set ::quota [list] | 
| proc quota_callback {file limitvar size} { | 
| upvar $limitvar limit | 
| +  if {$::tcl_platform(platform)=="windows"} { | 
| +    set file [ lindex [string map {\\ \/} $file] 0 ] | 
| +  } | 
| lappend ::quota $file $size | 
| set limit 0 | 
| } | 
| @@ -212,7 +228,7 @@ do_test quota-3.3.1 { | 
| execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2a | 
| execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2b | 
| set ::quota | 
| -} [list [file join [pwd] test.db] 5120] | 
| +} [list [file join [get_pwd] test.db] 5120] | 
|  | 
| do_test quota-3.2.X { | 
| foreach db {db1a db2a db2b db1b} { catch { $db close } } | 
| @@ -220,7 +236,7 @@ do_test quota-3.2.X { | 
| } {SQLITE_OK} | 
|  | 
| #------------------------------------------------------------------------- | 
| -# Quotas are deleted when unused and when there limit is set to zero | 
| +# Quotas are deleted when unused and when their limit is set to zero | 
| # | 
|  | 
| # Return a list of all currently defined quotas.  Each quota is identified | 
| @@ -232,6 +248,13 @@ proc quota_list {} { | 
| } | 
| return [lsort $allq] | 
| } | 
| +proc quota_size {name} { | 
| +  set allq {} | 
| +  foreach q [sqlite3_quota_dump] { | 
| +    if {[lindex $q 0]==$name} {return [lindex $q 2]} | 
| +  } | 
| +  return 0 | 
| +} | 
|  | 
| do_test quota-4.1.1 { | 
| sqlite3_quota_set *test.db 0 {} | 
| @@ -254,7 +277,7 @@ do_test quota-4.1.5 { | 
| quota_list | 
| } {*test2.db} | 
| do_test quota-4.1.6 { | 
| -  file delete -force test2.db test2.db-journal test2.db-wal | 
| +  forcedelete test2.db test2.db-journal test2.db-wal | 
| sqlite3 db test2.db | 
| db eval {CREATE TABLE t2(x); INSERT INTO t2 VALUES('tab-t2');} | 
| quota_list | 
| @@ -326,11 +349,121 @@ do_test quota-4.3.1 { | 
| quota_list | 
| } {} | 
|  | 
| +unset -nocomplain quotagroup | 
| +if {$tcl_platform(platform)=="windows"} { | 
| +  set quotagroup *\\quota-test-A?.db | 
| +} else { | 
| +  set quotagroup */quota-test-A?.db | 
| +} | 
| +foreach file [glob -nocomplain quota-test-A*] { | 
| +  forcedelete $file | 
| +} | 
| do_test quota-4.4.1 { | 
| +  set ::quota {} | 
| +  sqlite3_quota_set $::quotagroup 10000 quota_callback | 
| +  forcedelete ./quota-test-A1.db ./quota-test-A2.db | 
| +  sqlite3 db ./quota-test-A1.db | 
| +  db eval { | 
| +     CREATE TABLE t1(x); | 
| +     INSERT INTO t1 VALUES(randomblob(5000)); | 
| +  } | 
| +  quota_list | 
| +} [list $quotagroup] | 
| +do_test quota-4.4.2 { | 
| +  expr {$::quota==""} | 
| +} {1} | 
| +do_test quota-4.4.3 { | 
| +  db close | 
| +  sqlite3 db ./quota-test-A2.db | 
| +  db eval { | 
| +     CREATE TABLE t1(x); | 
| +     INSERT INTO t1 VALUES(randomblob(5000)); | 
| +  } | 
| +  quota_list | 
| +} [list $quotagroup] | 
| +do_test quota-4.4.4 { | 
| +  expr {$::quota!=""} | 
| +} {1} | 
| +do_test quota-4.4.5 { | 
| +  db close | 
| +  sqlite3_quota_set $::quotagroup 0 {} | 
| +  sqlite3_quota_dump | 
| +} {} | 
| +do_test quota-4.4.6 { | 
| +  sqlite3_quota_set $quotagroup 10000 quota_callback | 
| +  sqlite3 db quota-test-A1.db | 
| +  db eval {SELECT count(*) FROM sqlite_master} | 
| +  quota_size $quotagroup | 
| +} [file size quota-test-A1.db] | 
| +do_test quota-4.4.7 { | 
| +  sqlite3_quota_file quota-test-A2.db | 
| +  quota_size $::quotagroup | 
| +} [expr {[file size quota-test-A1.db]+[file size quota-test-A2.db]}] | 
| + | 
| +unset -nocomplain quotagroup | 
| +if {$tcl_platform(platform)=="windows"} { | 
| +  set quotagroup *\\quota-test-B* | 
| +} else { | 
| +  set quotagroup */quota-test-B* | 
| +} | 
| +foreach file [glob -nocomplain quota-test-B*] { | 
| +  forcedelete $file | 
| +} | 
| +do_test quota-4.5.1 { | 
| +  sqlite3_quota_set $::quotagroup 100000 quota_callback | 
| +  quota_size $::quotagroup | 
| +} {0} | 
| +do_test quota-4.5.2 { | 
| +  sqlite3_quota_file quota-test-B1.txt | 
| +  quota_size $::quotagroup | 
| +} {0} | 
| +proc add_to_file {name n} { | 
| +  set out [open $name a] | 
| +  fconfigure $out -translation binary | 
| +  puts -nonewline $out [string repeat x $n] | 
| +  close $out | 
| +} | 
| +do_test quota-4.5.3 { | 
| +  add_to_file quota-test-B1.txt 123 | 
| +  sqlite3_quota_file quota-test-B1.txt | 
| +  quota_size $::quotagroup | 
| +} {123} | 
| +do_test quota-4.5.4 { | 
| +  add_to_file quota-test-B2.txt 234 | 
| +  sqlite3_quota_file quota-test-B2.txt | 
| +  quota_size $::quotagroup | 
| +} {357} | 
| +do_test quota-4.5.5 { | 
| +  add_to_file quota-test-B1.txt 2000 | 
| +  sqlite3_quota_file quota-test-B1.txt | 
| +  quota_size $::quotagroup | 
| +} {2357} | 
| +do_test quota-4.5.6 { | 
| +  forcedelete quota-test-B1.txt | 
| +  sqlite3_quota_file quota-test-B1.txt | 
| +  quota_size $::quotagroup | 
| +} {234} | 
| +do_test quota-4.5.7 { | 
| +  forcedelete quota-test-B2.txt | 
| +  sqlite3_quota_file quota-test-B2.txt | 
| +  quota_size $::quotagroup | 
| +} {0} | 
| +do_test quota-4.5.8 { | 
| +  add_to_file quota-test-B3.txt 1234 | 
| +  sqlite3_quota_file quota-test-B3.txt | 
| +  quota_size $::quotagroup | 
| +} {1234} | 
| +do_test quota-4.5.9 { | 
| +  sqlite3_quota_set $quotagroup 0 {} | 
| +  quota_size $::quotagroup | 
| +} {0} | 
| + | 
| +do_test quota-4.9.1 { | 
| +  db close | 
| sqlite3_quota_set A 1000 quota_callback | 
| sqlite3_quota_shutdown | 
| } {SQLITE_OK} | 
| -do_test quota-4.4.2 { | 
| +do_test quota-4.9.2 { | 
| quota_list | 
| } {} | 
|  | 
| @@ -354,7 +487,7 @@ do_faultsim_test quota-5.2 -prep { | 
| } | 
|  | 
| catch { db close } | 
| -file delete -force test.db | 
| +forcedelete test.db | 
|  | 
| do_test quota-5.3.prep { | 
| sqlite3 db test.db | 
| @@ -374,7 +507,7 @@ do_faultsim_test quota-5.3 -prep { | 
|  | 
| do_test quota-5.4.1 { | 
| catch { db close } | 
| -  file delete -force test.db | 
| +  forcedelete test.db | 
| file mkdir test.db | 
| list [catch { sqlite3 db test.db } msg] $msg | 
| } {1 {unable to open database file}} | 
|  |