From a7be68a4d77791bbe02c37f7ad8ae60b02e5679e Mon Sep 17 00:00:00 2001 From: Terry Wilson Date: Tue, 9 Oct 2018 11:31:32 -0500 Subject: 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 Signed-off-by: Ben Pfaff Acked-by: Lucas Alvares Gomes --- tests/test-json.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'tests/test-json.py') diff --git a/tests/test-json.py b/tests/test-json.py index 582aa720a..d0db43331 100644 --- a/tests/test-json.py +++ b/tests/test-json.py @@ -18,6 +18,7 @@ import codecs import getopt import sys +from ovs.db import error import ovs.json import six @@ -66,15 +67,26 @@ def main(argv): sys.stderr = codecs.getwriter("utf-8")(sys.stderr) try: - options, args = getopt.gnu_getopt(argv[1:], '', ['multiple']) + options, args = getopt.gnu_getopt(argv[1:], 'j:', + ['multiple', 'json-parser']) except getopt.GetoptError as geo: sys.stderr.write("%s: %s\n" % (argv0, geo.msg)) sys.exit(1) multiple = False + ORIG_PARSER = ovs.json.PARSER + ovs.json.PARSER = ovs.json.PARSER_PY for key, value in options: if key == '--multiple': multiple = True + elif key in ('-j', '--json-parser'): + if value == "python": + ovs.json.PARSER = ovs.json.PARSER_PY + elif value in ('C', 'c'): + if ORIG_PARSER != ovs.json.PARSER_C: + raise error.Error("C parser selected, but not compiled") + else: + ovs.json.PARSER = ovs.json.PARSER_C else: sys.stderr.write("%s: unhandled option %s\n" % (argv0, key)) sys.exit(1) -- cgit v1.2.1