name: Tests / Code Coverage on: pull_request: push: branches: - main permissions: contents: read concurrency: group: ci-${{ github.ref }}-tests cancel-in-progress: true jobs: split-test-files: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 - 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. - 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@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | **/*.go go.mod go.sum **/go.mod **/go.sum - uses: actions/download-artifact@v3 with: name: "${{ github.sha }}-${{ matrix.part }}" - name: test & coverage report creation if: env.GIT_DIFF run: | cat pkgs.txt.part.${{ matrix.part }} | xargs go test -mod=readonly -race -timeout 30m -coverprofile=${{ matrix.part }}profile.out -covermode=atomic -tags='ledger test_ledger_mock' - uses: actions/upload-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-${{ matrix.part }}-coverage" path: ./${{ matrix.part }}profile.out test-integration: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | **/*.go go.mod go.sum **/go.mod **/go.sum **/Makefile Makefile - name: integration tests if: env.GIT_DIFF run: | make test-integration-cov - uses: actions/upload-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-integration-coverage" path: ./tests/integration-profile.out test-e2e: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | **/*.go go.mod go.sum **/go.mod **/go.sum **/Makefile Makefile - name: e2e tests if: env.GIT_DIFF run: | make test-e2e-cov - uses: actions/upload-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-e2e-coverage" path: ./tests/e2e-profile.out repo-analysis: runs-on: ubuntu-latest needs: [tests, test-integration, test-e2e] steps: - uses: actions/checkout@v3 - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | **/*.go go.mod go.sum **/go.mod **/go.sum - uses: actions/download-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-00-coverage" - uses: actions/download-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-01-coverage" - uses: actions/download-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-02-coverage" - uses: actions/download-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-03-coverage" - uses: actions/download-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-integration-coverage" - uses: actions/download-artifact@v3 if: env.GIT_DIFF with: name: "${{ github.sha }}-e2e-coverage" continue-on-error: true - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} liveness-test: runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | **/*.go go.mod go.sum **/go.mod **/go.sum **/Makefile Makefile - name: start localnet if: env.GIT_DIFF run: | make clean localnet-start - name: test liveness if: env.GIT_DIFF run: | ./contrib/localnet_liveness.sh 100 5 50 localhost test-sim-nondeterminism: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | **/*.go go.mod go.sum **/go.mod **/go.sum **/Makefile Makefile - name: test-sim-nondeterminism if: env.GIT_DIFF run: | make test-sim-nondeterminism ############################### #### Cosmos SDK Submodules #### ############################### # NOTE: The following jobs are used to test the Cosmos SDK Go submodules. # They run when there is a diff in their respective directories. test-clientv2: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: client/v2/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | client/v2/**/*.go client/v2/go.mod client/v2/go.sum - name: tests if: env.GIT_DIFF run: | cd client/v2 go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: client/v2/ test-core: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: core/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | core/**/*.go core/go.mod core/go.sum - name: tests if: env.GIT_DIFF run: | cd core go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: core/ test-depinject: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: depinject/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | depinject/**/*.go depinject/go.mod depinject/go.sum - name: tests if: env.GIT_DIFF run: | cd depinject go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} test-errors: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: errors/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | errors/**/*.go errors/go.mod errors/go.sum - name: tests if: env.GIT_DIFF run: | cd errors go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: errors/ test-math: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: math/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | math/**/*.go math/go.mod math/go.sum - name: tests if: env.GIT_DIFF run: | cd math go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: math/ test-simapp: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: simapp/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | simapp/**/*.go simapp/go.mod simapp/go.sum - name: tests simapp if: env.GIT_DIFF run: | cd simapp go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: tests simapp v1 if: env.GIT_DIFF run: | cd simapp go test -mod=readonly -timeout 30m -tags='app_v1 norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: simapp/ test-rosetta: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: tools/rosetta/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | contrib/rosetta/* tools/rosetta/**/*.go tools/rosetta/go.mod tools/rosetta/go.sum tools/rosetta/Makefile Makefile - name: tests if: env.GIT_DIFF run: | make test-rosetta cd tools/rosetta go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: tools/rosetta/ test-collections: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: collections/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | collections/**/*.go collections/go.mod collections/go.sum - name: tests if: env.GIT_DIFF run: | cd collections go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: collections/ test-cosmovisor: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: tools/cosmovisor/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | tools/cosmovisor/**/*.go tools/cosmovisor/go.mod tools/cosmovisor/go.sum - name: tests if: env.GIT_DIFF run: | cd tools/cosmovisor go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: tools/cosmovisor/ test-confix: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: tools/confix/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | tools/confix/**/*.go tools/confix/go.mod tools/confix/go.sum - name: tests if: env.GIT_DIFF run: | cd tools/confix go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: env.GIT_DIFF uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: tools/confix/ test-hubl: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: tools/hubl/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | tools/hubl/**/*.go tools/hubl/go.mod tools/hubl/go.sum - name: tests if: env.GIT_DIFF run: | cd tools/hubl go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: env.GIT_DIFF uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: tools/hubl/ test-store: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: store/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | store/**/*.go store/go.mod store/go.sum - name: tests if: env.GIT_DIFF run: | cd store go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: store/ test-log: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: log/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | log/*.go log/go.mod log/go.sum - name: tests if: env.GIT_DIFF run: | cd log go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: log/ ############################# ### Cosmos SDK x/{module} ### ############################# # NOTE: The following jobs are used to test the Cosmos SDK Go submodules present under x/{module}. # They run when there is a diff in their respective directories. test-x-tx: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: x/tx/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | x/tx/**/*.go x/tx/go.mod x/tx/go.sum - name: tests if: env.GIT_DIFF run: | cd x/tx go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: x/tx/ test-x-nft: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: x/nft/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | x/nft/**/*.go x/nft/go.mod x/nft/go.sum - name: tests if: env.GIT_DIFF run: | cd x/nft go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: x/nft/ test-x-circuit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: x/circuit/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | x/circuit/**/*.go x/circuit/go.mod x/circuit/go.sum - name: tests if: env.GIT_DIFF run: | cd x/circuit go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: x/circuit/ test-x-feegrant: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: x/feegrant/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | x/feegrant/**/*.go x/feegrant/go.mod x/feegrant/go.sum - name: tests if: env.GIT_DIFF run: | cd x/feegrant go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: x/feegrant/ test-x-evidence: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: x/evidence/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | x/evidence/**/*.go x/evidence/go.mod x/evidence/go.sum - name: tests if: env.GIT_DIFF run: | cd x/evidence go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: x/evidence/ test-x-upgrade: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: 1.20.1 cache: true cache-dependency-path: x/upgrade/go.sum - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: PATTERNS: | x/upgrade/**/*.go x/upgrade/go.mod x/upgrade/go.sum - name: tests if: env.GIT_DIFF run: | cd x/upgrade go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock rocksdb_build' ./... - name: sonarcloud if: ${{ env.GIT_DIFF && !github.event.pull_request.draft }} uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: x/upgrade/