Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/sqlite3/test/userfunctions.py

    r2 r391  
    3838def func_returnblob():
    3939    return buffer("blob")
     40def func_returnlonglong():
     41    return 1<<31
    4042def func_raiseexception():
    41     5/0
     43    5 // 0
    4244
    4345def func_isstring(v):
     
    5153def func_isblob(v):
    5254    return type(v) is buffer
     55def func_islonglong(v):
     56    return isinstance(v, (int, long)) and v >= 1<<31
    5357
    5458class AggrNoStep:
     
    6872class AggrExceptionInInit:
    6973    def __init__(self):
    70         5/0
     74        5 // 0
    7175
    7276    def step(self, x):
     
    8185
    8286    def step(self, x):
    83         5/0
     87        5 // 0
    8488
    8589    def finalize(self):
     
    9498
    9599    def finalize(self):
    96         5/0
     100        5 // 0
    97101
    98102class AggrCheckType:
     
    127131        self.con.create_function("returnnull", 0, func_returnnull)
    128132        self.con.create_function("returnblob", 0, func_returnblob)
     133        self.con.create_function("returnlonglong", 0, func_returnlonglong)
    129134        self.con.create_function("raiseexception", 0, func_raiseexception)
    130135
     
    134139        self.con.create_function("isnone", 1, func_isnone)
    135140        self.con.create_function("isblob", 1, func_isblob)
     141        self.con.create_function("islonglong", 1, func_islonglong)
    136142
    137143    def tearDown(self):
     
    161167        cur.execute("select returntext()")
    162168        val = cur.fetchone()[0]
    163         self.failUnlessEqual(type(val), unicode)
    164         self.failUnlessEqual(val, "foo")
     169        self.assertEqual(type(val), unicode)
     170        self.assertEqual(val, "foo")
    165171
    166172    def CheckFuncReturnUnicode(self):
     
    168174        cur.execute("select returnunicode()")
    169175        val = cur.fetchone()[0]
    170         self.failUnlessEqual(type(val), unicode)
    171         self.failUnlessEqual(val, u"bar")
     176        self.assertEqual(type(val), unicode)
     177        self.assertEqual(val, u"bar")
    172178
    173179    def CheckFuncReturnInt(self):
     
    175181        cur.execute("select returnint()")
    176182        val = cur.fetchone()[0]
    177         self.failUnlessEqual(type(val), int)
    178         self.failUnlessEqual(val, 42)
     183        self.assertEqual(type(val), int)
     184        self.assertEqual(val, 42)
    179185
    180186    def CheckFuncReturnFloat(self):
     
    182188        cur.execute("select returnfloat()")
    183189        val = cur.fetchone()[0]
    184         self.failUnlessEqual(type(val), float)
     190        self.assertEqual(type(val), float)
    185191        if val < 3.139 or val > 3.141:
    186192            self.fail("wrong value")
     
    190196        cur.execute("select returnnull()")
    191197        val = cur.fetchone()[0]
    192         self.failUnlessEqual(type(val), type(None))
    193         self.failUnlessEqual(val, None)
     198        self.assertEqual(type(val), type(None))
     199        self.assertEqual(val, None)
    194200
    195201    def CheckFuncReturnBlob(self):
     
    197203        cur.execute("select returnblob()")
    198204        val = cur.fetchone()[0]
    199         self.failUnlessEqual(type(val), buffer)
    200         self.failUnlessEqual(val, buffer("blob"))
     205        self.assertEqual(type(val), buffer)
     206        self.assertEqual(val, buffer("blob"))
     207
     208    def CheckFuncReturnLongLong(self):
     209        cur = self.con.cursor()
     210        cur.execute("select returnlonglong()")
     211        val = cur.fetchone()[0]
     212        self.assertEqual(val, 1<<31)
    201213
    202214    def CheckFuncException(self):
     
    207219            self.fail("should have raised OperationalError")
    208220        except sqlite.OperationalError, e:
    209             self.failUnlessEqual(e.args[0], 'user-defined function raised exception')
     221            self.assertEqual(e.args[0], 'user-defined function raised exception')
    210222
    211223    def CheckParamString(self):
     
    213225        cur.execute("select isstring(?)", ("foo",))
    214226        val = cur.fetchone()[0]
    215         self.failUnlessEqual(val, 1)
     227        self.assertEqual(val, 1)
    216228
    217229    def CheckParamInt(self):
     
    219231        cur.execute("select isint(?)", (42,))
    220232        val = cur.fetchone()[0]
    221         self.failUnlessEqual(val, 1)
     233        self.assertEqual(val, 1)
    222234
    223235    def CheckParamFloat(self):
     
    225237        cur.execute("select isfloat(?)", (3.14,))
    226238        val = cur.fetchone()[0]
    227         self.failUnlessEqual(val, 1)
     239        self.assertEqual(val, 1)
    228240
    229241    def CheckParamNone(self):
     
    231243        cur.execute("select isnone(?)", (None,))
    232244        val = cur.fetchone()[0]
    233         self.failUnlessEqual(val, 1)
     245        self.assertEqual(val, 1)
    234246
    235247    def CheckParamBlob(self):
     
    237249        cur.execute("select isblob(?)", (buffer("blob"),))
    238250        val = cur.fetchone()[0]
    239         self.failUnlessEqual(val, 1)
     251        self.assertEqual(val, 1)
     252
     253    def CheckParamLongLong(self):
     254        cur = self.con.cursor()
     255        cur.execute("select islonglong(?)", (1<<42,))
     256        val = cur.fetchone()[0]
     257        self.assertEqual(val, 1)
    240258
    241259class AggregateTests(unittest.TestCase):
     
    281299            self.fail("should have raised an AttributeError")
    282300        except AttributeError, e:
    283             self.failUnlessEqual(e.args[0], "AggrNoStep instance has no attribute 'step'")
     301            self.assertEqual(e.args[0], "AggrNoStep instance has no attribute 'step'")
    284302
    285303    def CheckAggrNoFinalize(self):
     
    290308            self.fail("should have raised an OperationalError")
    291309        except sqlite.OperationalError, e:
    292             self.failUnlessEqual(e.args[0], "user-defined aggregate's 'finalize' method raised error")
     310            self.assertEqual(e.args[0], "user-defined aggregate's 'finalize' method raised error")
    293311
    294312    def CheckAggrExceptionInInit(self):
     
    299317            self.fail("should have raised an OperationalError")
    300318        except sqlite.OperationalError, e:
    301             self.failUnlessEqual(e.args[0], "user-defined aggregate's '__init__' method raised error")
     319            self.assertEqual(e.args[0], "user-defined aggregate's '__init__' method raised error")
    302320
    303321    def CheckAggrExceptionInStep(self):
     
    308326            self.fail("should have raised an OperationalError")
    309327        except sqlite.OperationalError, e:
    310             self.failUnlessEqual(e.args[0], "user-defined aggregate's 'step' method raised error")
     328            self.assertEqual(e.args[0], "user-defined aggregate's 'step' method raised error")
    311329
    312330    def CheckAggrExceptionInFinalize(self):
     
    317335            self.fail("should have raised an OperationalError")
    318336        except sqlite.OperationalError, e:
    319             self.failUnlessEqual(e.args[0], "user-defined aggregate's 'finalize' method raised error")
     337            self.assertEqual(e.args[0], "user-defined aggregate's 'finalize' method raised error")
    320338
    321339    def CheckAggrCheckParamStr(self):
     
    323341        cur.execute("select checkType('str', ?)", ("foo",))
    324342        val = cur.fetchone()[0]
    325         self.failUnlessEqual(val, 1)
     343        self.assertEqual(val, 1)
    326344
    327345    def CheckAggrCheckParamInt(self):
     
    329347        cur.execute("select checkType('int', ?)", (42,))
    330348        val = cur.fetchone()[0]
    331         self.failUnlessEqual(val, 1)
     349        self.assertEqual(val, 1)
    332350
    333351    def CheckAggrCheckParamFloat(self):
     
    335353        cur.execute("select checkType('float', ?)", (3.14,))
    336354        val = cur.fetchone()[0]
    337         self.failUnlessEqual(val, 1)
     355        self.assertEqual(val, 1)
    338356
    339357    def CheckAggrCheckParamNone(self):
     
    341359        cur.execute("select checkType('None', ?)", (None,))
    342360        val = cur.fetchone()[0]
    343         self.failUnlessEqual(val, 1)
     361        self.assertEqual(val, 1)
    344362
    345363    def CheckAggrCheckParamBlob(self):
     
    347365        cur.execute("select checkType('blob', ?)", (buffer("blob"),))
    348366        val = cur.fetchone()[0]
    349         self.failUnlessEqual(val, 1)
     367        self.assertEqual(val, 1)
    350368
    351369    def CheckAggrCheckAggrSum(self):
     
    355373        cur.execute("select mysum(i) from test")
    356374        val = cur.fetchone()[0]
    357         self.failUnlessEqual(val, 60)
    358 
    359 def authorizer_cb(action, arg1, arg2, dbname, source):
    360     if action != sqlite.SQLITE_SELECT:
    361         return sqlite.SQLITE_DENY
    362     if arg2 == 'c2' or arg1 == 't2':
    363         return sqlite.SQLITE_DENY
    364     return sqlite.SQLITE_OK
     375        self.assertEqual(val, 60)
    365376
    366377class AuthorizerTests(unittest.TestCase):
     378    @staticmethod
     379    def authorizer_cb(action, arg1, arg2, dbname, source):
     380        if action != sqlite.SQLITE_SELECT:
     381            return sqlite.SQLITE_DENY
     382        if arg2 == 'c2' or arg1 == 't2':
     383            return sqlite.SQLITE_DENY
     384        return sqlite.SQLITE_OK
     385
    367386    def setUp(self):
    368387        self.con = sqlite.connect(":memory:")
     
    377396        self.con.execute("select c2 from t2")
    378397
    379         self.con.set_authorizer(authorizer_cb)
     398        self.con.set_authorizer(self.authorizer_cb)
    380399
    381400    def tearDown(self):
    382401        pass
    383402
    384     def CheckTableAccess(self):
     403    def test_table_access(self):
    385404        try:
    386405            self.con.execute("select * from t2")
     
    391410        self.fail("should have raised an exception due to missing privileges")
    392411
    393     def CheckColumnAccess(self):
     412    def test_column_access(self):
    394413        try:
    395414            self.con.execute("select c2 from t1")
     
    400419        self.fail("should have raised an exception due to missing privileges")
    401420
     421class AuthorizerRaiseExceptionTests(AuthorizerTests):
     422    @staticmethod
     423    def authorizer_cb(action, arg1, arg2, dbname, source):
     424        if action != sqlite.SQLITE_SELECT:
     425            raise ValueError
     426        if arg2 == 'c2' or arg1 == 't2':
     427            raise ValueError
     428        return sqlite.SQLITE_OK
     429
     430class AuthorizerIllegalTypeTests(AuthorizerTests):
     431    @staticmethod
     432    def authorizer_cb(action, arg1, arg2, dbname, source):
     433        if action != sqlite.SQLITE_SELECT:
     434            return 0.0
     435        if arg2 == 'c2' or arg1 == 't2':
     436            return 0.0
     437        return sqlite.SQLITE_OK
     438
     439class AuthorizerLargeIntegerTests(AuthorizerTests):
     440    @staticmethod
     441    def authorizer_cb(action, arg1, arg2, dbname, source):
     442        if action != sqlite.SQLITE_SELECT:
     443            return 2**32
     444        if arg2 == 'c2' or arg1 == 't2':
     445            return 2**32
     446        return sqlite.SQLITE_OK
     447
     448
    402449def suite():
    403450    function_suite = unittest.makeSuite(FunctionTests, "Check")
    404451    aggregate_suite = unittest.makeSuite(AggregateTests, "Check")
    405     authorizer_suite = unittest.makeSuite(AuthorizerTests, "Check")
    406     return unittest.TestSuite((function_suite, aggregate_suite, authorizer_suite))
     452    authorizer_suite = unittest.makeSuite(AuthorizerTests)
     453    return unittest.TestSuite((
     454            function_suite,
     455            aggregate_suite,
     456            authorizer_suite,
     457            unittest.makeSuite(AuthorizerRaiseExceptionTests),
     458            unittest.makeSuite(AuthorizerIllegalTypeTests),
     459            unittest.makeSuite(AuthorizerLargeIntegerTests),
     460        ))
    407461
    408462def test():
Note: See TracChangeset for help on using the changeset viewer.