diff --git a/Testsuite/test/post_process_ctest_results.py b/Testsuite/test/post_process_ctest_results.py index e882d535d8d..23478df950b 100644 --- a/Testsuite/test/post_process_ctest_results.py +++ b/Testsuite/test/post_process_ctest_results.py @@ -1,9 +1,8 @@ import sys -import io import re import os -input_report_file=sys.argv[1] +input_report_file_name=sys.argv[1] report_file_name=sys.argv[2] global_report_file_name=sys.argv[3] config_regex=re.compile('(.*Configuring (examples|demo|test)*( in )*(test\/|examples\/|demo\/)*)((?!done)\w+)') @@ -13,9 +12,9 @@ Separator = "------------------------------------------------------------------" #open the Installation report -#For each NAME, check if NAME is a directory. If not, create one, create a +#For each NAME, check if NAME is a directory. If not, create one, create a #text report, and write everything that is in the report until the next NAME -#in it. Then, add 'NAME r' in the global report. This should allow to get all +#in it. Then, add 'NAME r' in the global report. This should allow to get all #the NOTICE and other info explaining why the configuration is skipped. name="" @@ -27,23 +26,23 @@ installation_cmake_logs = [] -def find_third_separator(contents): +def find_third_separator(inner_contents): separator_count = 0 - for i, line in enumerate(contents): - if line.strip() == Separator: + for j, inner_line in enumerate(inner_contents): + if inner_line.strip() == Separator: separator_count += 1 if separator_count == 3: - return i - return len(contents) + 2 + return j + return len(inner_contents) + 2 -def find_last_separator(contents): - for i, line in enumerate(contents): - if line.strip() == Separator: - position = i - return position +def find_last_separator(inner_contents): + for j, inner_line in enumerate(inner_contents): + if inner_line.strip() == Separator: + inner_position = j + return inner_position -with open ("{dir}/{file}".format(dir="Installation",file=report_file_name), "r") as file: - contents = file.readlines() +with open ("{dir}/{file}".format(dir="Installation",file=report_file_name), "r", encoding="utf-8") as file: + contents = file.readlines() position = find_last_separator(contents) for i, line in enumerate(contents): if i > position: @@ -52,9 +51,9 @@ for i, line in enumerate(contents): break contents = [] -global_report = open(global_report_file_name, "a+") -with open(input_report_file, "rt") as test_report: - for myline in test_report: +global_report = open(global_report_file_name, "a+", encoding="utf-8") +with open(input_report_file_name, "rt", encoding="utf-8") as input_report_file: + for myline in input_report_file: match = config_regex.match(myline) if is_writing: if match: @@ -62,24 +61,24 @@ with open(input_report_file, "rt") as test_report: if lines_to_write: file_path = "{dir}/{file}".format(dir=name, file=report_file_name) if os.path.exists(file_path): - with open(file_path, "r") as file: + with open(file_path, "r", encoding="utf-8") as file: contents = file.readlines() else: contents = [] position = find_third_separator(contents) - if Separator + "\n- CMake Results \n" + Separator not in lines_to_write: - lines_to_write.insert(0,Separator + "\n- CMake Results \n" + Separator + "\n") - if Separator + "\n- CMake Logs \n" + Separator not in contents: - contents.insert(position - 1, Separator + "\n- CMake Logs \n" + Separator + "\n\n") + if not any(re.search("- CMake Results .*", content) for content in contents): + lines_to_write.insert(0, f"{Separator}\n- CMake Results for {name}\n{Separator}\n\n") + if not any(re.search("- CMake Logs .*", content) for content in contents): + contents.insert(position - 1, Separator + "\n- CMake Logs from Installation \n" + Separator + "\n\n") for log in installation_cmake_logs: contents.insert(position, log) position += 1 lines_to_write.insert(0, "\n") contents[position:position] = lines_to_write - with open(file_path, "w") as file: + with open(file_path, "w", encoding="utf-8") as file: file.write("".join(contents)) lines_to_write = [] @@ -90,38 +89,38 @@ with open(input_report_file, "rt") as test_report: if myline.strip() != "": lines_to_write.append(myline) if not is_writing: - if match: - name=match.group(0).replace(match.group(1), "") - if demo_regex.match(myline): - name="{str}_Demo".format(str=name) - elif examples_regex.match(myline): - name="{str}_Examples".format(str=name) - elif name == "libCGAL": - name="libCGAL_shared" - elif name == "libCGAL_Core": - name="libCGALCore_shared" - elif name == "libCGAL_ImageIO": - name="libCGALimageIO_shared" - elif name == "libCGAL_Qt6": - name="libCGALQt6_shared" - if name=="incomplete": - is_writing=False - is_ignored=False - continue - else: - if not os.path.isdir(name): - is_ignored = True - os.mkdir(name) - with open("{dir}/{file}".format(dir=name, file=report_file_name), "w") as test_report: - test_report.write(open("{}/../../../../../.scm-branch".format(os.getcwd()), 'r').read()) + if match: + name=match.group(0).replace(match.group(1), "") + if demo_regex.match(myline): + name="{str}_Demo".format(str=name) + elif examples_regex.match(myline): + name="{str}_Examples".format(str=name) + elif name == "libCGAL": + name="libCGAL_shared" + elif name == "libCGAL_Core": + name="libCGALCore_shared" + elif name == "libCGAL_ImageIO": + name="libCGALimageIO_shared" + elif name == "libCGAL_Qt6": + name="libCGALQt6_shared" + if name=="incomplete": + is_writing=False + is_ignored=False + continue else: - is_ignored = False - is_writing = True + if not os.path.isdir(name): + is_ignored = True + os.mkdir(name) + with open("{dir}/{file}".format(dir=name, file=report_file_name), "w", encoding="utf-8") as input_report_file: + input_report_file.write(open("{}/../../../../../.scm-branch".format(os.getcwd()), 'r', encoding="utf-8").read()) + else: + is_ignored = False + is_writing = True if is_writing: is_writing=False - test_report.close() + input_report_file.close() if is_ignored: - print("{label} {result}".format(label=name, result='r'), file=global_report) - is_ignored=False + print("{label} {result}".format(label=name, result='r'), file=global_report) + is_ignored=False global_report.close()