| Index: third_party/sqlite/src/test/shell7.test
|
| diff --git a/third_party/sqlite/src/test/shell7.test b/third_party/sqlite/src/test/shell7.test
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a06288514029bd2d8fed51312aa9885f68a2da72
|
| --- /dev/null
|
| +++ b/third_party/sqlite/src/test/shell7.test
|
| @@ -0,0 +1,54 @@
|
| +# 2016 December 17
|
| +#
|
| +# The author disclaims copyright to this source code. In place of
|
| +# a legal notice, here is a blessing:
|
| +#
|
| +# May you do good and not evil.
|
| +# May you find forgiveness for yourself and forgive others.
|
| +# May you share freely, never taking more than you give.
|
| +#
|
| +#***********************************************************************
|
| +#
|
| +# Test the readfile() function built into the shell tool. Specifically,
|
| +# that it does not truncate the blob read at the first embedded 0x00
|
| +# byte.
|
| +#
|
| +
|
| +set testdir [file dirname $argv0]
|
| +source $testdir/tester.tcl
|
| +set testprefix shell7
|
| +set CLI [test_find_cli]
|
| +
|
| +
|
| +do_execsql_test 1.0 {
|
| + CREATE TABLE f1(tn INTEGER PRIMARY KEY, x BLOB);
|
| + CREATE TABLE f2(tn INTEGER PRIMARY KEY, x BLOB);
|
| +
|
| + INSERT INTO f1 VALUES(1, X'01020304');
|
| + INSERT INTO f1 VALUES(2, X'01000304');
|
| + INSERT INTO f1 VALUES(3, randomblob(200));
|
| +}
|
| +
|
| +foreach {tn l x} [db eval { SELECT tn, length(x) AS l, x FROM f1 }] {
|
| + forcedelete shell7_test.bin
|
| + set fd [open shell7_test.bin w]
|
| + fconfigure $fd -encoding binary
|
| + fconfigure $fd -translation binary
|
| + puts -nonewline $fd $x
|
| + close $fd
|
| +
|
| + do_test 1.$tn.1 { file size shell7_test.bin } $l
|
| + do_test 1.$tn.2 {
|
| + catchcmd test.db "INSERT INTO f2 VALUES($tn, readfile('shell7_test.bin'));"
|
| + } {0 {}}
|
| +
|
| + do_execsql_test 1.$tn.3 {
|
| + SELECT (SELECT x FROM f1 WHERE tn=1)==(SELECT x FROM f2 WHERE tn=1)
|
| + } {1}
|
| +}
|
| +
|
| +
|
| +
|
| +finish_test
|
| +
|
| +
|
|
|