Run test for THRIFT-2413
Slightly simplify _toChar method too.
This closes #695
diff --git a/lib/py/Makefile.am b/lib/py/Makefile.am
index b88b6be..c0db871 100755
--- a/lib/py/Makefile.am
+++ b/lib/py/Makefile.am
@@ -22,13 +22,14 @@
if WITH_PY3
py3-build:
$(PYTHON3) setup.py build
+py3-test: py3-build
+ PYTHONPATH=build/lib $(PYTHON3) test/thrift_json.py
else
py3-build:
+py3-test:
endif
-testing:
-
-all-local: py3-build testing
+all-local: py3-build
$(PYTHON) setup.py build
# We're ignoring prefix here because site-packages seems to be
@@ -41,7 +42,8 @@
clean-local:
$(RM) -r build
-check-local: all
+check-local: all py3-test
+ PYTHONPATH=$(shell ls build/lib* -dr | head -n1) $(PYTHON) test/thrift_json.py
EXTRA_DIST = \
CMakeLists.txt \
diff --git a/lib/py/src/protocol/TJSONProtocol.py b/lib/py/src/protocol/TJSONProtocol.py
index d210bff..aada3fc 100644
--- a/lib/py/src/protocol/TJSONProtocol.py
+++ b/lib/py/src/protocol/TJSONProtocol.py
@@ -251,18 +251,14 @@
def _toChar(self, high, low=None):
if not low:
- if sys.version_info[0] == 2:
- return ("\\u%04x" % high).decode('unicode-escape').encode('utf-8')
- else:
- return chr(high)
+ codepoint = high
else:
codepoint = (1 << 16) + ((high & 0x3ff) << 10)
codepoint += low & 0x3ff
- if sys.version_info[0] == 2:
- s = "\\U%08x" % codepoint
- return s.decode('unicode-escape').encode('utf-8')
- else:
- return chr(codepoint)
+ if sys.version_info[0] == 2:
+ return unichr(codepoint).encode('utf-8')
+ else:
+ return chr(codepoint)
def readJSONString(self, skipContext):
highSurrogate = None