Skip to content

Commit 652b710

Browse files
Use xmllint instead of java xml validator
1 parent 26f532d commit 652b710

File tree

3 files changed

+29
-28
lines changed

3 files changed

+29
-28
lines changed
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
find_package(PythonInterp 3.5)
22
if(${PYTHONINTERP_FOUND})
3+
find_program(XMLLINT xmllint)
4+
if(NOT XMLLINT)
5+
message(WARNING "xmllint not found, skipping trace schema tests")
6+
else()
37
add_test(NAME validate-trace-xml-schema
4-
COMMAND ${PYTHON_EXECUTABLE} check.py $<TARGET_FILE:cbmc>
5-
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
8+
COMMAND ${PYTHON_EXECUTABLE} check.py $<TARGET_FILE:cbmc> ${XMLLINT}
9+
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
610
set_tests_properties(validate-trace-xml-schema
7-
PROPERTIES
8-
LABELS "CBMC;CORE")
11+
PROPERTIES
12+
LABELS "CBMC;CORE")
13+
endif()
914
else()
1015
message(WARNING "Python >= 3.5 not found, skipping trace schema tests")
1116
endif()

regression/validate-trace-xml-schema/check.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,12 @@
5555
'integer-assignments1/test.desc'
5656
]))
5757

58-
if len(sys.argv) != 2:
59-
sys.stderr.write('Usage: check.py <path-to-cbmc>')
58+
# TODO maybe consider looking them up on PATH, but direct paths are
59+
# harder to get wrong
60+
if len(sys.argv) != 3:
61+
sys.stderr.write('Usage: check.py <path-to-cbmc> <path-to-xmllint>')
6062
CbmcPath = os.path.abspath(sys.argv[1])
61-
XsdValidateJar = os.path.join(this_script_dir, 'validate-xsd/build/libs/validate-xsd-1.0-SNAPSHOT-uber.jar')
63+
XmlLintPath = os.path.abspath(sys.argv[2])
6264

6365

6466
class ChangeDir:
@@ -89,7 +91,8 @@ def __init__(self, total_specs):
8991

9092
def check_spec(self, spec_path):
9193
self.total_test_count += 1
92-
sys.stdout.write('*** Checking [{}/{}] {}... '.format(self.total_test_count, self.total_specs, spec_path))
94+
sys.stdout.write('*** Checking [{}/{}] {}... '.format(
95+
self.total_test_count, self.total_specs, spec_path))
9396
sys.stdout.flush()
9497
spec_dir = os.path.dirname(spec_path)
9598
spec = self.read_spec(spec_path)
@@ -113,17 +116,21 @@ def read_trace_into(self, trace_file, args):
113116
stdout=trace_file)
114117

115118
def check_trace(self, spec_path, trace_file):
116-
validate_result = subprocess.run(['java', '-jar', XsdValidateJar, TraceXsdSpec],
119+
validate_result = subprocess.run([XmlLintPath,
120+
'--noout', # we don't want it to print the XML we pipe in
121+
'--schema', TraceXsdSpec,
122+
'-' # read from STDIN
123+
],
117124
stdin=trace_file,
118125
stdout=subprocess.PIPE,
119126
stderr=subprocess.PIPE)
120127
if validate_result.returncode == 0:
121-
print('[SUCCESS]')
128+
sys.stdout.buffer.write(b'[SUCCESS]\n')
122129
else:
123-
print('[FAILURE]')
130+
sys.stdout.buffer.write(b'[FAILURE]\n')
124131
self.failed_tests.append(spec_path)
125-
sys.stdout.buffer.write(validate_result.stdout)
126-
sys.stdout.buffer.write(validate_result.stderr)
132+
sys.stdout.buffer.write(validate_result.stdout)
133+
sys.stdout.buffer.write(validate_result.stderr)
127134

128135
def read_spec(self, spec_path):
129136
with open(spec_path) as spec_file:
@@ -149,17 +156,6 @@ def report(self):
149156
print(spec)
150157

151158

152-
def run_gradle(args):
153-
with ChangeDir('validate-xsd'):
154-
if os.name == 'nt':
155-
subprocess.check_call(['cmd', '/c', 'gradlew.bat'] + args)
156-
else:
157-
subprocess.check_call(['./gradlew'] + args)
158-
159-
160-
# ensure that the uberjar exists and is up to date
161-
run_gradle(['uberjar'])
162-
163159
test_desc_files = list(
164160
filter(lambda s: s not in ExcludedTests, glob.glob(os.path.join(test_base_dir, '*/*.desc'))))
165161
validator = Validator(total_specs=len(test_desc_files))

regression/validate-trace-xml-schema/check.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ if [ $python_minor_version -lt 5 ]; then
1010
exit
1111
fi
1212

13-
if ! command -v javac > /dev/null; then
14-
echo "javac not found, skipping XSD tests"
15-
exit
13+
xmllint="$(command -v xmllint)"
14+
if [ $? -ne 0 ] > /dev/null; then
15+
echo "xmllint not found, skipping XSD tests"
1616
fi
1717

18-
python3 check.py ../../src/cbmc/cbmc
18+
python3 check.py ../../src/cbmc/cbmc "$xmllint"

0 commit comments

Comments
 (0)