Hello,

I've tried to run the quicktest suite for SQLite 3.22.0 on Linux (kernel
version 4.13.0), and when it executes test/oserror.test I get errors:

oserror-1.1.1... Ok
oserror-1.1.2... Ok
oserror-1.1.3... Ok
oserror-1.2.1... Ok
oserror-1.2.2... Ok
oserror-1.3.1... Ok
oserror-1.3.2... Ok
oserror-1.4.1... Ok
oserror-1.4.2... Ok
oserror-2.1.1...
! oserror-2.1.1 expected: [1 {disk I/O error}]
! oserror-2.1.1 got:      [0 {}]
oserror-2.1.2...
! oserror-2.1.2 expected: [^os_unix.c:\d+: \(\d+\) unlink\(.*test.db-wal\) - ]
! oserror-2.1.2 got:      []
oserror-2.1.3... Ok

After looking at the code in test/oserror.test, I'm confused about how
it could possibly ever pass: as far as I can see and understand, it does
not enable WAL journaling at all:

ifcapable wal {
  do_test 2.1.1 {
    set ::log [list]
    file mkdir test.db-wal
    forcedelete test.db
    list [catch {
      sqlite3 dbh test.db
      execsql { SELECT * FROM sqlite_master } dbh
    } msg] $msg
  } {1 {disk I/O error}}
  
  do_re_test 2.1.2 { 
    lindex $::log 0 
  } {^os_unix.c:\d+: \(\d+\) unlink\(.*test.db-wal\) - }
  do_test 2.1.3 { 
    catch { dbh close }
    forcedelete test.db-wal
  } {}
}

so the file "testdir/test.db-wal" (which the test overrides with a dir)
does never come into play in the testdir/test.db DB that the test opens.

On the contrary, other WAL-related tests (such as test/wal.test) do
enable WAL journaling via "PRAGMA journal_mode = wal".

Any hints?

Thanks
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to