mirror of https://github.com/sqlite/sqlite
Enable more 'zipfile' tests on Win32.
FossilOrigin-Name: 49d2566c8e7d0df37494ee001fc6eae5f47f95e16f6a575f2d8d6777b62e6068
This commit is contained in:
parent
3c6de3266e
commit
b5a4a7053b
14
manifest
14
manifest
|
@ -1,5 +1,5 @@
|
||||||
C Make\sa\scouple\stests\sless\ssensitive\sto\stiming.
|
C Enable\smore\s'zipfile'\stests\son\sWin32.
|
||||||
D 2018-03-16T23:54:12.517
|
D 2018-03-16T23:54:26.457
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F Makefile.in 7016fc56c6b9bfe5daac4f34be8be38d8c0b5fab79ccbfb764d3b23bf1c6fff3
|
F Makefile.in 7016fc56c6b9bfe5daac4f34be8be38d8c0b5fab79ccbfb764d3b23bf1c6fff3
|
||||||
|
@ -1611,8 +1611,8 @@ F test/wordcount.c cb589cec469a1d90add05b1f8cee75c7210338d87a5afd65260ed5c0f4bbf
|
||||||
F test/writecrash.test f1da7f7adfe8d7f09ea79b42e5ca6dcc41102f27f8e334ad71539501ddd910cc
|
F test/writecrash.test f1da7f7adfe8d7f09ea79b42e5ca6dcc41102f27f8e334ad71539501ddd910cc
|
||||||
F test/zeroblob.test 3857870fe681b8185654414a9bccfde80b62a0fa
|
F test/zeroblob.test 3857870fe681b8185654414a9bccfde80b62a0fa
|
||||||
F test/zerodamage.test 9c41628db7e8d9e8a0181e59ea5f189df311a9f6ce99cc376dc461f66db6f8dc
|
F test/zerodamage.test 9c41628db7e8d9e8a0181e59ea5f189df311a9f6ce99cc376dc461f66db6f8dc
|
||||||
F test/zipfile.test fd865048725bb138ef3024cee704cd9da9250de4b6f78ad27ff8e7e6d46caefe
|
F test/zipfile.test dbad090b506b9da943400e285e6723a53bdb3591aaa8f3138df892eae6ccb243
|
||||||
F test/zipfile2.test 67d5f08a202796d4b7a71dfa4b8dcb74aa7a9d1f42c5f17bedff9855c1ba7aa5
|
F test/zipfile2.test fb68e022bf759060be041e3a1e3f955e21f3fa02a7fa1dcba0a01c88ab6deee6
|
||||||
F test/zipfilefault.test 44d4d7a7f7cca7521d569d7f71026b241d65a6b1757aa409c1a168827edbbc2c
|
F test/zipfilefault.test 44d4d7a7f7cca7521d569d7f71026b241d65a6b1757aa409c1a168827edbbc2c
|
||||||
F tool/GetFile.cs a15e08acb5dd7539b75ba23501581d7c2b462cb5
|
F tool/GetFile.cs a15e08acb5dd7539b75ba23501581d7c2b462cb5
|
||||||
F tool/GetTclKit.bat 8995df40c4209808b31f24de0b58f90930239a234f7591e3675d45bfbb990c5d
|
F tool/GetTclKit.bat 8995df40c4209808b31f24de0b58f90930239a234f7591e3675d45bfbb990c5d
|
||||||
|
@ -1712,7 +1712,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 56d11c250961790579a7aeee65e83fdb29462ae37f9de93da13fbd890fc0a01d
|
P bc2af8e0aa28d8d10612ab9464c008a970348b4720bb34d0c546d341e2bc09e0
|
||||||
R f872f68a9ea8d96d06313f821ac22957
|
R 7a8f6991afcb70824bbbe5f92582fa58
|
||||||
U mistachkin
|
U mistachkin
|
||||||
Z 1ea7ec4ed43cecff4ee6039be766ced0
|
Z 9baa572ff0bb0d7155a0ba438dc60407
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
bc2af8e0aa28d8d10612ab9464c008a970348b4720bb34d0c546d341e2bc09e0
|
49d2566c8e7d0df37494ee001fc6eae5f47f95e16f6a575f2d8d6777b62e6068
|
|
@ -10,6 +10,8 @@
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
#
|
#
|
||||||
|
|
||||||
|
package require Tcl 8.6
|
||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
source $testdir/tester.tcl
|
source $testdir/tester.tcl
|
||||||
set testprefix zipfile
|
set testprefix zipfile
|
||||||
|
@ -21,6 +23,10 @@ if {[catch {load_static_extension db zipfile} error]} {
|
||||||
puts "Skipping zipfile tests, hit load error: $error"
|
puts "Skipping zipfile tests, hit load error: $error"
|
||||||
finish_test; return
|
finish_test; return
|
||||||
}
|
}
|
||||||
|
if {[catch {load_static_extension db fileio} error]} {
|
||||||
|
puts "Skipping zipfile tests, hit load error: $error"
|
||||||
|
finish_test; return
|
||||||
|
}
|
||||||
|
|
||||||
proc readfile {f} {
|
proc readfile {f} {
|
||||||
set fd [open $f]
|
set fd [open $f]
|
||||||
|
@ -30,16 +36,39 @@ proc readfile {f} {
|
||||||
set data
|
set data
|
||||||
}
|
}
|
||||||
|
|
||||||
if {$::tcl_platform(platform)=="unix" && [catch {exec unzip}]==0} {
|
unset -nocomplain ::UNZIP
|
||||||
set ::UNZIP 1
|
|
||||||
load_static_extension db fileio
|
if {[catch {exec unzip} msg]==0 && \
|
||||||
|
[regexp -line {^UnZip \d+\.\d+ .*? Info-ZIP\.} $msg]} {
|
||||||
|
set ::UNZIP unzip
|
||||||
|
proc fix_stat_mode {name mode} {
|
||||||
|
if {$::tcl_platform(platform)=="windows"} {
|
||||||
|
#
|
||||||
|
# NOTE: Set or unset the write bits of the file permissions
|
||||||
|
# based on the read-only attribute because the Win32
|
||||||
|
# version of UnZip does this.
|
||||||
|
#
|
||||||
|
set writebits 0x12; # 0o22
|
||||||
|
set result $mode
|
||||||
|
if {[file attributes $name -readonly]} {
|
||||||
|
set result [expr {$result | $writebits}]
|
||||||
|
} else {
|
||||||
|
set result [expr {$result & ~$writebits}]
|
||||||
|
}
|
||||||
|
return $result
|
||||||
|
} else {
|
||||||
|
return $mode
|
||||||
|
}
|
||||||
|
}
|
||||||
proc do_unzip {file} {
|
proc do_unzip {file} {
|
||||||
forcedelete test_unzip
|
forcedelete test_unzip
|
||||||
file mkdir test_unzip
|
file mkdir test_unzip
|
||||||
exec unzip -d test_unzip $file
|
exec $::UNZIP -d test_unzip $file
|
||||||
|
|
||||||
set res [db eval {
|
db func modefix fix_stat_mode
|
||||||
SELECT replace(name,'test_unzip/',''),mode,mtime,data
|
|
||||||
|
set res [db eval {
|
||||||
|
SELECT replace(name,'test_unzip/',''),modefix(name,mode),mtime,data
|
||||||
FROM fsdir('test_unzip')
|
FROM fsdir('test_unzip')
|
||||||
WHERE name!='test_unzip'
|
WHERE name!='test_unzip'
|
||||||
ORDER BY name
|
ORDER BY name
|
||||||
|
@ -108,7 +137,6 @@ proc do_zipfile_blob_test {tn file} {
|
||||||
# the same results as in (1).
|
# the same results as in (1).
|
||||||
#
|
#
|
||||||
proc do_unzip_test {tn file} {
|
proc do_unzip_test {tn file} {
|
||||||
if {[info vars ::UNZIP]==""} { return }
|
|
||||||
db func sss strip_slash
|
db func sss strip_slash
|
||||||
|
|
||||||
db eval {
|
db eval {
|
||||||
|
@ -247,65 +275,73 @@ do_execsql_test 1.6.2 {
|
||||||
i.txt 33188 4 zxcvb 0
|
i.txt 33188 4 zxcvb 0
|
||||||
}
|
}
|
||||||
|
|
||||||
do_execsql_test 1.6.3 {
|
if {$::tcl_platform(platform)=="unix"} {
|
||||||
UPDATE zz SET mode='-rw-r--r-x' WHERE name='h.txt';
|
set modes -rw-r--r-x
|
||||||
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
set perms 33189
|
||||||
} {
|
} else {
|
||||||
f.txt 33188 1000000000 abcde 0
|
set modes -rw-r--r--; # no execute bits on Win32
|
||||||
h.txt 33189 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
set perms 33188
|
||||||
i.txt 33188 4 zxcvb 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
do_execsql_test 1.6.3 {
|
||||||
|
UPDATE zz SET mode=$modes WHERE name='h.txt';
|
||||||
|
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
||||||
|
} [string map [list %perms% $perms] {
|
||||||
|
f.txt 33188 1000000000 abcde 0
|
||||||
|
h.txt %perms% 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
||||||
|
i.txt 33188 4 zxcvb 0
|
||||||
|
}]
|
||||||
do_zip_tests 1.6.3a test.zip
|
do_zip_tests 1.6.3a test.zip
|
||||||
|
|
||||||
do_execsql_test 1.6.4 {
|
do_execsql_test 1.6.4 {
|
||||||
UPDATE zz SET name = 'blue.txt' WHERE name='f.txt';
|
UPDATE zz SET name = 'blue.txt' WHERE name='f.txt';
|
||||||
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
||||||
} {
|
} [string map [list %perms% $perms] {
|
||||||
blue.txt 33188 1000000000 abcde 0
|
blue.txt 33188 1000000000 abcde 0
|
||||||
h.txt 33189 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
h.txt %perms% 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
||||||
i.txt 33188 4 zxcvb 0
|
i.txt 33188 4 zxcvb 0
|
||||||
}
|
}]
|
||||||
do_zip_tests 1.6.4a test.zip
|
do_zip_tests 1.6.4a test.zip
|
||||||
|
|
||||||
do_execsql_test 1.6.5 {
|
do_execsql_test 1.6.5 {
|
||||||
UPDATE zz SET data = 'edcba' WHERE name='blue.txt';
|
UPDATE zz SET data = 'edcba' WHERE name='blue.txt';
|
||||||
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
||||||
} {
|
} [string map [list %perms% $perms] {
|
||||||
blue.txt 33188 1000000000 edcba 0
|
blue.txt 33188 1000000000 edcba 0
|
||||||
h.txt 33189 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
h.txt %perms% 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
||||||
i.txt 33188 4 zxcvb 0
|
i.txt 33188 4 zxcvb 0
|
||||||
}
|
}]
|
||||||
|
|
||||||
do_execsql_test 1.6.6 {
|
do_execsql_test 1.6.6 {
|
||||||
UPDATE zz SET mode=NULL, data = NULL WHERE name='blue.txt';
|
UPDATE zz SET mode=NULL, data = NULL WHERE name='blue.txt';
|
||||||
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
||||||
} {
|
} [string map [list %perms% $perms] {
|
||||||
blue.txt/ 16877 1000000000 {} 0
|
blue.txt/ 16877 1000000000 {} 0
|
||||||
h.txt 33189 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
h.txt %perms% 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
||||||
i.txt 33188 4 zxcvb 0
|
i.txt 33188 4 zxcvb 0
|
||||||
}
|
}]
|
||||||
|
|
||||||
do_catchsql_test 1.6.7 {
|
do_catchsql_test 1.6.7 {
|
||||||
UPDATE zz SET data=NULL WHERE name='i.txt'
|
UPDATE zz SET data=NULL WHERE name='i.txt'
|
||||||
} {1 {zipfile: mode does not match data}}
|
} {1 {zipfile: mode does not match data}}
|
||||||
do_execsql_test 1.6.8 {
|
do_execsql_test 1.6.8 {
|
||||||
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
SELECT name, mode, mtime, data, method FROM zipfile('test.zip');
|
||||||
} {
|
} [string map [list %perms% $perms] {
|
||||||
blue.txt/ 16877 1000000000 {} 0
|
blue.txt/ 16877 1000000000 {} 0
|
||||||
h.txt 33189 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
h.txt %perms% 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
||||||
i.txt 33188 4 zxcvb 0
|
i.txt 33188 4 zxcvb 0
|
||||||
}
|
}]
|
||||||
|
|
||||||
do_execsql_test 1.6.8 {
|
|
||||||
UPDATE zz SET data = '' WHERE name='i.txt';
|
|
||||||
SELECT name,mode,mtime,data,method from zipfile('test.zip');
|
|
||||||
} {
|
|
||||||
blue.txt/ 16877 1000000000 {} 0
|
|
||||||
h.txt 33189 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
|
||||||
i.txt 33188 4 {} 0
|
|
||||||
}
|
|
||||||
|
|
||||||
do_execsql_test 1.6.9 {
|
do_execsql_test 1.6.9 {
|
||||||
|
UPDATE zz SET data = '' WHERE name='i.txt';
|
||||||
|
SELECT name,mode,mtime,data,method from zipfile('test.zip');
|
||||||
|
} [string map [list %perms% $perms] {
|
||||||
|
blue.txt/ 16877 1000000000 {} 0
|
||||||
|
h.txt %perms% 1000000004 aaaaaaaaaabbbbbbbbbb 8
|
||||||
|
i.txt 33188 4 {} 0
|
||||||
|
}]
|
||||||
|
|
||||||
|
do_execsql_test 1.6.10 {
|
||||||
SELECT a.name, a.data
|
SELECT a.name, a.data
|
||||||
FROM zz AS a, zz AS b
|
FROM zz AS a, zz AS b
|
||||||
WHERE a.name=+b.name AND +a.mode=b.mode
|
WHERE a.name=+b.name AND +a.mode=b.mode
|
||||||
|
@ -315,7 +351,7 @@ do_execsql_test 1.6.9 {
|
||||||
i.txt {}
|
i.txt {}
|
||||||
}
|
}
|
||||||
|
|
||||||
do_execsql_test 1.6.10 {
|
do_execsql_test 1.6.11 {
|
||||||
SELECT name, data FROM zz WHERE name LIKE '%txt'
|
SELECT name, data FROM zz WHERE name LIKE '%txt'
|
||||||
} {
|
} {
|
||||||
h.txt aaaaaaaaaabbbbbbbbbb
|
h.txt aaaaaaaaaabbbbbbbbbb
|
||||||
|
@ -360,13 +396,18 @@ do_execsql_test 2.4 {
|
||||||
}
|
}
|
||||||
do_zip_tests 2.4a test.zip
|
do_zip_tests 2.4a test.zip
|
||||||
|
|
||||||
# If on unix, check that the [unzip] utility can unpack our archive.
|
# Check that the [unzip] utility can unpack our archive.
|
||||||
#
|
#
|
||||||
if {$::tcl_platform(platform)=="unix"} {
|
if {[info exists ::UNZIP]} {
|
||||||
do_test 2.5.1 {
|
do_test 2.5.1 {
|
||||||
forcedelete dirname
|
forcedelete dirname
|
||||||
forcedelete dirname2
|
forcedelete dirname2
|
||||||
set rc [catch { exec unzip test.zip > /dev/null } msg]
|
if {$::tcl_platform(platform)=="unix"} {
|
||||||
|
set null /dev/null
|
||||||
|
} else {
|
||||||
|
set null NUL
|
||||||
|
}
|
||||||
|
set rc [catch { exec $::UNZIP test.zip > $null } msg]
|
||||||
list $rc $msg
|
list $rc $msg
|
||||||
} {0 {}}
|
} {0 {}}
|
||||||
do_test 2.5.2 { file isdir dirname3 } 1
|
do_test 2.5.2 { file isdir dirname3 } 1
|
||||||
|
@ -384,6 +425,7 @@ if {$::tcl_platform(platform)=="unix"} {
|
||||||
reset_db
|
reset_db
|
||||||
forcedelete test.zip
|
forcedelete test.zip
|
||||||
load_static_extension db zipfile
|
load_static_extension db zipfile
|
||||||
|
load_static_extension db fileio
|
||||||
|
|
||||||
do_execsql_test 3.0 {
|
do_execsql_test 3.0 {
|
||||||
CREATE VIRTUAL TABLE temp.x1 USING zipfile('test.zip');
|
CREATE VIRTUAL TABLE temp.x1 USING zipfile('test.zip');
|
||||||
|
@ -453,7 +495,7 @@ do_catchsql_test 4.7 {
|
||||||
SELECT zipfile(name,data) FROM c
|
SELECT zipfile(name,data) FROM c
|
||||||
} {1 {first argument to zipfile() must be non-NULL}}
|
} {1 {first argument to zipfile() must be non-NULL}}
|
||||||
|
|
||||||
do_catchsql_test 4.7 {
|
do_catchsql_test 4.8 {
|
||||||
WITH c(name,data,method) AS (
|
WITH c(name,data,method) AS (
|
||||||
SELECT 'a.txt', 'abc', 0
|
SELECT 'a.txt', 'abc', 0
|
||||||
UNION SELECT 'b.txt', 'def', 8
|
UNION SELECT 'b.txt', 'def', 8
|
||||||
|
@ -462,7 +504,7 @@ do_catchsql_test 4.7 {
|
||||||
SELECT zipfile(name,NULL,NULL,data,method) FROM c
|
SELECT zipfile(name,NULL,NULL,data,method) FROM c
|
||||||
} {1 {illegal method value: 16}}
|
} {1 {illegal method value: 16}}
|
||||||
|
|
||||||
do_catchsql_test 4.8 {
|
do_catchsql_test 4.9 {
|
||||||
WITH c(name,data) AS (
|
WITH c(name,data) AS (
|
||||||
SELECT 'a.txt', 'abc'
|
SELECT 'a.txt', 'abc'
|
||||||
UNION SELECT 'b.txt', 'def'
|
UNION SELECT 'b.txt', 'def'
|
||||||
|
@ -485,9 +527,8 @@ do_execsql_test 5.0 {
|
||||||
a.txt 946684800 abc
|
a.txt 946684800 abc
|
||||||
}
|
}
|
||||||
|
|
||||||
if {[info vars ::UNZIP]!=""} {
|
if {[info exists ::UNZIP]} {
|
||||||
ifcapable datetime {
|
ifcapable datetime {
|
||||||
load_static_extension db fileio
|
|
||||||
forcedelete test1.zip test2.zip
|
forcedelete test1.zip test2.zip
|
||||||
do_test 6.0 {
|
do_test 6.0 {
|
||||||
execsql {
|
execsql {
|
||||||
|
@ -502,7 +543,7 @@ ifcapable datetime {
|
||||||
}
|
}
|
||||||
forcedelete test_unzip
|
forcedelete test_unzip
|
||||||
file mkdir test_unzip
|
file mkdir test_unzip
|
||||||
exec unzip -d test_unzip test1.zip
|
exec $::UNZIP -d test_unzip test1.zip
|
||||||
|
|
||||||
db eval {
|
db eval {
|
||||||
SELECT name, strftime('%s', mtime, 'unixepoch', 'localtime')
|
SELECT name, strftime('%s', mtime, 'unixepoch', 'localtime')
|
||||||
|
@ -534,7 +575,7 @@ ifcapable datetime {
|
||||||
do_test 6.2 {
|
do_test 6.2 {
|
||||||
forcedelete test_unzip
|
forcedelete test_unzip
|
||||||
file mkdir test_unzip
|
file mkdir test_unzip
|
||||||
exec unzip -d test_unzip test2.zip
|
exec $::UNZIP -d test_unzip test2.zip
|
||||||
|
|
||||||
db eval {
|
db eval {
|
||||||
SELECT name, mtime
|
SELECT name, mtime
|
||||||
|
@ -652,6 +693,8 @@ catch {db close}
|
||||||
forcedelete test.zip test.db
|
forcedelete test.zip test.db
|
||||||
sqlite3 db :memory:
|
sqlite3 db :memory:
|
||||||
load_static_extension db zipfile
|
load_static_extension db zipfile
|
||||||
|
load_static_extension db fileio
|
||||||
|
|
||||||
do_execsql_test 10.0 {
|
do_execsql_test 10.0 {
|
||||||
CREATE VIRTUAL TABLE z USING zipfile('test.zip');
|
CREATE VIRTUAL TABLE z USING zipfile('test.zip');
|
||||||
} {}
|
} {}
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
#***********************************************************************
|
#***********************************************************************
|
||||||
#
|
#
|
||||||
|
|
||||||
|
package require Tcl 8.6
|
||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
source $testdir/tester.tcl
|
source $testdir/tester.tcl
|
||||||
set testprefix zipfile2
|
set testprefix zipfile2
|
||||||
|
|
Loading…
Reference in New Issue