feat: add update-censorship cmd to x/foundation cli (#1121) #2
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
name: Tests / Code Coverage | |
# Tests / Code Coverage workflow runs unit tests and uploads a code coverage report | |
# This workflow is run on pushes to main & every Pull Requests where a .go, .mod, .sum have been changed | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
- rc*/* | |
- release/* | |
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/main'" | |
install-tparse: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-go@v4.0.1 | |
with: | |
go-version: '1.20' | |
- name: Display go version | |
run: go version | |
- name: install tparse | |
run: | | |
go install github.com/mfridman/tparse@v0.8.3 | |
- uses: actions/cache@v3.3.2 | |
with: | |
path: ~/go/bin | |
key: ${{ runner.os }}-go-tparse-binary | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- goarch: "amd64" | |
gcc: "gcc" | |
package: "" | |
- goarch: "arm64" | |
gcc: "aarch64-linux-gnu-gcc" | |
package: "g++-aarch64-linux-gnu" | |
steps: | |
- run: sudo apt update && sudo apt install -y ${{ matrix.package }} qemu-user-binfmt | |
if: "matrix.package != ''" | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v4.0.1 | |
with: | |
go-version: '1.20' | |
- uses: technote-space/get-diff-action@v6.1.2 | |
id: git_diff | |
with: | |
PATTERNS: | | |
**/**.go | |
go.mod | |
go.sum | |
.github/workflows/test.yml | |
- name: Build | |
run: GOOS=linux CGO_ENABLED=1 GOARCH=${{ matrix.goarch }} CC=${{ matrix.gcc }} LEDGER_ENABLED=false make build | |
test-cosmovisor: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v4.0.1 | |
with: | |
go-version: '1.20' | |
- name: Display go version | |
run: go version | |
- uses: technote-space/get-diff-action@v6.1.2 | |
id: git_diff | |
with: | |
PATTERNS: | | |
**/**.go | |
go.mod | |
go.sum | |
tools/cosmovisor/** | |
- name: Run cosmovisor tests | |
run: make cosmovisor | |
if: env.GIT_DIFF | |
split-test-files: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- 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@v3 | |
with: | |
name: "${{ github.sha }}-00" | |
path: ./pkgs.txt.part.00 | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: "${{ github.sha }}-01" | |
path: ./pkgs.txt.part.01 | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: "${{ github.sha }}-02" | |
path: ./pkgs.txt.part.02 | |
- uses: actions/upload-artifact@v3 | |
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@v4 | |
- uses: actions/setup-go@v4.0.1 | |
with: | |
go-version: '1.20' | |
- uses: technote-space/get-diff-action@v6.1.2 | |
with: | |
PATTERNS: | | |
**/**.go | |
go.mod | |
go.sum | |
.github/workflows/test.yml | |
- uses: actions/download-artifact@v3 | |
with: | |
name: "${{ github.sha }}-${{ matrix.part }}" | |
if: env.GIT_DIFF | |
- name: install libsodium | |
run: | | |
make libsodium | |
if: env.GIT_DIFF | |
- name: test & coverage report creation | |
env: | |
USE_PRELOAD: 1,4 | |
SAVE_BRANCH_LAUNCH_DEPTH: 1 | |
CGO_CFLAGS: "-I${{ github.workspace }}/tools/sodium/linux_amd64/include" | |
CGO_LDFLAGS: "-L${{ github.workspace }}/tools/sodium/linux_amd64/lib -lsodium" | |
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 goleveldb gcc libsodium' | |
if: env.GIT_DIFF | |
- uses: actions/upload-artifact@v3 | |
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@v4 | |
- uses: technote-space/get-diff-action@v6.1.2 | |
with: | |
PATTERNS: | | |
**/**.go | |
go.mod | |
go.sum | |
.github/workflows/test.yml | |
- uses: actions/download-artifact@v3 | |
with: | |
name: "${{ github.sha }}-00-coverage" | |
if: env.GIT_DIFF | |
- uses: actions/download-artifact@v3 | |
with: | |
name: "${{ github.sha }}-01-coverage" | |
if: env.GIT_DIFF | |
- uses: actions/download-artifact@v3 | |
with: | |
name: "${{ github.sha }}-02-coverage" | |
if: env.GIT_DIFF | |
- uses: actions/download-artifact@v3 | |
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 -path './tests/mocks/*.go')" | |
for filename in ${excludelist}; do | |
filename=$(echo $filename | sed 's/^./github.com\/Finschia\/finschia-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@v3.1.4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
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@v4 | |
- uses: actions/setup-go@v4.0.1 | |
with: | |
go-version: '1.20' | |
- uses: technote-space/get-diff-action@v6.1.2 | |
with: | |
PATTERNS: | | |
**/**.go | |
go.mod | |
go.sum | |
.github/workflows/test.yml | |
- uses: actions/download-artifact@v3 | |
with: | |
name: "${{ github.sha }}-${{ matrix.part }}" | |
if: env.GIT_DIFF | |
- name: install libsodium | |
run: | | |
make libsodium | |
if: env.GIT_DIFF | |
- name: test & coverage report creation | |
env: | |
USE_PREFETCH: NO | |
USE_PRELOAD: 1,4 | |
SAVE_BRANCH_LAUNCH_DEPTH: 1 | |
CGO_CFLAGS: "-I${{ github.workspace }}/tools/sodium/linux_amd64/include" | |
CGO_LDFLAGS: "-L${{ github.workspace }}/tools/sodium/linux_amd64/lib -lsodium" | |
run: | | |
xargs --arg-file=pkgs.txt.part.${{ matrix.part }} go test -mod=readonly -timeout 30m -race -tags='cgo ledger test_ledger_mock goleveldb gcc libsodium' | |
if: env.GIT_DIFF | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: "${{ github.sha }}-${{ matrix.part }}-race-output" | |
path: ./${{ matrix.part }}-race-output.txt | |
# TODO finschia: enable this test | |
# test-rosetta: | |
# runs-on: ubuntu-latest | |
# timeout-minutes: 10 | |
# steps: | |
# - uses: actions/checkout@v2 | |
# - uses: technote-space/get-diff-action@v4 | |
# id: git_diff | |
# with: | |
# PATTERNS: | | |
# **/**.go | |
# go.mod | |
# go.sum | |
# - name: test rosetta | |
# run: | | |
# make test-rosetta | |
# if: env.GIT_DIFF | |
# TODO ebony: enable this test | |
# liveness-test: | |
# runs-on: ubuntu-latest | |
# timeout-minutes: 10 | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions/setup-go@v2.1.3 | |
# with: | |
# go-version: '1.20' | |
# - uses: technote-space/get-diff-action@v6.1.2 | |
# id: git_diff | |
# with: | |
# PATTERNS: | | |
# **/**.go | |
# go.mod | |
# go.sum | |
# - name: start localnet | |
# run: | | |
# make clean build-simd-linux localnet-start | |
# if: env.GIT_DIFF | |
# - name: test liveness | |
# run: | | |
# ./contrib/localnet_liveness.sh 100 5 50 localhost | |
# if: env.GIT_DIFF | |
# TODO ebony: fix module download error in docker | |
# docker-build: | |
# runs-on: ubuntu-latest | |
# timeout-minutes: 10 | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: build docker image | |
# run: | | |
# docker build --pull --rm -f "Dockerfile" -t simapp:latest "." |