go-test.yml
1 # File managed by web3-bot. DO NOT EDIT. 2 # See https://github.com/protocol/.github/ for details. 3 4 on: [push, pull_request] 5 name: Go Test 6 7 jobs: 8 unit: 9 strategy: 10 fail-fast: false 11 matrix: 12 os: [ "ubuntu", "windows", "macos" ] 13 go: [ "1.17.x", "1.18.x" ] 14 env: 15 COVERAGES: "" 16 runs-on: ${{ format('{0}-latest', matrix.os) }} 17 name: ${{ matrix.os }} (go ${{ matrix.go }}) 18 steps: 19 - uses: actions/checkout@v2 20 with: 21 submodules: recursive 22 - uses: actions/setup-go@v2 23 with: 24 go-version: ${{ matrix.go }} 25 - name: Go information 26 run: | 27 go version 28 go env 29 - name: Use msys2 on windows 30 if: ${{ matrix.os == 'windows' }} 31 shell: bash 32 # The executable for msys2 is also called bash.cmd 33 # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#shells 34 # If we prepend its location to the PATH 35 # subsequent 'shell: bash' steps will use msys2 instead of gitbash 36 run: echo "C:/msys64/usr/bin" >> $GITHUB_PATH 37 - name: Run repo-specific setup 38 uses: ./.github/actions/go-test-setup 39 if: hashFiles('./.github/actions/go-test-setup') != '' 40 - name: Run tests 41 uses: protocol/multiple-go-modules@v1.2 42 with: 43 # Use -coverpkg=./..., so that we include cross-package coverage. 44 # If package ./A imports ./B, and ./A's tests also cover ./B, 45 # this means ./B's coverage will be significantly higher than 0%. 46 run: go test -v -coverprofile=module-coverage.txt -coverpkg=./... ./... 47 - name: Run tests (32 bit) 48 if: ${{ matrix.os != 'macos' }} # can't run 32 bit tests on OSX. 49 uses: protocol/multiple-go-modules@v1.2 50 env: 51 GOARCH: 386 52 with: 53 run: | 54 export "PATH=${{ env.PATH_386 }}:$PATH" 55 go test -v ./... 56 - name: Run tests with race detector 57 if: ${{ matrix.os == 'ubuntu' }} # speed things up. Windows and OSX VMs are slow 58 uses: protocol/multiple-go-modules@v1.2 59 with: 60 run: go test -v -race ./... 61 - name: Collect coverage files 62 shell: bash 63 run: echo "COVERAGES=$(find . -type f -name 'module-coverage.txt' | tr -s '\n' ',' | sed 's/,$//')" >> $GITHUB_ENV 64 - name: Upload coverage to Codecov 65 uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0 66 with: 67 files: '${{ env.COVERAGES }}' 68 env_vars: OS=${{ matrix.os }}, GO=${{ matrix.go }}