Annotation of embedaddon/sqlite3/test/loadext2.test, revision 1.1.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>