Changeset: 1ec84b6868e9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1ec84b6868e9
Modified Files:
testing/sqltest.py
Branch: mtest
Log Message:
match on stable err as well
diffs (66 lines):
diff --git a/testing/sqltest.py b/testing/sqltest.py
--- a/testing/sqltest.py
+++ b/testing/sqltest.py
@@ -56,7 +56,7 @@ def filter_junk(s: str):
return True
def filter_headers(s: str):
- """filters lines prefixed with % (MAPI headers)"""
+ """filter lines prefixed with % (MAPI headers)"""
s = s.strip()
if s.startswith('%'):
return False
@@ -64,6 +64,18 @@ def filter_headers(s: str):
return False
return True
+def filter_lines_starting_with(predicates=[]):
+ def _fn(line:str):
+ line = line.strip()
+ if line == '':
+ return False
+ for p in predicates:
+ if line.startswith(p):
+ return False
+ return True
+ return _fn
+
+
def filter_matching_blocks(a: [str] = [], b: [str] = []):
# TODO add some ctx before any mismatch lines
ptr = 0
@@ -302,6 +314,7 @@ class MclientTestResult(TestCaseResult,
try:
if query:
self.query = query
+ # TODO multiline stmts won't work here ensure single stmt
with process.client('sql', **kwargs, \
args=list(args), \
stdin=process.PIPE, \
@@ -340,7 +353,25 @@ class MclientTestResult(TestCaseResult,
diff = list(difflib.unified_diff(a, b, fromfile='stable',
tofile='test'))
if len(diff) > 0:
err_file = self.test_case.err_file
- msg = "sql query result expected to match stable output {} but it
didnt\'t\n".format(fout)
+ msg = "expected to match stable output {} but it
didnt\'t\n".format(fout)
+ msg+='\n'.join(diff)
+ self.assertion_errors.append(AssertionError(msg))
+ self.fail(msg)
+ return self
+
+ def assertMatchStableError(self, ferr):
+ stable = []
+ err = []
+ filter_fn = filter_lines_starting_with(['--', '#', 'stderr of test',
'MAPI'])
+ if self.test_run_error:
+ err = list(filter(filter_fn, self.test_run_error.split('\n')))
+ with open(ferr, 'r') as f:
+ stable = list(filter(filter_fn, f.read().split('\n')))
+ a, b = filter_matching_blocks(stable, err)
+ diff = list(difflib.unified_diff(a, b, fromfile='stable',
tofile='test'))
+ if len(diff) > 0:
+ err_file = self.test_case.err_file
+ msg = "expected to match stable error {} but it
didnt\'t\n".format(ferr)
msg+='\n'.join(diff)
self.assertion_errors.append(AssertionError(msg))
self.fail(msg)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list