deps: sdk50 and ibc8 with wasm client #15242
Workflow file for this run
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 | |
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 | |
with: | |
go-version: '1.21' | |
- name: Display go version | |
run: go version | |
- name: install tparse | |
run: | | |
go install github.com/mfridman/[email protected] | |
- uses: actions/cache@v3 | |
with: | |
path: ~/go/bin | |
key: ${{ runner.os }}-go-tparse-binary | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
go-arch: ['amd64', 'arm64'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: '1.21' | |
- uses: technote-space/[email protected] | |
id: git_diff | |
with: | |
PATTERNS: | | |
**/**.go | |
go.mod | |
go.sum | |
# Install cross compiler for ARM64. Export CC env variable. | |
- name: Install compiler for arm64. | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-aarch64-linux-gnu | |
echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV | |
if: matrix.go-arch == 'arm64' | |
- name: Build ibc-go | |
run: GOARCH=${{ matrix.go-arch }} CGO_ENABLED=1 LEDGER_ENABLED=false make build | |
- name: Build e2e | |
run: | | |
cd e2e | |
find ./tests -type d | while IFS= read -r dir | |
do | |
if ls "${dir}"/*.go >/dev/null 2>&1; then | |
GOARCH=${{ matrix.go-arch }} CGO_ENABLED=1 go test -c "$dir" | |
fi | |
done | |
split-test-files: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create a file with all the pkgs | |
run: go list ./... | grep -v e2e > 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 | |
with: | |
go-version: '1.21' | |
- uses: technote-space/[email protected] | |
with: | |
PATTERNS: | | |
**/**.go | |
go.mod | |
go.sum | |
- uses: actions/download-artifact@v3 | |
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='ledger test_ledger_mock' | |
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/[email protected] | |
with: | |
PATTERNS: | | |
**/**.go | |
go.mod | |
go.sum | |
- 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 -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@v3 | |
with: | |
file: ./coverage.txt | |
if: env.GIT_DIFF |