diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index d8c1bb6c49..455545aeef 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -265,6 +265,7 @@ jobs:
failure_screenshots/
codecov-units:
+ name: Unit tests with code coverage
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
@@ -290,6 +291,7 @@ jobs:
build/reports/jacoco/allCodeCoverageReport/allCodeCoverageReport.xml
sonarqube:
+ name: Sonarqube upload
runs-on: macos-latest
if: always()
needs:
@@ -319,6 +321,7 @@ jobs:
# Notify the channel about scheduled runs, do not notify for manually triggered runs
notify:
+ name: Notify matrix
runs-on: ubuntu-latest
needs:
- integration-tests
@@ -333,4 +336,4 @@ jobs:
matrix_access_token: ${{ secrets.ELEMENT_ANDROID_NOTIFICATION_ACCESS_TOKEN }}
matrix_room_id: ${{ secrets.ELEMENT_ANDROID_INTERNAL_ROOM_ID }}
text_template: "Nightly test run: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
- html_template: "Nightly test run results: {{#each job_statuses }}{{#with this }}{{#if completed }}
{{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}"
+ html_template: "Nightly test run results: {{#each job_statuses }}{{#with this }}{{#if completed }}
{{icon conclusion}} {{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}"
diff --git a/tools/ci/render_test_output.py b/tools/ci/render_test_output.py
index 1e7940ce04..f955b93cf9 100755
--- a/tools/ci/render_test_output.py
+++ b/tools/ci/render_test_output.py
@@ -13,32 +13,35 @@ print("::group::Arguments")
print(f"{sys.argv}")
print("::endgroup::")
for xmlfile in xmlfiles:
- tree = ET.parse(xmlfile)
+ try:
+ tree = ET.parse(xmlfile)
- root = tree.getroot()
- name = root.attrib['name']
- time = root.attrib['time']
- tests = int(root.attrib['tests'])
- skipped = int(root.attrib['skipped'])
- errors = int(root.attrib['errors'])
- failures = int(root.attrib['failures'])
- success = tests - failures - errors - skipped
- total = tests - skipped
- print(f"::group::{name} {success}/{total} ({skipped} skipped) in {time}")
-
- for testcase in root:
- if testcase.tag != "testcase":
- continue
- testname = testcase.attrib['classname']
- message = testcase.attrib['name']
- time = testcase.attrib['time']
- child = testcase.find("failure")
- if child is None:
- print(f"{message} in {time}s")
- else:
- print(f"::error file={testname}::{message} in {time}s")
- print(child.text)
- body = f"passed={success} failures={failures} errors={errors} skipped={skipped}"
- print(f"::set-output name={suitename}::={body}")
+ root = tree.getroot()
+ name = root.attrib['name']
+ time = root.attrib['time']
+ tests = int(root.attrib['tests'])
+ skipped = int(root.attrib['skipped'])
+ errors = int(root.attrib['errors'])
+ failures = int(root.attrib['failures'])
+ success = tests - failures - errors - skipped
+ total = tests - skipped
+ print(f"::group::{name} {success}/{total} ({skipped} skipped) in {time}")
+
+ for testcase in root:
+ if testcase.tag != "testcase":
+ continue
+ testname = testcase.attrib['classname']
+ message = testcase.attrib['name']
+ time = testcase.attrib['time']
+ child = testcase.find("failure")
+ if child is None:
+ print(f"{message} in {time}s")
+ else:
+ print(f"::error file={testname}::{message} in {time}s")
+ print(child.text)
+ body = f" passed={success} failures={failures} errors={errors} skipped={skipped}"
+ print(f"::set-output name={suitename}::={body}")
+ except FileNotFoundError:
+ print(f"::error::Unable to open test results file {xmlfile} - check if the tests completed")
print("::endgroup::")