Move images into contrib/images/. Replace "bad tag" cosmos-sdk/simapp with cosmos-sdk/simd-env. 'simapp' is a misnomer as the images serves only as host environment for the binaries that are in fact built by the developer on their machine. Remove the build-docker-local-simapp target altogether from the Makefile in favor of an inline conditional statement that causes the image to be rebuilt if and only if it had not been built before. simd binary won't run as root anymore as root privileges are dropped upon simd binary installation. Co-authored-by: Marko Baricevic <marbar3778@yahoo.com> Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com>
228 lines
7.6 KiB
YAML
228 lines
7.6 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:
|
|
cleanup-runs:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: rokroskar/workflow-run-cleanup-action@master
|
|
env:
|
|
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/master'"
|
|
|
|
test-cosmovisor:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: technote-space/get-diff-action@v1
|
|
id: git_diff
|
|
with:
|
|
PREFIX_FILTER: |
|
|
cosmovisor
|
|
SUFFIX_FILTER: |
|
|
.go
|
|
.mod
|
|
.sum
|
|
- name: Run cosmovisor tests
|
|
run: cd cosmovisor; go test .
|
|
if: "env.GIT_DIFF != ''"
|
|
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 -n l/4 --additional-suffix=.txt ./pkgs.txt
|
|
# cache multiple
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-aa"
|
|
path: ./xaa.txt
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-ab"
|
|
path: ./xab.txt
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-ac"
|
|
path: ./xac.txt
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-ad"
|
|
path: ./xad.txt
|
|
|
|
test-coverage-run-1:
|
|
runs-on: ubuntu-latest
|
|
needs: split-test-files
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: technote-space/get-diff-action@v3
|
|
id: git_diff
|
|
with:
|
|
SUFFIX_FILTER: |
|
|
.go
|
|
.mod
|
|
.sum
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-aa"
|
|
if: "env.GIT_DIFF != ''"
|
|
- name: test & coverage report creation
|
|
run: |
|
|
cat xaa.txt | xargs go test -mod=readonly -timeout 15m -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock'
|
|
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 -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@v1.0.13
|
|
with:
|
|
file: ./coverage.txt
|
|
if: "env.GIT_DIFF != ''"
|
|
|
|
test-coverage-run-2:
|
|
runs-on: ubuntu-latest
|
|
needs: split-test-files
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: technote-space/get-diff-action@v3
|
|
id: git_diff
|
|
with:
|
|
SUFFIX_FILTER: |
|
|
.go
|
|
.mod
|
|
.sum
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-ab"
|
|
if: "env.GIT_DIFF != ''"
|
|
- name: test & coverage report creation
|
|
run: |
|
|
cat xab.txt | xargs go test -mod=readonly -timeout 15m -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock'
|
|
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 -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@v1.0.13
|
|
with:
|
|
file: ./coverage.txt
|
|
if: "env.GIT_DIFF != ''"
|
|
|
|
test-coverage-run-3:
|
|
runs-on: ubuntu-latest
|
|
needs: split-test-files
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: technote-space/get-diff-action@v3
|
|
id: git_diff
|
|
with:
|
|
SUFFIX_FILTER: |
|
|
.go
|
|
.mod
|
|
.sum
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-ac"
|
|
if: "env.GIT_DIFF != ''"
|
|
- name: test & coverage report creation
|
|
run: |
|
|
cat xac.txt | xargs go test -mod=readonly -timeout 15m -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock'
|
|
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 -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@v1.0.13
|
|
with:
|
|
file: ./coverage.txt
|
|
if: "env.GIT_DIFF != ''"
|
|
|
|
test-coverage-run-4:
|
|
runs-on: ubuntu-latest
|
|
needs: split-test-files
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: technote-space/get-diff-action@v3
|
|
id: git_diff
|
|
with:
|
|
SUFFIX_FILTER: |
|
|
.go
|
|
.mod
|
|
.sum
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
name: "${{ github.sha }}-ad"
|
|
if: "env.GIT_DIFF != ''"
|
|
- name: test & coverage report creation
|
|
run: |
|
|
cat xad.txt | xargs go test -mod=readonly -timeout 15m -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock'
|
|
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 -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@v1.0.13
|
|
with:
|
|
file: ./coverage.txt
|
|
if: "env.GIT_DIFF != ''"
|
|
|
|
liveness-test:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: technote-space/get-diff-action@v1
|
|
id: git_diff
|
|
with:
|
|
SUFFIX_FILTER: |
|
|
.go
|
|
.mod
|
|
.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 != ''"
|