Annotation of embedaddon/sqlite3/test/loadext2.test, revision 1.1
1.1 ! misho 1: # 2006 August 23
! 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. The
! 12: # focus of this script is automatic extension loading and the
! 13: # sqlite3_auto_extension() API.
! 14: #
! 15: # $Id: loadext2.test,v 1.3 2008/03/19 16:08:54 drh Exp $
! 16:
! 17: set testdir [file dirname $argv0]
! 18: source $testdir/tester.tcl
! 19:
! 20: # Only run these tests if the approriate APIs are defined
! 21: # in the system under test.
! 22: #
! 23: ifcapable !load_ext {
! 24: finish_test
! 25: return
! 26: }
! 27: if {[info command sqlite3_auto_extension_sqr]==""} {
! 28: finish_test
! 29: return
! 30: }
! 31:
! 32:
! 33: # None of the extension are loaded by default.
! 34: #
! 35: do_test loadext2-1.1 {
! 36: catchsql {
! 37: SELECT sqr(2)
! 38: }
! 39: } {1 {no such function: sqr}}
! 40: do_test loadext2-1.2 {
! 41: catchsql {
! 42: SELECT cube(2)
! 43: }
! 44: } {1 {no such function: cube}}
! 45:
! 46: # Register auto-loaders. Still functions do not exist.
! 47: #
! 48: do_test loadext2-1.3 {
! 49: sqlite3_auto_extension_sqr
! 50: sqlite3_auto_extension_cube
! 51: catchsql {
! 52: SELECT sqr(2)
! 53: }
! 54: } {1 {no such function: sqr}}
! 55: do_test loadext2-1.4 {
! 56: catchsql {
! 57: SELECT cube(2)
! 58: }
! 59: } {1 {no such function: cube}}
! 60:
! 61:
! 62: # Functions do exist in a new database connection
! 63: #
! 64: do_test loadext2-1.5 {
! 65: sqlite3 db test.db
! 66: catchsql {
! 67: SELECT sqr(2)
! 68: }
! 69: } {0 4.0}
! 70: do_test loadext2-1.6 {
! 71: catchsql {
! 72: SELECT cube(2)
! 73: }
! 74: } {0 8.0}
! 75:
! 76:
! 77: # Reset extension auto loading. Existing extensions still exist.
! 78: #
! 79: do_test loadext2-1.7 {
! 80: sqlite3_reset_auto_extension
! 81: catchsql {
! 82: SELECT sqr(2)
! 83: }
! 84: } {0 4.0}
! 85: do_test loadext2-1.8 {
! 86: catchsql {
! 87: SELECT cube(2)
! 88: }
! 89: } {0 8.0}
! 90:
! 91:
! 92: # Register only the sqr() function.
! 93: #
! 94: do_test loadext2-1.9 {
! 95: sqlite3_auto_extension_sqr
! 96: sqlite3 db test.db
! 97: catchsql {
! 98: SELECT sqr(2)
! 99: }
! 100: } {0 4.0}
! 101: do_test loadext2-1.10 {
! 102: catchsql {
! 103: SELECT cube(2)
! 104: }
! 105: } {1 {no such function: cube}}
! 106:
! 107: # Register only the cube() function.
! 108: #
! 109: do_test loadext2-1.11 {
! 110: sqlite3_reset_auto_extension
! 111: sqlite3_auto_extension_cube
! 112: sqlite3 db test.db
! 113: catchsql {
! 114: SELECT sqr(2)
! 115: }
! 116: } {1 {no such function: sqr}}
! 117: do_test loadext2-1.12 {
! 118: catchsql {
! 119: SELECT cube(2)
! 120: }
! 121: } {0 8.0}
! 122:
! 123: # Register a broken entry point.
! 124: #
! 125: do_test loadext2-1.13 {
! 126: sqlite3_auto_extension_broken
! 127: set rc [catch {sqlite3 db test.db} errmsg]
! 128: lappend rc $errmsg
! 129: } {1 {automatic extension loading failed: broken autoext!}}
! 130: do_test loadext2-1.14 {
! 131: catchsql {
! 132: SELECT sqr(2)
! 133: }
! 134: } {1 {no such function: sqr}}
! 135: do_test loadext2-1.15 {
! 136: catchsql {
! 137: SELECT cube(2)
! 138: }
! 139: } {0 8.0}
! 140:
! 141:
! 142: sqlite3_reset_auto_extension
! 143: autoinstall_test_functions
! 144: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>