|
26 | 26 | import shutil |
27 | 27 | import difflib |
28 | 28 | import configparser |
| 29 | +from typing import List, Sequence |
29 | 30 |
|
30 | 31 | import test_engine_globals |
31 | 32 | from test_engine_support import OSCommand |
@@ -1134,8 +1135,41 @@ def filter(self,line): |
1134 | 1135 | return line |
1135 | 1136 |
|
1136 | 1137 |
|
| 1138 | +def _read_and_filter( |
| 1139 | + fileloc: str, |
| 1140 | + filters: Sequence[LineFilter], |
| 1141 | + sort: bool |
| 1142 | +) -> List[str]: |
| 1143 | + lines = list() |
| 1144 | + |
| 1145 | + with open(fileloc) as fp: |
| 1146 | + for filter in filters: |
| 1147 | + filter.reset() |
| 1148 | + for line in fp: |
| 1149 | + filt_line = line |
| 1150 | + for filter in filters: |
| 1151 | + filt_line = filter.filter(filt_line) |
| 1152 | + if not filt_line: |
| 1153 | + break |
| 1154 | + |
| 1155 | + if filt_line: |
| 1156 | + lines.append(filt_line) |
| 1157 | + |
| 1158 | + if sort: |
| 1159 | + lines.sort() |
| 1160 | + |
| 1161 | + return lines |
| 1162 | + |
| 1163 | + |
1137 | 1164 | ### Diff functions |
1138 | | -def testing_compare_filtered_diff(test_name, outfile, reffile, sort=False, filters=[]): |
| 1165 | +def testing_compare_filtered_diff( |
| 1166 | + test_name: str, |
| 1167 | + outfile: str, |
| 1168 | + reffile: str, |
| 1169 | + sort: bool = False, |
| 1170 | + filters = list(), |
| 1171 | + do_statistics_comparison: bool = False, |
| 1172 | +): |
1139 | 1173 | """Filter, optionally sort and then compare 2 files for a difference. |
1140 | 1174 |
|
1141 | 1175 | Args: |
@@ -1168,41 +1202,9 @@ def testing_compare_filtered_diff(test_name, outfile, reffile, sort=False, filte |
1168 | 1202 | log_error("Cannot diff files: Ref File {0} does not exist".format(reffile)) |
1169 | 1203 | return False |
1170 | 1204 |
|
1171 | | - # Read in the output file and optionally sort it |
1172 | | - with open(outfile) as fp: |
1173 | | - for filter in filters: |
1174 | | - filter.reset() |
1175 | | - out_lines = [] |
1176 | | - for line in fp: |
1177 | | - filt_line = line |
1178 | | - for filter in filters: |
1179 | | - filt_line = filter.filter(filt_line) |
1180 | | - if not filt_line: |
1181 | | - break; |
1182 | | - |
1183 | | - if filt_line: |
1184 | | - out_lines.append(filt_line) |
1185 | | - |
1186 | | - if sort: |
1187 | | - out_lines.sort() |
1188 | | - |
1189 | | - # Read in the reference file and optionally sort it |
1190 | | - with open(reffile) as fp: |
1191 | | - for filter in filters: |
1192 | | - filter.reset() |
1193 | | - ref_lines = [] |
1194 | | - for line in fp: |
1195 | | - filt_line = line |
1196 | | - for filter in filters: |
1197 | | - filt_line = filter.filter(filt_line) |
1198 | | - if not filt_line: |
1199 | | - break; |
1200 | | - |
1201 | | - if filt_line: |
1202 | | - ref_lines.append(filt_line) |
1203 | | - |
1204 | | - if sort: |
1205 | | - ref_lines.sort() |
| 1205 | + # Read in the output and reference files, and optionally sorting them |
| 1206 | + out_lines = _read_and_filter(outfile, filters, sort) |
| 1207 | + ref_lines = _read_and_filter(reffile, filters, sort) |
1206 | 1208 |
|
1207 | 1209 | # Get the diff between the files |
1208 | 1210 | diff = difflib.unified_diff(out_lines,ref_lines,outfile,reffile,n=1) |
|
0 commit comments