sqlite/test/journal3.test
drh 8c815d14f8 On unix, ignore the umask when creating journal files. That way, journal files
will have exactly the same permissions as the original database and any
process that has permission to write to the database can also recover
hot journals.

FossilOrigin-Name: 84b324606adc8437338c086404eb157f30f04130
2012-02-13 20:16:37 +00:00

64 lines
1.8 KiB
Plaintext

# 2010 July 15
#
# 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.
#
#***********************************************************************
# This file implements regression tests for SQLite library.
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
source $testdir/lock_common.tcl
source $testdir/malloc_common.tcl
#-------------------------------------------------------------------------
# If a connection is required to create a journal file, it creates it with
# the same file-system permissions as the database file itself. Test this.
#
if {$::tcl_platform(platform) == "unix"} {
# Changed on 2012-02-13: umask is deliberately ignored for -wal, -journal,
# and -shm files.
#set umask [exec /bin/sh -c umask]
faultsim_delete_and_reopen
do_test journal3-1.1 { execsql { CREATE TABLE tx(y, z) } } {}
foreach {tn permissions} {
1 00644
2 00666
3 00600
4 00755
} {
db close
#set effective [format %.5o [expr $permissions & ~$umask]]
set effective $permissions
do_test journal3-1.2.$tn.1 {
catch { forcedelete test.db-journal }
file attributes test.db -permissions $permissions
file attributes test.db -permissions
} $permissions
do_test journal3-1.2.$tn.2 { file exists test.db-journal } {0}
do_test journal3-1.2.$tn.3 {
sqlite3 db test.db
execsql {
BEGIN;
INSERT INTO tx DEFAULT VALUES;
}
file exists test.db-journal
} {1}
do_test journal3-1.2.$tn.4 {
file attr test.db-journal -perm
} $effective
do_execsql_test journal3-1.2.$tn.5 { ROLLBACK } {}
}
}
finish_test