diff --git a/.github/workflows/go-check.yml b/.github/workflows/go-check.yml index 251f7faa..cc65ce68 100644 --- a/.github/workflows/go-check.yml +++ b/.github/workflows/go-check.yml @@ -8,26 +8,20 @@ jobs: unit: runs-on: ubuntu-latest name: All - env: - RUNGOGENERATE: false steps: - uses: actions/checkout@v3 with: submodules: recursive + - id: config + uses: protocol/.github/.github/actions/read-config@master - uses: actions/setup-go@v3 with: - go-version: "1.19.x" + go-version: 1.20.x - name: Run repo-specific setup uses: ./.github/actions/go-check-setup if: hashFiles('./.github/actions/go-check-setup') != '' - - name: Read config - if: hashFiles('./.github/workflows/go-check-config.json') != '' - run: | - if jq -re .gogenerate ./.github/workflows/go-check-config.json; then - echo "RUNGOGENERATE=true" >> $GITHUB_ENV - fi - name: Install staticcheck - run: go install honnef.co/go/tools/cmd/staticcheck@376210a89477dedbe6fdc4484b233998650d7b3c # 2022.1.3 (v0.3.3) + run: go install honnef.co/go/tools/cmd/staticcheck@4970552d932f48b71485287748246cf3237cebdf # 2023.1 (v0.4.0) - name: Check that go.mod is tidy uses: protocol/multiple-go-modules@v1.2 with: @@ -39,7 +33,7 @@ jobs: fi git diff --exit-code -- go.sum go.mod - name: gofmt - if: ${{ success() || failure() }} # run this step even if the previous one failed + if: success() || failure() # run this step even if the previous one failed run: | out=$(gofmt -s -l .) if [[ -n "$out" ]]; then @@ -47,12 +41,12 @@ jobs: exit 1 fi - name: go vet - if: ${{ success() || failure() }} # run this step even if the previous one failed + if: success() || failure() # run this step even if the previous one failed uses: protocol/multiple-go-modules@v1.2 with: run: go vet ./... - name: staticcheck - if: ${{ success() || failure() }} # run this step even if the previous one failed + if: success() || failure() # run this step even if the previous one failed uses: protocol/multiple-go-modules@v1.2 with: run: | @@ -60,11 +54,11 @@ jobs: staticcheck ./... | sed -e 's@\(.*\)\.go@./\1.go@g' - name: go generate uses: protocol/multiple-go-modules@v1.2 - if: (success() || failure()) && env.RUNGOGENERATE == 'true' + if: (success() || failure()) && fromJSON(steps.config.outputs.json).gogenerate == true with: run: | git clean -fd # make sure there aren't untracked files / directories - go generate ./... + go generate -x ./... # check if go generate modified or added any files if ! $(git add . && git diff-index HEAD --exit-code --quiet); then echo "go generated caused changes to the repository:" diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index 8a1697b2..c5cb3efc 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -10,15 +10,17 @@ jobs: fail-fast: false matrix: os: [ "ubuntu", "windows", "macos" ] - go: [ "1.18.x", "1.19.x" ] + go: ["1.19.x","1.20.x"] env: COVERAGES: "" - runs-on: ${{ format('{0}-latest', matrix.os) }} + runs-on: ${{ fromJSON(vars[format('UCI_GO_TEST_RUNNER_{0}', matrix.os)] || format('"{0}-latest"', matrix.os)) }} name: ${{ matrix.os }} (go ${{ matrix.go }}) steps: - uses: actions/checkout@v3 with: submodules: recursive + - id: config + uses: protocol/.github/.github/actions/read-config@master - uses: actions/setup-go@v3 with: go-version: ${{ matrix.go }} @@ -27,7 +29,7 @@ jobs: go version go env - name: Use msys2 on windows - if: ${{ matrix.os == 'windows' }} + if: matrix.os == 'windows' shell: bash # The executable for msys2 is also called bash.cmd # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#shells @@ -38,6 +40,7 @@ jobs: uses: ./.github/actions/go-test-setup if: hashFiles('./.github/actions/go-test-setup') != '' - name: Run tests + if: contains(fromJSON(steps.config.outputs.json).skipOSes, matrix.os) == false uses: protocol/multiple-go-modules@v1.2 with: # Use -coverpkg=./..., so that we include cross-package coverage. @@ -45,16 +48,21 @@ jobs: # this means ./B's coverage will be significantly higher than 0%. run: go test -v -shuffle=on -coverprofile=module-coverage.txt -coverpkg=./... ./... - name: Run tests (32 bit) - if: ${{ matrix.os != 'macos' }} # can't run 32 bit tests on OSX. + # can't run 32 bit tests on OSX. + if: matrix.os != 'macos' && + fromJSON(steps.config.outputs.json).skip32bit != true && + contains(fromJSON(steps.config.outputs.json).skipOSes, matrix.os) == false uses: protocol/multiple-go-modules@v1.2 env: GOARCH: 386 with: run: | - export "PATH=${{ env.PATH_386 }}:$PATH" + export "PATH=$PATH_386:$PATH" go test -v -shuffle=on ./... - name: Run tests with race detector - if: ${{ matrix.os == 'ubuntu' }} # speed things up. Windows and OSX VMs are slow + # speed things up. Windows and OSX VMs are slow + if: matrix.os == 'ubuntu' && + contains(fromJSON(steps.config.outputs.json).skipOSes, matrix.os) == false uses: protocol/multiple-go-modules@v1.2 with: run: go test -v -race ./... @@ -62,7 +70,7 @@ jobs: shell: bash run: echo "COVERAGES=$(find . -type f -name 'module-coverage.txt' | tr -s '\n' ',' | sed 's/,$//')" >> $GITHUB_ENV - name: Upload coverage to Codecov - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0 + uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: files: '${{ env.COVERAGES }}' env_vars: OS=${{ matrix.os }}, GO=${{ matrix.go }} diff --git a/.github/workflows/release-check.yml b/.github/workflows/release-check.yml index fde81c1f..e2408e37 100644 --- a/.github/workflows/release-check.yml +++ b/.github/workflows/release-check.yml @@ -3,9 +3,11 @@ name: Release Checker on: - pull_request: + pull_request_target: paths: [ 'version.json' ] jobs: release-check: uses: protocol/.github/.github/workflows/release-check.yml@master + with: + go-version: 1.20.x diff --git a/cmd/go.mod b/cmd/go.mod index f0a125b0..25d5a3ba 100644 --- a/cmd/go.mod +++ b/cmd/go.mod @@ -1,6 +1,6 @@ module github.com/ipld/go-car/cmd -go 1.18 +go 1.19 require ( github.com/dustin/go-humanize v1.0.0 diff --git a/go.mod b/go.mod index 3e2f0913..a7becb25 100644 --- a/go.mod +++ b/go.mod @@ -61,4 +61,4 @@ require ( lukechampine.com/blake3 v1.1.7 // indirect ) -go 1.18 +go 1.19 diff --git a/util/util_test.go b/util/util_test.go index e85aed33..3f8f59af 100644 --- a/util/util_test.go +++ b/util/util_test.go @@ -2,6 +2,7 @@ package util_test import ( "bytes" + crand "crypto/rand" "math/rand" "testing" @@ -15,7 +16,7 @@ func TestLdSize(t *testing.T) { data := make([][]byte, 5) for j := 0; j < 5; j++ { data[j] = make([]byte, rand.Intn(30)) - _, err := rand.Read(data[j]) + _, err := crand.Read(data[j]) require.NoError(t, err) } size := util.LdSize(data...) diff --git a/v2/go.mod b/v2/go.mod index c59730c6..dfaebcea 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -1,6 +1,6 @@ module github.com/ipld/go-car/v2 -go 1.18 +go 1.19 require ( github.com/ipfs/go-cid v0.3.2 diff --git a/v2/index/indexsorted.go b/v2/index/indexsorted.go index ed94ed8f..ab1462dc 100644 --- a/v2/index/indexsorted.go +++ b/v2/index/indexsorted.go @@ -5,10 +5,11 @@ import ( "encoding/binary" "errors" "fmt" - internalio "github.com/ipld/go-car/v2/internal/io" "io" "sort" + internalio "github.com/ipld/go-car/v2/internal/io" + "github.com/multiformats/go-multicodec" "github.com/ipfs/go-cid" diff --git a/v2/index/mhindexsorted.go b/v2/index/mhindexsorted.go index e0ef675d..598f1701 100644 --- a/v2/index/mhindexsorted.go +++ b/v2/index/mhindexsorted.go @@ -3,10 +3,11 @@ package index import ( "encoding/binary" "errors" - internalio "github.com/ipld/go-car/v2/internal/io" "io" "sort" + internalio "github.com/ipld/go-car/v2/internal/io" + "github.com/ipfs/go-cid" "github.com/multiformats/go-multicodec" "github.com/multiformats/go-multihash" diff --git a/v2/index_gen_test.go b/v2/index_gen_test.go index 11011e81..61fd055d 100644 --- a/v2/index_gen_test.go +++ b/v2/index_gen_test.go @@ -1,11 +1,12 @@ package car_test import ( - "github.com/stretchr/testify/assert" "io" "os" "testing" + "github.com/stretchr/testify/assert" + "github.com/ipfs/go-cid" carv2 "github.com/ipld/go-car/v2" "github.com/ipld/go-car/v2/index" diff --git a/v2/internal/carv1/util/util_test.go b/v2/internal/carv1/util/util_test.go index 76828be9..27719183 100644 --- a/v2/internal/carv1/util/util_test.go +++ b/v2/internal/carv1/util/util_test.go @@ -2,6 +2,7 @@ package util_test import ( "bytes" + crand "crypto/rand" "math/rand" "testing" @@ -16,7 +17,7 @@ func TestLdSize(t *testing.T) { data := make([][]byte, 5) for j := 0; j < 5; j++ { data[j] = make([]byte, rand.Intn(30)) - _, err := rand.Read(data[j]) + _, err := crand.Read(data[j]) require.NoError(t, err) } size := util.LdSize(data...)