Просмотр исходного кода

ci: better yunit/gtest log finding

nkozlovskiy 1 год назад
Родитель
Сommit
9b2a58f038
1 измененных файлов с 13 добавлено и 7 удалено
  1. 13 7
      .github/scripts/tests/attach-logs.py

+ 13 - 7
.github/scripts/tests/attach-logs.py

@@ -28,7 +28,6 @@ def make_filename(n, *parts):
 def save_log(err_lines: List[str], out_path: Path, *parts):
     for x in range(128):
         fn = make_filename(x, *parts)
-        print(f"save {fn} for {'::'.join(parts)}")
         path = out_path.joinpath(fn)
         try:
             with open(path, "xt") as fp:
@@ -37,6 +36,7 @@ def save_log(err_lines: List[str], out_path: Path, *parts):
         except FileExistsError:
             pass
         else:
+            print(f"save {fn} for {'::'.join(parts)}")
             return fn, path
 
     raise Exception("Unable to create file")
@@ -56,20 +56,26 @@ def extract_logs(log_fp: io.StringIO, out_path: Path, url_prefix):
         if not ctest_buf:
             continue
 
-        first_line = ctest_buf[0]
+        line_no = 0
+        while line_no < len(ctest_buf):
+            if ctest_buf[line_no].startswith((YUNIT_MARK, GTEST_MARK)):
+                break
+            line_no += 1
+        else:
+            continue
 
-        if first_line.startswith(GTEST_MARK):
-            for classname, method, err_lines in parse_gtest_fails(ctest_buf):
+        if ctest_buf[line_no].startswith(GTEST_MARK):
+            for classname, method, err_lines in parse_gtest_fails(ctest_buf[line_no:]):
                 fn, path = save_log(err_lines, out_path, classname, method)
                 log_url = f"{url_prefix}{fn}"
                 shard.add_testcase(classname, method, path, log_url)
-        elif first_line.startswith(YUNIT_MARK):
-            for classname, method, err_lines in parse_yunit_fails(ctest_buf):
+        elif ctest_buf[line_no].startswith(YUNIT_MARK):
+            for classname, method, err_lines in parse_yunit_fails(ctest_buf[line_no:]):
                 fn, path = save_log(err_lines, out_path, classname, method)
                 log_url = f"{url_prefix}{fn}"
                 shard.add_testcase(classname, method, path, log_url)
         else:
-            pass
+            raise Exception("We checked known test markers in the while loop")
 
     return ctestlog