Changeset 802 for trunk/tests


Ignore:
Timestamp:
Jan 31, 2016, 4:18:28 PM (4 years ago)
Author:
cito
Message:

Make the unescaping of bytea configurable

By default, bytea is returned unescaped in 5.0, but the old
behavior can now be restored with set_escaped_bytea().

Location:
trunk/tests
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/test_classic_dbwrapper.py

    r799 r802  
    28382838        self.assertEqual(r[0], 3)
    28392839        r = r[1]
     2840        if pg.get_bytea_escaped():
     2841            self.assertNotEqual(r, s)
     2842            r = pg.unescape_bytea(r)
    28402843        self.assertIsInstance(r, bytes)
    28412844        self.assertEqual(r, s)
     
    28432846    def testInsertUpdateGetBytea(self):
    28442847        query = self.db.query
     2848        unescape = pg.unescape_bytea if pg.get_bytea_escaped() else None
    28452849        self.createTable('bytea_test', 'n smallint primary key, data bytea')
    28462850        # insert null value
     
    28582862        self.assertIn('data', r)
    28592863        r = r['data']
     2864        if unescape:
     2865            self.assertNotEqual(r, s)
     2866            r = unescape(r)
    28602867        self.assertIsInstance(r, bytes)
    28612868        self.assertEqual(r, s)
     
    28702877        self.assertIn('data', r)
    28712878        r = r['data']
     2879        if unescape:
     2880            self.assertNotEqual(r, s)
     2881            r = unescape(r)
    28722882        self.assertIsInstance(r, bytes)
    28732883        self.assertEqual(r, s)
     
    28802890        self.assertIn('data', r)
    28812891        r = r['data']
     2892        if unescape:
     2893            self.assertNotEqual(r, s)
     2894            r = unescape(r)
    28822895        self.assertIsInstance(r, bytes)
    28832896        self.assertEqual(r, s)
     
    28882901        self.assertEqual(r[0], 5)
    28892902        r = r[1]
     2903        if unescape:
     2904            self.assertNotEqual(r, s)
     2905            r = unescape(r)
    28902906        self.assertIsInstance(r, bytes)
    28912907        self.assertEqual(r, s)
     
    28962912        self.assertIn('data', r)
    28972913        r = r['data']
     2914        if unescape:
     2915            self.assertNotEqual(r, s)
     2916            r = pg.unescape_bytea(r)
    28982917        self.assertIsInstance(r, bytes)
    28992918        self.assertEqual(r, s)
     
    29132932        self.assertEqual(r['n'], 7)
    29142933        self.assertIn('data', r)
     2934        if pg.get_bytea_escaped():
     2935            self.assertNotEqual(r['data'], s)
     2936            r['data'] = pg.unescape_bytea(r['data'])
    29152937        self.assertIsInstance(r['data'], bytes)
    29162938        self.assertEqual(r['data'], s)
     
    29212943        self.assertEqual(r['n'], 7)
    29222944        self.assertIn('data', r)
    2923         self.assertIsNone(r['data'], bytes)
     2945        self.assertIsNone(r['data'])
    29242946
    29252947    def testInsertGetJson(self):
     
    31623184
    31633185    def testArrayOfBytea(self):
     3186        unescape = pg.unescape_bytea if pg.get_bytea_escaped() else None
    31643187        self.createTable('arraytest', 'data bytea[]', oids=True)
    31653188        r = self.db.get_attnames('arraytest')
     
    31693192        r = dict(data=data)
    31703193        self.db.insert('arraytest', r)
     3194        if unescape:
     3195            self.assertNotEqual(r['data'], data)
     3196            r['data'] = [unescape(v) if v else v for v in r['data']]
    31713197        self.assertEqual(r['data'], data)
    31723198        self.assertIsInstance(r['data'][1], bytes)
     
    31743200        r['data'] = None
    31753201        self.db.get('arraytest', r)
     3202        if unescape:
     3203            self.assertNotEqual(r['data'], data)
     3204            r['data'] = [unescape(v) if v else v for v in r['data']]
    31763205        self.assertEqual(r['data'], data)
    31773206        self.assertIsInstance(r['data'][1], bytes)
     
    36073636        not_bool = not pg.get_bool()
    36083637        cls.set_option('bool', not_bool)
     3638        not_bytea_escaped = not pg.get_bytea_escaped()
     3639        cls.set_option('bytea_escaped', not_bytea_escaped)
    36093640        cls.set_option('namedresult', None)
    36103641        cls.set_option('jsondecode', None)
     
    36183649        cls.reset_option('namedresult')
    36193650        cls.reset_option('bool')
     3651        cls.reset_option('bytea_escaped')
    36203652        cls.reset_option('decimal')
    36213653
  • trunk/tests/test_classic_functions.py

    r793 r802  
    733733        self.assertIs(r, use_bool)
    734734
     735    def testGetByteaEscaped(self):
     736        r = pg.get_bytea_escaped()
     737        self.assertIsInstance(r, bool)
     738        self.assertIs(r, False)
     739
     740    def testSetByteaEscaped(self):
     741        bytea_escaped = pg.get_bytea_escaped()
     742        try:
     743            pg.set_bytea_escaped(True)
     744            r = pg.get_bytea_escaped()
     745            pg.set_bytea_escaped(bytea_escaped)
     746            self.assertIsInstance(r, bool)
     747            self.assertIs(r, True)
     748            pg.set_bytea_escaped(False)
     749            r = pg.get_bytea_escaped()
     750            self.assertIsInstance(r, bool)
     751            self.assertIs(r, False)
     752        finally:
     753            pg.set_bool(bytea_escaped)
     754        r = pg.get_bytea_escaped()
     755        self.assertIsInstance(r, bool)
     756        self.assertIs(r, bytea_escaped)
     757
    735758    def testGetNamedresult(self):
    736759        r = pg.get_namedresult()
Note: See TracChangeset for help on using the changeset viewer.