rbupass.test 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # 2023 January 13
  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. source [file join [file dirname [info script]] rbu_common.tcl]
  13. if_no_rbu_support { finish_test ; return }
  14. set ::testprefix rbupass
  15. if {[info commands register_demovfs]==""} {
  16. finish_test
  17. return
  18. }
  19. db close
  20. register_demovfs
  21. sqlite3rbu_create_vfs myvfs demo
  22. sqlite3 db file:test.db?vfs=myvfs -uri 1
  23. do_execsql_test 1.0 {
  24. CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
  25. INSERT INTO t1 VALUES(1, 2);
  26. SELECT * FROM t1;
  27. } {1 2}
  28. if {[permutation]!="inmemory_journal"} {
  29. do_execsql_test 1.1 {
  30. PRAGMA journal_mode = wal;
  31. } {delete}
  32. }
  33. do_execsql_test 1.2 {
  34. SELECT * FROM t1;
  35. } {1 2}
  36. do_test 1.3 {
  37. forcedelete rbu.db
  38. sqlite3 rbu rbu.db
  39. rbu eval {
  40. CREATE TABLE data_t1(a, b, rbu_control);
  41. INSERT INTO data_t1 VALUES(2, 4, 0);
  42. }
  43. rbu close
  44. } {}
  45. do_test 1.4 {
  46. sqlite3rbu rbu test.db rbu.db
  47. } {rbu}
  48. do_test 1.5 {
  49. rbu step
  50. } {SQLITE_CANTOPEN}
  51. do_test 1.6 {
  52. list [catch { rbu close } msg] $msg
  53. } {1 {SQLITE_CANTOPEN - unable to open database file}}
  54. do_test 1.7 {
  55. sqlite3rbu_vacuum rbu test.db
  56. } {rbu}
  57. do_test 1.8 {
  58. rbu step
  59. catch { rbu close }
  60. } {1}
  61. do_execsql_test 1.9 {
  62. SELECT * FROM t1;
  63. } {1 2}
  64. db close
  65. sqlite3rbu_destroy_vfs myvfs
  66. unregister_demovfs
  67. sqlite3_shutdown
  68. finish_test