AryaWu/sqlite
0
1# 2024 March 212#3# The author disclaims copyright to this source code. In place of4# 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# This file contains tests for using databases in read-only mode on13# unix.14#15 16set testdir [file dirname $argv0]17source $testdir/tester.tcl18if {$tcl_platform(platform) eq "windows"} {19 finish_test20 return21}22source $testdir/lock_common.tcl23source $testdir/wal_common.tcl24set ::testprefix readonly25 26do_execsql_test 1.0 {27 CREATE TABLE t1(a, b);28 INSERT INTO t1 VALUES(1, 2), (3, 4), (5, 6);29}30 31db close32file attributes test.db -permissions r--r--r--33 34sqlite3 db test.db35 36do_catchsql_test 1.1 {37 INSERT INTO t1 VALUES(7, 8);38} {1 {attempt to write a readonly database}}39 40do_execsql_test 1.2 {41 BEGIN;42 SELECT * FROM t1;43} {1 2 3 4 5 6}44 45# The following attempts to open a read/write fd on the database 20,000 46# times. And each time instead opens a read-only fd. At one point this47# was failing to reuse cached fds, causing a "too many open file-descriptors"48# error.49do_test 1.3 {50 for {set ii 0} {$ii < 20000} {incr ii} {51 sqlite3 db2 test.db52 db2 close53 }54 set {} {} 55} {}56 57 58finish_test59 