Changeset: 6ec0c4c84752 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6ec0c4c84752
Modified Files:
testing/sqltest.py
Branch: Aug2024
Log Message:
Added a parameter `ratio` to filter_matching_blocks to allow specifying the
strictness of the comparison.
diffs (103 lines):
diff --git a/testing/sqltest.py b/testing/sqltest.py
--- a/testing/sqltest.py
+++ b/testing/sqltest.py
@@ -99,7 +99,7 @@ def filter_lines_starting_with(predicate
return _fn
-def filter_matching_blocks(a: [str] = [], b: [str] = []):
+def filter_matching_blocks(a: [str] = [], b: [str] = [], ratio=0.95):
# TODO add some ctx before any mismatch lines
ptr = 0
red_a = []
@@ -110,7 +110,7 @@ def filter_matching_blocks(a: [str] = []
s.set_seq1(a[i].replace('\t', '').replace(' ', ''))
s.set_seq2(b[i].replace('\t', '').replace(' ', ''))
# should be high matching ratio
- if s.quick_ratio() < 0.95:
+ if s.quick_ratio() < ratio:
red_a.append(a[i])
red_b.append(b[i])
# keep track of last mismatch to add some ctx in between
@@ -120,14 +120,14 @@ def filter_matching_blocks(a: [str] = []
red_b+=b[min_size:]
return red_a, red_b
-def diff(stable_file, test_file):
+def diff(stable_file, test_file, ratio=0.95):
diff = None
filter_fn = filter_lines_starting_with(['--', '#', 'stdout of test',
'stderr of test', 'MAPI'])
with open(stable_file) as fstable:
stable = list(filter(filter_fn, fstable.read().split('\n')))
with open(test_file) as ftest:
test = list(filter(filter_fn, ftest.read().split('\n')))
- a, b = filter_matching_blocks(stable, test)
+ a, b = filter_matching_blocks(stable, test, ratio)
diff = list(difflib.unified_diff(a, b, fromfile='stable',
tofile='test'))
if len(diff) > 0:
diff = '\n'.join(diff)
@@ -421,7 +421,7 @@ class MclientTestResult(TestCaseResult,
raise SystemExit(e)
return self
- def assertMatchStableOut(self, fout, ignore_headers=False):
+ def assertMatchStableOut(self, fout, ignore_headers=False, ratio=0.95):
stable = []
data = list(filter(filter_junk, self.output.split('\n')))
with open(fout, 'r') as f:
@@ -429,7 +429,7 @@ class MclientTestResult(TestCaseResult,
if ignore_headers:
stable = list(filter(filter_headers, stable))
data = list(filter(filter_headers, data))
- a, b = filter_matching_blocks(stable, data)
+ a, b = filter_matching_blocks(stable, data, ratio)
if a or b:
diff = list(difflib.unified_diff(stable, data, fromfile='stable',
tofile='test'))
if len(diff) > 0:
@@ -440,7 +440,7 @@ class MclientTestResult(TestCaseResult,
self.fail(msg)
return self
- def assertMatchStableError(self, ferr, ignore_err_messages=False):
+ def assertMatchStableError(self, ferr, ignore_err_messages=False,
ratio=0.95):
stable = []
err = []
filter_fn = filter_lines_starting_with(['--', '#', 'stderr of test',
'MAPI'])
@@ -448,7 +448,7 @@ class MclientTestResult(TestCaseResult,
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)
+ a, b = filter_matching_blocks(stable, err, ratio)
diff = list(difflib.unified_diff(a, b, fromfile='stable',
tofile='test'))
if len(diff) > 0:
err_file = self.test_case.err_file
@@ -458,10 +458,10 @@ class MclientTestResult(TestCaseResult,
self.fail(msg)
return self
- def assertDataResultMatch(self, expected):
+ def assertDataResultMatch(self, expected, ratio=0.95):
data = list(filter(filter_junk, self.output.split('\n')))
data = list(filter(filter_headers, data))
- a, b = filter_matching_blocks(expected, data)
+ a, b = filter_matching_blocks(expected, data, ratio)
diff = list(difflib.unified_diff(a, b, fromfile='expected',
tofile='test'))
if len(diff) > 0:
err_file = self.test_case.err_file
@@ -565,13 +565,13 @@ class SQLDump():
self.data = data
self.assertion_errors = [] # holds assertion errors
- def assertMatchStableOut(self, fout):
+ def assertMatchStableOut(self, fout, ratio=0.95):
stable = []
data = self.data.split('\n') if self.data else []
dump = list(filter(filter_junk, data))
with open(fout, 'r') as f:
stable = list(filter(filter_junk, f.read().split('\n')))
- a, b = filter_matching_blocks(stable, dump)
+ a, b = filter_matching_blocks(stable, dump, ratio)
diff = list(difflib.unified_diff(a, b, fromfile='stable',
tofile='test'))
if len(diff) > 0:
err_file = self.test_case.err_file
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]