Browse Source

Simplify test output file checking

zrythm_meson
David Robillard 4 years ago
parent
commit
aeb021c3c1
  1. 59
      wscript

59
wscript

@ -216,21 +216,17 @@ def upload_docs(ctx): @@ -216,21 +216,17 @@ def upload_docs(ctx):
os.system('soelim %s | pre-grohtml troff -man -wall -Thtml | post-grohtml > build/%s.html' % (page, page))
os.system('rsync -avz --delete -e ssh build/%s.html drobilla@drobilla.net:~/drobilla.net/man/' % page)
def file_equals(patha, pathb, subst_from='', subst_to=''):
def file_equals(patha, pathb):
import filecmp
if filecmp.cmp(patha, pathb, shallow=False):
return True
with io.open(patha, 'rU', encoding='utf-8') as fa:
with io.open(pathb, 'rU', encoding='utf-8') as fb:
for linea in fa:
lineb = fb.readline()
if (linea.replace(subst_from, subst_to) !=
lineb.replace(subst_from, subst_to)):
fa.seek(0)
fb.seek(0)
show_diff(fa.readlines(),
fb.readlines(),
patha,
pathb)
return False
return True
show_diff(fa.readlines(), fb.readlines(), patha, pathb)
return False
def earl_assertion(test, passed, asserter):
import datetime
@ -258,6 +254,9 @@ def earl_assertion(test, passed, asserter): @@ -258,6 +254,9 @@ def earl_assertion(test, passed, asserter):
passed_str,
datetime.datetime.now().replace(microsecond=0).isoformat())
def build_path(ctx, path):
return os.path.relpath(path, os.getcwd())
def show_diff(from_lines, to_lines, from_filename, to_filename):
import difflib
import sys
@ -268,21 +267,17 @@ def show_diff(from_lines, to_lines, from_filename, to_filename): @@ -268,21 +267,17 @@ def show_diff(from_lines, to_lines, from_filename, to_filename):
tofile=os.path.abspath(to_filename)):
sys.stderr.write(line)
def check_output(out_filename, check_filename, subst_from='', subst_to=''):
def check_output(out_filename, check_filename):
if not os.access(out_filename, os.F_OK):
Logs.pprint('RED', 'FAIL: output %s is missing' % out_filename)
elif not file_equals(check_filename, out_filename, subst_from, subst_to):
Logs.pprint('RED', 'FAIL: %s != %s' % (os.path.abspath(out_filename),
check_filename))
else:
return True
Logs.pprint('RED', 'error: missing output file %s' % out_filename)
return False
return False
return file_equals(check_filename, out_filename)
def test_thru(ctx, base, path, check_filename, flags, isyntax, osyntax,
options='', quiet=False):
in_filename = os.path.join(ctx.path.abspath(), path)
out_filename = path + '.thru'
in_filename = build_path(ctx, os.path.join(ctx.path.abspath(), path))
out_filename = build_path(ctx, path + '.thru')
command = ('serdi_static %s %s -i %s -o %s -p foo "%s" "%s" | '
'serdi_static %s -i %s -o %s -c foo - "%s" > %s') % (
@ -290,12 +285,12 @@ def test_thru(ctx, base, path, check_filename, flags, isyntax, osyntax, @@ -290,12 +285,12 @@ def test_thru(ctx, base, path, check_filename, flags, isyntax, osyntax,
isyntax, isyntax, in_filename, base,
options, isyntax, osyntax, base, out_filename)
if autowaf.run_test(ctx, APPNAME, command, 0, name=' to ' + out_filename, quiet=quiet):
if autowaf.run_test(ctx, APPNAME, command, 0, name=out_filename, quiet=quiet):
autowaf.run_test(
ctx, APPNAME,
lambda: check_output(out_filename, check_filename, '_:docid', '_:genid'),
lambda: check_output(out_filename, check_filename),
True,
name='from ' + out_filename,
name=out_filename,
quiet=quiet)
else:
Logs.pprint('RED', 'FAIL: error running %s' % command)
@ -375,18 +370,20 @@ def test_suite(ctx, base_uri, testdir, report, isyntax, osyntax, options=''): @@ -375,18 +370,20 @@ def test_suite(ctx, base_uri, testdir, report, isyntax, osyntax, options=''):
# Run strict test
result = run_test(command, expected_return, action, quiet=quiet)
if (mf + 'result') in model[test]:
if result[0] and ((mf + 'result') in model[test]):
# Check output against test suite
check_uri = model[test][mf + 'result'][0]
check_path = file_uri_to_path(check_uri)
check_path = build_path(ctx, file_uri_to_path(check_uri))
result = autowaf.run_test(
ctx, APPNAME,
lambda: check_output(action + '.out', check_path),
True, name=str(action) + ' check', quiet=True)
True, name=action, quiet=True)
# Run round-trip tests
test_thru(ctx, uri, action, check_path,
' '.join(next(thru_options_iter)), isyntax, osyntax, options, quiet=True)
if result[0]:
test_thru(ctx, uri, action, check_path,
' '.join(next(thru_options_iter)),
isyntax, osyntax, options, quiet=True)
# Write test report entry
if report is not None:

Loading…
Cancel
Save