-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request CGAL#8235 from SaillantNicolas/Extract-cmake-logs-…
…in-testresults-GF TESTSUITE: Extract cmake logs in testresults.
- Loading branch information
Showing
1 changed file
with
113 additions
and
58 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,75 +1,130 @@ | ||
import sys | ||
import io | ||
import re | ||
import os | ||
|
||
report_file=sys.argv[1] | ||
report_name=sys.argv[2] | ||
global_report_name=sys.argv[3] | ||
rx=re.compile('(.*Configuring (examples|demo|test)*( in )*(test\/|examples\/|demo\/)*)((?!done)\w+)') | ||
rx_demo=re.compile('.*in demo\/') | ||
rx_examples=re.compile('.*in examples\/') | ||
input_report_file_name=sys.argv[1] | ||
report_file_name=sys.argv[2] | ||
global_report_file_name=sys.argv[3] | ||
config_regex=re.compile(r'(.*Configuring (examples|demo|test)*( in )*(test/|examples/|demo/)*)((?!done)\w+)') | ||
demo_regex=re.compile(r'.*in demo/') | ||
examples_regex=re.compile(r'.*in examples/') | ||
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="" | ||
is_writing=False | ||
is_ignored=False | ||
global_report=open(global_report_name, "a+") | ||
with open(report_file, "rt") as test_report: | ||
for myline in test_report: | ||
m=rx.match(myline) | ||
|
||
if is_writing: | ||
if m: | ||
is_writing=False | ||
test_report.close() | ||
if is_ignored: | ||
print("{label} {result}".format(label=name, result='r'), file=global_report) | ||
is_ignored=False | ||
else: | ||
test_report.write(myline) | ||
if not is_writing: | ||
if m: | ||
name=m.group(0).replace(m.group(1), "") | ||
if rx_demo.match(myline): | ||
name="{str}_Demo".format(str=name) | ||
elif rx_examples.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) | ||
test_report=open("{dir}/{file}".format(dir=name, file=report_name), "w+") | ||
print(""" | ||
{scm_branch} | ||
""" .format(scm_branch=open("{}/../../../../../.scm-branch".format(os.getcwd()), 'r').read()),file=test_report) | ||
else: | ||
is_ignored=False | ||
test_report=open("{dir}/{file}".format(dir=name, file=report_name), "a+") | ||
test_report.write(" --- CMake Results: --- \n\n") | ||
is_writing=True | ||
position = 0 | ||
lines_to_write = [] | ||
installation_cmake_logs = [] | ||
|
||
|
||
|
||
def find_third_separator(inner_contents): | ||
separator_count = 0 | ||
for j, inner_line in enumerate(inner_contents): | ||
if inner_line.strip() == Separator: | ||
separator_count += 1 | ||
if separator_count == 3: | ||
return j | ||
return len(inner_contents) + 2 | ||
|
||
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", encoding="utf-8") as file: | ||
contents = file.readlines() | ||
position = find_last_separator(contents) | ||
for i, line in enumerate(contents): | ||
if i > position: | ||
installation_cmake_logs.append(line) | ||
if line.strip() == "== Generating build files for tests ==": | ||
break | ||
contents = [] | ||
|
||
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: | ||
is_writing = False | ||
input_report_file.close() | ||
if is_ignored: | ||
print("{label} {result}".format(label=name, result='r'), file=global_report) | ||
is_ignored = False | ||
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", encoding="utf-8") as file: | ||
contents = file.readlines() | ||
else: | ||
contents = [] | ||
|
||
position = find_third_separator(contents) | ||
|
||
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", encoding="utf-8") as file: | ||
file.write("".join(contents)) | ||
|
||
lines_to_write = [] | ||
|
||
if is_ignored: | ||
is_ignored = False | ||
else: | ||
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", 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() |