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::")