name: Tests on: [push, pull_request] jobs: unit-tests: runs-on: ubuntu-latest strategy: matrix: go: ['1.19', '1.20'] steps: - uses: actions/checkout@v3 with: # clone in the gopath path: src/github.com/${{ github.repository }} fetch-depth: 0 - uses: actions/setup-go@v2 with: stable: false go-version: ${{ matrix.go }} - run: | # `env` doesn't allow for variable expansion, so we use the GITHUB_ENV # trick. echo "GOPATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV echo "GO111MODULE=on" >> $GITHUB_ENV - name: run unit tests run: | cd $GITHUB_WORKSPACE/src/github.com/${{ github.repository }} go get -v -t ./... echo "" > "${GITHUB_WORKSPACE}"/coverage.txt for d in $(go list ./...); do go test -v -race -coverprofile=profile.out -covermode=atomic "${d}" if [ -f profile.out ]; then cat profile.out >> "${GITHUB_WORKSPACE}"/coverage.txt rm profile.out fi done - name: report coverage to codecov uses: codecov/codecov-action@v3 with: files: coverage.txt flags: unittests fail_ci_if_error: true verbose: true integration-tests: runs-on: ubuntu-latest strategy: matrix: go: ['1.19', '1.20'] steps: - uses: actions/checkout@v3 with: # clone in the gopath path: src/github.com/${{ github.repository }} fetch-depth: 0 - uses: actions/setup-go@v2 with: stable: false go-version: ${{ matrix.go }} - run: | # `env` doesn't allow for variable expansion, so we use the GITHUB_ENV # trick. echo "GOPATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV echo "GO111MODULE=on" >> $GITHUB_ENV - name: setup integ tests run: | cd $GITHUB_WORKSPACE/src/github.com/${{ github.repository }} ./.ci/setup-integ.sh - name: run integ tests run: | cd $GITHUB_WORKSPACE/src/github.com/${{ github.repository }}/integ go get -v -t -tags=integration ./... echo "" > "${GITHUB_WORKSPACE}"/coverage.txt for d in $(go list -tags=integration ./...); do go test -c -tags=integration -v -race -coverprofile=profile.out -covermode=atomic "${d}" testbin="./$(basename $d).test" # only run it if it was built - i.e. if there are integ tests test -x "${testbin}" && sudo "./${testbin}" if [ -f profile.out ]; then cat profile.out >> "${GITHUB_WORKSPACE}"/coverage.txt rm profile.out fi done - name: report coverage to codecov uses: codecov/codecov-action@v3 with: files: coverage.txt flags: integtests fail_ci_if_error: true verbose: true