name: Tests / Code Coverage # Tests / Code Coverage workflow runs unit tests and uploads a code coverage report # This workflow is run on pushes to development & every Pull Requests where a .go, .mod, .sum have been changed on: pull_request: push: branches: - main jobs: # TODO: refactor before enabling # test-rpc: # runs-on: ubuntu-latest # timeout-minutes: 10 # steps: # - uses: actions/checkout@v2.3.4 # - uses: actions/setup-go@v2.1.3 # with: # go-version: 1.16 # - uses: technote-space/get-diff-action@v4.2 # id: git_diff # with: # SUFFIX_FILTER: | # .go # .mod # .sum # - name: test-rpc # run: | # make test-rpc # if: "env.GIT_DIFF != ''" split-test-files: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 - name: Create a file with all the pkgs run: go list ./... | grep -Ev 'vendor|importer|rpc/tester' > 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: 10 steps: - uses: actions/checkout@v2.3.4 - uses: actions/setup-go@v2.1.3 with: go-version: 1.16 - uses: technote-space/get-diff-action@v4.2 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 -timeout 8m -coverprofile=coverage.txt -covermode=atomic if: "env.GIT_DIFF != ''" - name: filter out proto files run: | excludelist+=" $(find ./ -type f -name '*.pb.go')" for filename in ${excludelist}; do filename=$(echo $filename | sed 's/^./github.com\/cosmos\/ethermint/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@v2.0.1 with: file: ./coverage.txt fail_ci_if_error: true if: "env.GIT_DIFF != ''" test-coverage-run-2: runs-on: ubuntu-latest needs: split-test-files timeout-minutes: 10 steps: - uses: actions/checkout@v2.3.4 - uses: actions/setup-go@v2.1.3 with: go-version: 1.16 - uses: technote-space/get-diff-action@v4.2 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 -timeout 6m -coverprofile=coverage.txt -covermode=atomic if: "env.GIT_DIFF != ''" - name: filter out proto files run: | excludelist+=" $(find ./ -type f -name '*.pb.go')" for filename in ${excludelist}; do filename=$(echo $filename | sed 's/^./github.com\/cosmos\/ethermint/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@v2.0.1 with: file: ./coverage.txt fail_ci_if_error: true if: "env.GIT_DIFF != ''" test-coverage-run-3: runs-on: ubuntu-latest needs: split-test-files timeout-minutes: 10 steps: - uses: actions/checkout@v2.3.4 - uses: actions/setup-go@v2.1.3 with: go-version: 1.16 - uses: technote-space/get-diff-action@v4.2 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 -timeout 6m -coverprofile=coverage.txt -covermode=atomic if: "env.GIT_DIFF != ''" - name: filter out proto files run: | excludelist+=" $(find ./ -type f -name '*.pb.go')" for filename in ${excludelist}; do filename=$(echo $filename | sed 's/^./github.com\/cosmos\/ethermint/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@v2.0.1 with: file: ./coverage.txt fail_ci_if_error: true if: "env.GIT_DIFF != ''" test-coverage-run-4: runs-on: ubuntu-latest needs: split-test-files timeout-minutes: 10 steps: - uses: actions/checkout@v2.3.4 - uses: actions/setup-go@v2.1.3 with: go-version: 1.16 - uses: technote-space/get-diff-action@v4.2 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 -timeout 6m -coverprofile=coverage.txt -covermode=atomic if: "env.GIT_DIFF != ''" - name: filter out proto files run: | excludelist+=" $(find ./ -type f -name '*.pb.go')" for filename in ${excludelist}; do filename=$(echo $filename | sed 's/^./github.com\/cosmos\/ethermint/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@v2.0.1 with: file: ./coverage.txt fail_ci_if_error: true if: "env.GIT_DIFF != ''" # TODO: refactor before enabling # test-importer: # runs-on: ubuntu-latest # timeout-minutes: 10 # steps: # - uses: actions/checkout@v2.3.4 # - uses: actions/setup-go@v2.1.3 # with: # go-version: 1.16 # - uses: technote-space/get-diff-action@v4.2 # id: git_diff # with: # SUFFIX_FILTER: | # .go # .mod # .sum # - name: test-importer # run: | # make test-import # if: "env.GIT_DIFF != ''" test-solidity: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v2.3.4 - uses: technote-space/get-diff-action@v4.2 id: git_diff with: SUFFIX_FILTER: | .go .mod .sum - name: test-solidity run: | make test-solidity if: "env.GIT_DIFF != ''"