-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: step summary of test results (#1580)
* feat: step summary of test results * fix: indent style * fix: handle failed tests * fix upload / create a logs artifact * Update checks.yml * fix: always upload logs * fix: run success * Move steps into a composite action * use args and not the hardcoded ones * format composite action * format
- Loading branch information
1 parent
09e9f6a
commit 932863b
Showing
2 changed files
with
86 additions
and
3 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 |
---|---|---|
@@ -0,0 +1,77 @@ | ||
name: 'run-tests' | ||
description: 'Runs go test and upload a step summary' | ||
inputs: | ||
filter: | ||
description: 'The go test pattern for the tests to run' | ||
required: false | ||
default: '' | ||
upload-logs-name: | ||
description: 'Choose the name of the log artifact' | ||
required: false | ||
default: logs-${{ github.job }}-${{ strategy.job-index }} | ||
upload-logs: | ||
description: 'If true uploads logs of each tests as an artifact' | ||
required: false | ||
default: 'true' | ||
runs: | ||
using: composite | ||
steps: | ||
- uses: actions/github-script@v6 | ||
with: | ||
github-token: none # No reason to grant access to the GITHUB_TOKEN | ||
script: | | ||
let myOutput = ''; | ||
var fs = require('fs'); | ||
var uploadLogs = process.env.UPLOAD_LOGS === 'true'; | ||
if(uploadLogs) { | ||
await io.mkdirP('logs'); | ||
} | ||
var filename = null; | ||
const options = {}; | ||
options.ignoreReturnCode = true; | ||
options.env = Object.assign({}, process.env); | ||
delete options.env.ACTIONS_RUNTIME_URL; | ||
delete options.env.ACTIONS_RUNTIME_TOKEN; | ||
delete options.env.ACTIONS_CACHE_URL; | ||
options.listeners = { | ||
stdout: (data) => { | ||
for(line of data.toString().split('\n')) { | ||
if(/^\s*(===\s[^\s]+\s|---\s[^\s]+:\s)/.test(line)) { | ||
if(uploadLogs) { | ||
var runprefix = "=== RUN "; | ||
if(line.startsWith(runprefix)) { | ||
filename = "logs/" + line.substring(runprefix.length).replace(/[^A-Za-z0-9]/g, '-') + ".txt"; | ||
fs.writeFileSync(filename, line + "\n"); | ||
} else if(filename) { | ||
fs.appendFileSync(filename, line + "\n"); | ||
filename = null; | ||
} | ||
} | ||
myOutput += line + "\n"; | ||
} else if(filename) { | ||
fs.appendFileSync(filename, line + "\n"); | ||
} | ||
} | ||
} | ||
}; | ||
var args = ['test', '-v', '-cover', '-coverprofile=coverage.txt', '-covermode=atomic', '-timeout', '15m']; | ||
var filter = process.env.FILTER; | ||
if(filter) { | ||
args.push('-run'); | ||
args.push(filter); | ||
} | ||
args.push('./...'); | ||
var exitcode = await exec.exec('go', args, options); | ||
if(process.env.GITHUB_STEP_SUMMARY) { | ||
core.summary.addCodeBlock(myOutput); | ||
await core.summary.write(); | ||
} | ||
process.exit(exitcode); | ||
env: | ||
FILTER: ${{ inputs.filter }} | ||
UPLOAD_LOGS: ${{ inputs.upload-logs }} | ||
- uses: actions/upload-artifact@v3 | ||
if: always() && inputs.upload-logs == 'true' && !env.ACT | ||
with: | ||
name: ${{ inputs.upload-logs-name }} | ||
path: logs |
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