Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: github test workflow #10325

Merged
merged 21 commits into from
Oct 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 19 additions & 11 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,39 +38,43 @@ jobs:
with:
PATTERNS: |
**/**.go
go.mod
go.sum
**/go.mod
**/go.sum
- name: Build
run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make build

test-cosmovisor:
- name: Build cosmovisor
run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make cosmovisor

test-submodules:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/[email protected]
with:
go-version: 1.17
- name: Display go version
run: go version
- uses: technote-space/get-diff-action@v5
id: git_diff
with:
PREFIX_FILTER: |
cosmovisor
PATTERNS: |
**/**.go
go.mod
go.sum
- name: Run cosmovisor tests
run: cd cosmovisor; make
- 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 the pkgs
run: go list ./... > pkgs.txt
- 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
Expand Down Expand Up @@ -149,6 +153,10 @@ jobs:
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
Expand Down
46 changes: 46 additions & 0 deletions scripts/module-tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/usr/bin/env bash

# this script is used by Github CI to tranverse all modules an run module tests.
# the script expects a diff to be generated in order to skip some modules.

# Executes go module tests and merges the coverage profile.
# If GIT_DIFF variable is set then it's used to test if a module has any file changes - if
# it doesn't have any file changes then we will ignore the module tests.
execute_mod_tests() {
go_mod=$1;
mod_dir=$(dirname "$go_mod");
mod_dir=${mod_dir:2}; # remove "./" prefix
root_dir=$(pwd);

# TODO: in the future we will need to disable it once we go into multi module setup, because
# we will have cross module dependencies.
if [ -n "$GIT_DIFF" ] && ! grep $mod_dir <<< $GIT_DIFF; then
echo "ignoring module $mod_dir - no changes in the module";
return;
fi;

echo "executing $go_mod tests"
cd $mod_dir;
go test -mod=readonly -timeout 30m -coverprofile=${root_dir}/${coverage_file}.tmp -covermode=atomic -tags='norace ledger test_ledger_mock' ./...
local ret=$?
echo "test return: " $ret;
cd -;
# strip mode statement
tail -n +1 ${coverage_file}.tmp >> ${coverage_file}
rm ${coverage_file}.tmp;
return $ret;
}

GIT_DIFF=`git status --porcelain`

coverage_file=coverage-go-submod-profile.out
return_val=0;

for f in $(find -name go.mod -not -path "./go.mod") "./container/go.mod"; do
execute_mod_tests $f;
if [[ $? -ne 0 ]] ; then
return_val=2;
fi;
done

exit $return_val;