xref: /sqlite-3.40.0/test/journal1.test (revision 69aedc8d)
1# 2005 March 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 implements regression tests for SQLite library.
12#
13# This file implements tests to make sure that leftover journals from
14# prior databases do not try to rollback into new databases.
15#
16# $Id: journal1.test,v 1.2 2005/03/20 22:54:56 drh Exp $
17
18
19set testdir [file dirname $argv0]
20source $testdir/tester.tcl
21
22# These tests will not work on windows because windows uses
23# manditory file locking which breaks the copy_file command.
24#
25# Or with atomic_batch_write systems, as journal files are
26# not created.
27#
28if {$tcl_platform(platform)=="windows"
29 || [atomic_batch_write test.db]
30} {
31  finish_test
32  return
33}
34
35# Create a smaple database
36#
37do_test journal1-1.1 {
38  execsql {
39    CREATE TABLE t1(a,b);
40    INSERT INTO t1 VALUES(1,randstr(10,400));
41    INSERT INTO t1 VALUES(2,randstr(10,400));
42    INSERT INTO t1 SELECT a+2, a||b FROM t1;
43    INSERT INTO t1 SELECT a+4, a||b FROM t1;
44    SELECT count(*) FROM t1;
45  }
46} 8
47
48# Make changes to the database and save the journal file.
49# Then delete the database.  Replace the journal file
50# and try to create a new database with the same name.  The
51# old journal should not attempt to rollback into the new
52# database.
53#
54do_test journal1-1.2 {
55  execsql {
56    BEGIN;
57    DELETE FROM t1;
58  }
59  forcecopy test.db-journal test.db-journal-bu
60  execsql {
61    ROLLBACK;
62  }
63  db close
64  delete_file test.db
65  copy_file test.db-journal-bu test.db-journal
66  sqlite3 db test.db
67  catchsql {
68    SELECT * FROM sqlite_master
69  }
70} {0 {}}
71
72finish_test
73