summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorTerry Wilson <twilson@redhat.com>2018-10-09 11:31:32 -0500
committerBen Pfaff <blp@ovn.org>2018-10-11 15:00:46 -0700
commita7be68a4d77791bbe02c37f7ad8ae60b02e5679e (patch)
tree07aa0cbcbcffa7f7a80905d20c627481b768d244 /python
parent39cc92aa651e209e246d6e1547662ba0cafb9f1d (diff)
downloadopenvswitch-a7be68a4d77791bbe02c37f7ad8ae60b02e5679e.tar.gz
Test the Python C JSON extension
The C JSON parser was added quite a while ago, but unless you configure with --enable-shared and have the Python 2/3 development libraries installed, and the resulting python-ovs module installed, 'make check' won't actually test it. This patch changes Python-based tests to run from the $builddir/python directory and makes the tests configurable to use both JSON backends. There are some unicode failures in the C JSON extension that I left unfixed in this patch to make it easy to show run the new tests on broken code. The next patch in this set works around the issue. Signed-off-by: Terry Wilson <twilson@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
Diffstat (limited to 'python')
-rw-r--r--python/automake.mk11
-rw-r--r--python/ovs/json.py10
2 files changed, 17 insertions, 4 deletions
diff --git a/python/automake.mk b/python/automake.mk
index 5a1e1da8a..21547f7ba 100644
--- a/python/automake.mk
+++ b/python/automake.mk
@@ -92,6 +92,17 @@ python-sdist: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py
pypi-upload: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py
(cd python/ && $(PYTHON) setup.py sdist upload)
+
+ALL_LOCAL += python-build
+python-build:$(lib_LTLIBRARIES)
+ (cd $(srcdir)/python/ && $(PYTHON) setup.py build_py -d $(abs_top_builddir)/python && $(PYTHON) setup.py build_ext -b $(abs_top_builddir)/python -I$(abs_top_srcdir)/include:$(abs_top_builddir)/include -L$(abs_top_builddir)/lib/.libs)
+if HAVE_PYTHON3
+ (cd $(srcdir)/python/ && $(PYTHON3) setup.py build_py -d $(abs_top_builddir)/python && $(PYTHON3) setup.py build_ext -b $(abs_top_builddir)/python -I$(abs_top_srcdir)/include:$(abs_top_builddir)/include -L$(abs_top_builddir)/lib/.libs)
+
+CLEAN_LOCAL += python-clean
+python-clean:
+ rm -rf $(abs_top_builddir)/python
+endif
else
ovs-install-data-local:
@:
diff --git a/python/ovs/json.py b/python/ovs/json.py
index e84063fc2..f06204e44 100644
--- a/python/ovs/json.py
+++ b/python/ovs/json.py
@@ -21,10 +21,13 @@ import sys
import six
+PARSER_C = 'C'
+PARSER_PY = 'PYTHON'
try:
import ovs._json
+ PARSER = PARSER_C
except ImportError:
- pass
+ PARSER = PARSER_PY
__pychecker__ = 'no-stringiter'
@@ -91,10 +94,9 @@ class Parser(object):
MAX_HEIGHT = 1000
def __new__(cls, *args, **kwargs):
- try:
+ if PARSER == PARSER_C:
return ovs._json.Parser(*args, **kwargs)
- except NameError:
- return super(Parser, cls).__new__(cls)
+ return super(Parser, cls).__new__(cls)
def __init__(self, check_trailer=False):
self.check_trailer = check_trailer