## Description moving test-race to its own job allows us to run it or normal tests on their own. this reduces running jobs. The down side is if they both fail we then have to rerun both of them. --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable)
205 lines
6.1 KiB
YAML
205 lines
6.1 KiB
YAML
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:
|
|
push:
|
|
branches:
|
|
- master
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
go-arch: ["amd64", "arm", "arm64"]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-go@v2.1.5
|
|
with:
|
|
go-version: 1.17
|
|
- uses: technote-space/get-diff-action@v6.0.1
|
|
id: git_diff
|
|
with:
|
|
PATTERNS: |
|
|
**/**.go
|
|
**/go.mod
|
|
**/go.sum
|
|
- name: Build
|
|
run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make build
|
|
|
|
- name: Build cosmovisor
|
|
run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make cosmovisor
|
|
|
|
test-submodules:
|
|
runs-on: ubuntu-latest
|
|
container: tendermintdev/docker-tm-db-testing
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-go@v2.1.5
|
|
with:
|
|
go-version: 1.17
|
|
- uses: technote-space/get-diff-action@v6.0.1
|
|
id: git_diff
|
|
with:
|
|
PATTERNS: |
|
|
**/**.go
|
|
go.mod
|
|
go.sum
|
|
- name: Run submodule tests and create test coverage profile.
|
|
# GIT_DIFF is passed to the scripts
|
|
run: bash scripts/module-tests.sh
|
|
if: env.GIT_DIFF
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-go-submodules-coverage"
|
|
path: ./coverage-go-submod-profile.out
|
|
|
|
split-test-files:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Create a file with all core Cosmos SDK 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
|
|
- uses: actions/setup-go@v2.1.5
|
|
with:
|
|
go-version: 1.17
|
|
- uses: technote-space/get-diff-action@v6.0.1
|
|
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
|
|
|
|
upload-coverage-report:
|
|
runs-on: ubuntu-latest
|
|
needs: tests
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: technote-space/get-diff-action@v6.0.1
|
|
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
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-go-submodules-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/codecov-action@v2.1.0
|
|
with:
|
|
file: ./coverage.txt
|
|
if: env.GIT_DIFF
|
|
|
|
test-rosetta:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: technote-space/get-diff-action@v6.0.1
|
|
id: git_diff
|
|
with:
|
|
PATTERNS: |
|
|
**/**.go
|
|
go.mod
|
|
go.sum
|
|
- name: test rosetta
|
|
run: |
|
|
make test-rosetta
|
|
# if: env.GIT_DIFF
|
|
|
|
liveness-test:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-go@v2.1.5
|
|
with:
|
|
go-version: 1.17
|
|
- uses: technote-space/get-diff-action@v6.0.1
|
|
id: git_diff
|
|
with:
|
|
PATTERNS: |
|
|
**/**.go
|
|
go.mod
|
|
go.sum
|
|
- name: start localnet
|
|
run: |
|
|
make clean localnet-start
|
|
if: env.GIT_DIFF
|
|
- name: test liveness
|
|
run: |
|
|
./contrib/localnet_liveness.sh 100 5 50 localhost
|
|
if: env.GIT_DIFF
|