new/unit-tests #1

Merged
jake merged 3 commits from new/unit-tests into main 2025-05-17 15:47:24 +00:00
3 changed files with 71 additions and 11 deletions

View File

@ -1,13 +1,34 @@
# donotpassgo # donotpassgo
A composite workflow that runs security checks on Go projects. Golang must be installed before this workflow can run. A composite workflow that runs general code checks on Go projects, an optional <b>test</b> input is available to trigger unit tests. See [steps](#steps) for more information on the jobs run
## Usage
adding donotpassgo to workflows is simple, just add the following step to your yaml file:
```yaml
- name: "checkpoint"
uses: https://code.jakeyoungdev.com/actions/donotpassgo@main
```
donotpassgo has optional support for running unit tests, this can be added by setting the <b>test</b> flag to <b>standard</b>
```yaml
- name: "checkpoint"
uses: https://code.jakeyoungdev.com/actions/donotpassgo@main
with:
test: standard
```
running unit tests with ginkgo is also supported by setting the <b>test</b> flag to <b>ginkgo</b>
```yaml
- name: "checkpoint"
uses: https://code.jakeyoungdev.com/actions/donotpassgo@main
with:
test: ginkgo
```
## Steps ## Steps
### govulncheck donotpassgo runs several workflow jobs to ensure quality and secure go code, these steps may be updated as new tools develop.
govulncheck is installed using 'go install' and is used to scan the application dependencies and standard library. ### Dependency Scans
[govulncheck](https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck) is installed using golang and is used to scan for vulnerabilities in the project dependencies and standard library.
### gosec ### Static Code Analysis
gosec is used for static code analysis. [gosec](https://github.com/securego/gosec) inspects source code for security problems
### Unit Tests
## TODO donotpassgo supports two unit tests libraries: the standard go library and [ginkgo](https://github.com/onsi/ginkgo)
1. Add support for unit tests
2. Add ginkgo/gomega support

View File

@ -1,9 +1,20 @@
name: "donotpassgo" name: "donotpassgo"
description: "general go code checks" description: "general go code checks"
inputs:
test:
description: "runs unit tests with specified library"
required: false
default: "none"
runs: runs:
using: "composite" using: "composite"
steps: steps:
- name: "install go packages" - name: "run unit tests"
shell: bash
run: ${{ github.action_path }}/test.sh
env:
LIBRARY: ${{ inputs.test }}
- name: "install govulncheck"
run: | run: |
go install golang.org/x/vuln/cmd/govulncheck@latest go install golang.org/x/vuln/cmd/govulncheck@latest

28
test.sh Executable file
View File

@ -0,0 +1,28 @@
#!/bin/bash
if [[ "$LIBRARY" == "none" ]]; then
echo "Test flag not set, skipping unit tests."
exit 0
fi
if [[ "$LIBRARY" == "standard" ]]; then
echo "Running unit tests with standard library"
if go test ./...; then
echo "Tests passed!"
exit 0
else
echo "Tests failed!"
exit 1
fi
fi
if [[ "$LIBRARY" == "ginkgo" ]]; then
echo "Running unit tests with ginkgo"
go install github.com/onsi/ginkgo/v2/ginkgo@v2.23.4
if ginkgo ./...; then
echo "Tests passed!"
exit 0
else
echo "Tests failed!"
exit 1
fi
fi