@@ -7,12 +7,15 @@ IRONPYTHON = sys.platform == 'cli'
|
|||||||
CPYTHON = not PYPY and not JYTHON and not IRONPYTHON
|
CPYTHON = not PYPY and not JYTHON and not IRONPYTHON
|
||||||
|
|
||||||
if PY2:
|
if PY2:
|
||||||
|
import __builtin__
|
||||||
range_type = xrange
|
range_type = xrange
|
||||||
text_type = unicode
|
text_type = unicode
|
||||||
long_type = long
|
long_type = long
|
||||||
str_type = basestring
|
str_type = basestring
|
||||||
|
unichr = __builtin__.unichr
|
||||||
else:
|
else:
|
||||||
range_type = range
|
range_type = range
|
||||||
text_type = str
|
text_type = str
|
||||||
long_type = int
|
long_type = int
|
||||||
str_type = str
|
str_type = str
|
||||||
|
unichr = chr
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
from ._compat import PY2, text_type, long_type, JYTHON, IRONPYTHON
|
from ._compat import PY2, text_type, long_type, JYTHON, IRONPYTHON, unichr
|
||||||
|
|
||||||
import sys
|
|
||||||
import binascii
|
|
||||||
import datetime
|
import datetime
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
import time
|
import time
|
||||||
@@ -57,7 +55,7 @@ def escape_int(value, mapping=None):
|
|||||||
def escape_float(value, mapping=None):
|
def escape_float(value, mapping=None):
|
||||||
return ('%.15g' % value)
|
return ('%.15g' % value)
|
||||||
|
|
||||||
_escape_table = [chr(x) for x in range(128)]
|
_escape_table = [unichr(x) for x in range(128)]
|
||||||
_escape_table[0] = u'\\0'
|
_escape_table[0] = u'\\0'
|
||||||
_escape_table[ord('\\')] = u'\\\\'
|
_escape_table[ord('\\')] = u'\\\\'
|
||||||
_escape_table[ord('\n')] = u'\\n'
|
_escape_table[ord('\n')] = u'\\n'
|
||||||
@@ -80,7 +78,7 @@ if PY2:
|
|||||||
Value should be bytes or unicode.
|
Value should be bytes or unicode.
|
||||||
"""
|
"""
|
||||||
if isinstance(value, unicode):
|
if isinstance(value, unicode):
|
||||||
return escape_unicode(value)
|
return _escape_unicode(value)
|
||||||
assert isinstance(value, (bytes, bytearray))
|
assert isinstance(value, (bytes, bytearray))
|
||||||
value = value.replace('\\', '\\\\')
|
value = value.replace('\\', '\\\\')
|
||||||
value = value.replace('\0', '\\0')
|
value = value.replace('\0', '\\0')
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from pymysql.tests.test_connection import *
|
|||||||
from pymysql.tests.test_SSCursor import *
|
from pymysql.tests.test_SSCursor import *
|
||||||
from pymysql.tests.test_load_local import *
|
from pymysql.tests.test_load_local import *
|
||||||
from pymysql.tests.test_optionfile import *
|
from pymysql.tests.test_optionfile import *
|
||||||
|
from pymysql.tests.test_converters import *
|
||||||
|
|
||||||
from pymysql.tests.thirdparty import *
|
from pymysql.tests.thirdparty import *
|
||||||
|
|
||||||
|
|||||||
23
pymysql/tests/test_converters.py
Normal file
23
pymysql/tests/test_converters.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
from pymysql._compat import PY2
|
||||||
|
from pymysql import converters
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = ["TestConverter"]
|
||||||
|
|
||||||
|
|
||||||
|
class TestConverter(TestCase):
|
||||||
|
|
||||||
|
def test_escape_string(self):
|
||||||
|
self.assertEqual(
|
||||||
|
converters.escape_string(u"foo\nbar"),
|
||||||
|
u"foo\\nbar"
|
||||||
|
)
|
||||||
|
|
||||||
|
if PY2:
|
||||||
|
def test_escape_string_bytes(self):
|
||||||
|
self.assertEqual(
|
||||||
|
converters.escape_string(b"foo\nbar"),
|
||||||
|
b"foo\\nbar"
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user