From 634cfdc9a140023862b484a7e2def7bb8357aa9b Mon Sep 17 00:00:00 2001 From: Sander Ploegsma Date: Fri, 9 Feb 2024 14:18:27 +0100 Subject: [PATCH 1/2] Create basic annotations from test-runner output --- .github/workflows/java.yml | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index 6bbfd0762..74151a2f9 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -46,9 +46,32 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - name: Test all exercises using java-test-runner run: bin/test-with-test-runner - - name: Archive test results - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + - name: Create test summary + uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 with: - name: test-results - path: exercises/**/build/results.json - if: failure() + script: | + const fs = require('node:fs/promises') + const globber = await glob.create('exercises/**/build/results.json') + for await (const file of globber.globGenerator()) { + const data = await fs.readFile(file, 'utf8') + const results = JSON.parse(data) + + if (results.status === 'error') { + core.error(results.message, {title: `Error while running tests`}); + continue; + } + + for (const test of results.tests) { + switch (test.status) { + case "pass": + core.info(`Test passed: ${test.name}`); + break; + case "fail": + core.warning(test.message, {title: `Test failed: ${test.name}`}); + break; + case "error": + core.warning(test.message, {title: `Test errored: ${test.name}`}); + break; + } + } + } From 040707a9dcf392a4b52f78a76ff0dc348fb52ae0 Mon Sep 17 00:00:00 2001 From: Sander Ploegsma Date: Fri, 9 Feb 2024 14:41:56 +0100 Subject: [PATCH 2/2] Add exercise slug to output --- .github/workflows/java.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index 74151a2f9..b73d451dc 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -53,24 +53,25 @@ jobs: const fs = require('node:fs/promises') const globber = await glob.create('exercises/**/build/results.json') for await (const file of globber.globGenerator()) { + const slug = file.split('/').slice(-3, -2)[0] const data = await fs.readFile(file, 'utf8') const results = JSON.parse(data) if (results.status === 'error') { - core.error(results.message, {title: `Error while running tests`}); + core.error(results.message, {title: `[${slug}] Error while running tests`}); continue; } for (const test of results.tests) { switch (test.status) { case "pass": - core.info(`Test passed: ${test.name}`); + core.info(`[${slug}] Test passed: ${test.name}`); break; case "fail": - core.warning(test.message, {title: `Test failed: ${test.name}`}); + core.warning(test.message, {title: `[${slug}] Test failed: ${test.name}`}); break; case "error": - core.warning(test.message, {title: `Test errored: ${test.name}`}); + core.warning(test.message, {title: `[${slug}] Test errored: ${test.name}`}); break; } }