ENH: Refactor and enhance the CI testing infrastructure
1) Improve travis build script for use outside travis.
Allow the script used for CI builds to also be used
locally in a similar manner to the CI use of the scrips
2) Add ctest compatible testing and CDASH support
Report testing and building results to
https://my.cdash.org/index.php?project=jsoncpp
NOTE: The new ctest infrastructure is not yet robust on winodws
Do no yet enable the new features for running test with ctest
on windows platform. The previous behaviors are maintainted,
but enhance test reporting from windows is not yet supported.
3) Add a cmake coverage testing option
Ensure that cmake builds on linux are tested.
Ensure that code coverage is reported.
4) Move conditional environment checking into the matrix
Avoid multiple places where conditional logic is used to
change compiler behavior. As more test environments are
created fromt the travis.yml matrix, all settings should be
obvious from that one location.
5) Tests with known regressions from the jsonchecker are suppressed
Tests that are known to pass with jsoncpp more lenient
syntax enforcement are exluded from tests in test/runjsontests.py
diff --git a/test/runjsontests.py b/test/runjsontests.py
index 48cfe82..dfdeca3 100644
--- a/test/runjsontests.py
+++ b/test/runjsontests.py
@@ -55,7 +55,7 @@
""" % (message, diff_line,
safeGetLine(expected,diff_line),
safeGetLine(actual,diff_line))
-
+
def safeReadFile(path):
try:
return open(path, 'rt', encoding = 'utf-8').read()
@@ -69,7 +69,43 @@
input_dir = os.path.join(os.getcwd(), 'data')
tests = glob(os.path.join(input_dir, '*.json'))
if with_json_checker:
- test_jsonchecker = glob(os.path.join(input_dir, '../jsonchecker', '*.json'))
+ all_test_jsonchecker = glob(os.path.join(input_dir, '../jsonchecker', '*.json'))
+ # These tests fail with strict json support, but pass with jsoncpp extra lieniency
+ """
+ Failure details:
+ * Test ../jsonchecker/fail25.json
+ Parsing should have failed:
+ [" tab character in string "]
+
+ * Test ../jsonchecker/fail13.json
+ Parsing should have failed:
+ {"Numbers cannot have leading zeroes": 013}
+
+ * Test ../jsonchecker/fail18.json
+ Parsing should have failed:
+ [[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]
+
+ * Test ../jsonchecker/fail8.json
+ Parsing should have failed:
+ ["Extra close"]]
+
+ * Test ../jsonchecker/fail7.json
+ Parsing should have failed:
+ ["Comma after the close"],
+
+ * Test ../jsonchecker/fail10.json
+ Parsing should have failed:
+ {"Extra value after close": true} "misplaced quoted value"
+
+ * Test ../jsonchecker/fail27.json
+ Parsing should have failed:
+ ["line
+ break"]
+ """
+ known_differences_withjsonchecker = [ "fail25.json", "fail13.json", "fail18.json", "fail8.json",
+ "fail7.json", "fail10.json", "fail27.json" ]
+ test_jsonchecker = [ test for test in all_test_jsonchecker if os.path.basename(test) not in known_differences_withjsonchecker ]
+
else:
test_jsonchecker = []
failed_tests = []