1# 2015-05-11 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# 12# Quick tests for the sqldiff tool 13# 14set testdir [file dirname $argv0] 15source $testdir/tester.tcl 16 17set PROG [test_find_sqldiff] 18 19db close 20forcedelete test.db test2.db 21sqlite3 db test.db 22 23do_test sqldiff-1.0 { 24 db eval { 25 CREATE TABLE t1(a INTEGER PRIMARY KEY, b); 26 CREATE TABLE t2(a INT PRIMARY KEY, b) WITHOUT ROWID; 27 WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<100) 28 INSERT INTO t1(a,b) SELECT x, printf('abc-%d-xyz',x) FROM c; 29 INSERT INTO t2(a,b) SELECT a, b FROM t1; 30 } 31 db backup test2.db 32 db eval { 33 ATTACH 'test2.db' AS x2; 34 DELETE FROM x2.t1 WHERE a=49; 35 DELETE FROM x2.t2 WHERE a=48; 36 INSERT INTO x2.t1(a,b) VALUES(1234,'hello'); 37 INSERT INTO x2.t2(a,b) VALUES(50.5,'xyzzy'); 38 INSERT INTO x2.t2(a,b) VALUES(51.5,''); 39 INSERT INTO x2.t2(a,b) VALUES(52.5,''||X'0d0a'); 40 INSERT INTO x2.t2(a,b) VALUES(53.5,'one'||X'0a0d'); 41 INSERT INTO x2.t2(a,b) VALUES(54.5,'one'||X'0a'||'two'); 42 CREATE TABLE x2.t3(a,b,c); 43 INSERT INTO x2.t3 VALUES(111,222,333); 44 CREATE TABLE main.t4(x,y,z); 45 INSERT INTO t4 SELECT * FROM t3; 46 } 47 set line "exec $PROG test.db test2.db" 48 unset -nocomplain ::MSG 49 catch {eval $line} ::MSG 50} {0} 51do_test sqldiff-1.1 { 52 set ::MSG 53} {DELETE FROM t1 WHERE a=49; 54INSERT INTO t1(a,b) VALUES(1234,'hello'); 55DELETE FROM t2 WHERE a=48; 56INSERT INTO t2(a,b) VALUES(50.5,'xyzzy'); 57INSERT INTO t2(a,b) VALUES(51.5,''); 58INSERT INTO t2(a,b) VALUES(52.5,''||X'0d0a'); 59INSERT INTO t2(a,b) VALUES(53.5,'one'||X'0a0d'); 60INSERT INTO t2(a,b) VALUES(54.5,'one'||X'0a' 61||'two'); 62CREATE TABLE t3(a,b,c); 63INSERT INTO t3(rowid,a,b,c) VALUES(1,111,222,333); 64DROP TABLE t4;} 65 66finish_test 67