-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
10,399 additions
and
1,188 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
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
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
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
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
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,187 @@ | ||
name: Tests / Code Coverage | ||
# Tests / Code Coverage workflow runs unit tests and uploads a code coverage report | ||
# This workflow is run on pushes to master & every Pull Requests where a .go, .mod, .sum have been changed | ||
on: | ||
pull_request: | ||
paths: | ||
- "**.go" | ||
- "go.mod" | ||
- "go.sum" | ||
push: | ||
branches: | ||
- main | ||
jobs: | ||
# This action cleans up previously running instances of a workflow on the same branch. This accomplishes | ||
# the task of automatically cancelling CI runs on pushes to the same branch, which is a common feature in | ||
# most CI systems but currently not possible with GitHub actions. | ||
cleanup-runs: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: rokroskar/[email protected] | ||
env: | ||
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | ||
if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main'" | ||
|
||
|
||
install-tparse: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/[email protected] | ||
with: | ||
go-version: 1.16 | ||
- name: Display go version | ||
run: go version | ||
- name: install tparse | ||
run: | | ||
export GO111MODULE="on" && go get github.com/mfridman/[email protected] | ||
- uses: actions/[email protected] | ||
with: | ||
path: ~/go/bin | ||
key: ${{ runner.os }}-go-tparse-binary | ||
|
||
|
||
split-test-files: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Create a file with all the pkgs | ||
run: go list ./... > pkgs.txt | ||
- name: Split pkgs into 4 files | ||
run: split -d -n l/4 pkgs.txt pkgs.txt.part. | ||
# cache multiple | ||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-00" | ||
path: ./pkgs.txt.part.00 | ||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-01" | ||
path: ./pkgs.txt.part.01 | ||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-02" | ||
path: ./pkgs.txt.part.02 | ||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-03" | ||
path: ./pkgs.txt.part.03 | ||
|
||
|
||
tests: | ||
runs-on: ubuntu-latest | ||
needs: split-test-files | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
part: ["00", "01", "02", "03"] | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
# CodeCov requires fetch-depth > 1 | ||
fetch-depth: 2 | ||
- uses: actions/[email protected] | ||
with: | ||
go-version: 1.16 | ||
- uses: technote-space/get-diff-action@v4 | ||
with: | ||
PATTERNS: | | ||
**/**.go | ||
go.mod | ||
go.sum | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-${{ matrix.part }}" | ||
if: env.GIT_DIFF | ||
- name: test & coverage report creation | ||
run: | | ||
cat pkgs.txt.part.${{ matrix.part }} | xargs go test -mod=readonly -timeout 30m -coverprofile=${{ matrix.part }}profile.out -covermode=atomic -tags='norace ledger test_ledger_mock' | ||
if: env.GIT_DIFF | ||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-${{ matrix.part }}-coverage" | ||
path: ./${{ matrix.part }}profile.out | ||
|
||
|
||
# This action performs a code coverage assessment but filters out generated code from proto based types | ||
# and grpc services | ||
upload-coverage-report: | ||
runs-on: ubuntu-latest | ||
needs: tests | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
# CodeCov requires fetch-depth > 1 | ||
fetch-depth: 2 | ||
- uses: technote-space/get-diff-action@v4 | ||
with: | ||
PATTERNS: | | ||
**/**.go | ||
go.mod | ||
go.sum | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-00-coverage" | ||
if: env.GIT_DIFF | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-01-coverage" | ||
if: env.GIT_DIFF | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-02-coverage" | ||
if: env.GIT_DIFF | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-03-coverage" | ||
if: env.GIT_DIFF | ||
- run: | | ||
cat ./*profile.out | grep -v "mode: atomic" >> coverage.txt | ||
if: env.GIT_DIFF | ||
- name: filter out DONTCOVER | ||
run: | | ||
excludelist="$(find ./ -type f -name '*.go' | xargs grep -l 'DONTCOVER')" | ||
excludelist+=" $(find ./ -type f -name '*.pb.go')" | ||
excludelist+=" $(find ./ -type f -name '*.pb.gw.go')" | ||
excludelist+=" $(find ./ -type f -path './tests/mocks/*.go')" | ||
for filename in ${excludelist}; do | ||
filename=$(echo $filename | sed 's/^./github.com\/cosmos\/cosmos-sdk/g') | ||
echo "Excluding ${filename} from coverage report..." | ||
sed -i.bak "/$(echo $filename | sed 's/\//\\\//g')/d" coverage.txt | ||
done | ||
if: env.GIT_DIFF | ||
- uses: codecov/[email protected] | ||
with: | ||
file: ./coverage.txt | ||
if: env.GIT_DIFF | ||
|
||
|
||
test-race: | ||
runs-on: ubuntu-latest | ||
needs: split-test-files | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
part: ["00", "01", "02", "03"] | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/[email protected] | ||
with: | ||
go-version: 1.16 | ||
- uses: technote-space/get-diff-action@v4 | ||
with: | ||
PATTERNS: | | ||
**/**.go | ||
go.mod | ||
go.sum | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-${{ matrix.part }}" | ||
if: env.GIT_DIFF | ||
- name: test & coverage report creation | ||
run: | | ||
xargs --arg-file=pkgs.txt.part.${{ matrix.part }} go test -mod=readonly -timeout 30m -race -tags='cgo ledger test_ledger_mock' | ||
if: env.GIT_DIFF | ||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: "${{ github.sha }}-${{ matrix.part }}-race-output" | ||
path: ./${{ matrix.part }}-race-output.txt |
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
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
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
Oops, something went wrong.