diff --git a/.github/workflows/easyjson.yml b/.github/workflows/easyjson.yml new file mode 100644 index 0000000..5f0b6e1 --- /dev/null +++ b/.github/workflows/easyjson.yml @@ -0,0 +1,63 @@ +name: easyjson + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test: + runs-on: ubuntu-latest + name: Test with Go ${{ matrix.go }} + strategy: + fail-fast: false + matrix: + go: [ 1.17, 1.16, 1.15 ] + steps: + - uses: actions/checkout@v2 + + - name: Set up Go ${{ matrix.go }} + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + + - name: Install golint (for old go version) + if: matrix.go < 1.16 + run: go get golang.org/x/lint/golint && go mod tidy + + - name: Install golint + if: matrix.go > 1.15 + run: go install golang.org/x/lint/golint@latest + + - name: Build and Run tests + run: make + + test-non-amd64: + runs-on: ubuntu-latest + name: Test on ${{ matrix.distro }} ${{ matrix.arch }} + strategy: + matrix: + include: + - arch: ppc64le + distro: ubuntu20.04 + steps: + - uses: actions/checkout@v2 + - uses: uraimo/run-on-arch-action@master + with: + arch: ${{ matrix.arch }} + distro: ${{ matrix.distro }} + install: | + apt-get update + apt install -y curl wget make gcc + latestGo=$(curl "https://golang.org/VERSION?m=text") + wget --quiet "https://dl.google.com/go/${latestGo}.linux-${{ matrix.arch }}.tar.gz" + rm -f $(which go) + rm -rf /usr/local/go + tar -C /usr/local -xzf "${latestGo}.linux-${{ matrix.arch }}.tar.gz" + run: | + export PATH=/usr/local/go/bin:$PATH + export PATH=~/go/bin:$PATH + printf "Go Version: $(go version)\n" + go install golang.org/x/lint/golint@latest + make \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1e0fa4c..0000000 --- a/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -arch: - - amd64 - - ppc64le -language: go - -go: - - tip - - stable - -matrix: - allow_failures: - - go: tip - -install: - - go get golang.org/x/lint/golint diff --git a/Makefile b/Makefile index c527340..cc5ebba 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ clean: rm -rf benchmark/*_easyjson.go build: - go build -i -o ./bin/easyjson ./easyjson + go build -o ./bin/easyjson ./easyjson generate: build bin/easyjson -stubs \ diff --git a/README.md b/README.md index 37345e8..5ae07a9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# easyjson [![Build Status](https://travis-ci.org/mailru/easyjson.svg?branch=master)](https://travis-ci.org/mailru/easyjson) [![Go Report Card](https://goreportcard.com/badge/github.com/mailru/easyjson)](https://goreportcard.com/report/github.com/mailru/easyjson) +# easyjson [![Build Status](https://github.com/mailru/easyjson/actions/workflows/easyjson.yml/badge.svg)](https://travis-ci.org/mailru/easyjson) [![Go Report Card](https://goreportcard.com/badge/github.com/mailru/easyjson)](https://goreportcard.com/report/github.com/mailru/easyjson) Package easyjson provides a fast and easy way to marshal/unmarshal Go structs to/from JSON without the use of reflection. In performance tests, easyjson diff --git a/tests/intern_test.go b/tests/intern_test.go index 480f87c..4c73002 100644 --- a/tests/intern_test.go +++ b/tests/intern_test.go @@ -20,8 +20,8 @@ func TestStringIntern(t *testing.T) { t.Fatalf("wrong value: %q", i.Field) } }) - if allocsPerRun != 1 { - t.Fatalf("expected 1 allocs, got %f", allocsPerRun) + if allocsPerRun > 1 { + t.Fatalf("expected <= 1 allocs, got %f", allocsPerRun) } var n NoIntern @@ -35,7 +35,7 @@ func TestStringIntern(t *testing.T) { t.Fatalf("wrong value: %q", n.Field) } }) - if allocsPerRun != 2 { - t.Fatalf("expected 2 allocs, got %f", allocsPerRun) + if allocsPerRun > 2 { + t.Fatalf("expected <= 2 allocs, got %f", allocsPerRun) } } diff --git a/tests/nocopy_test.go b/tests/nocopy_test.go index 05dccee..63dfc5f 100644 --- a/tests/nocopy_test.go +++ b/tests/nocopy_test.go @@ -53,8 +53,8 @@ func TestNocopy(t *testing.T) { t.Fatalf("wrong value: %q", res.B) } }) - if allocsPerRun != 1 { - t.Fatalf("noCopy field unmarshal: expected 1 allocs, got %f", allocsPerRun) + if allocsPerRun > 1 { + t.Fatalf("noCopy field unmarshal: expected <= 1 allocs, got %f", allocsPerRun) } data = []byte(`{"a": "valueNoCopy"}`) @@ -67,7 +67,7 @@ func TestNocopy(t *testing.T) { t.Fatalf("wrong value: %q", res.A) } }) - if allocsPerRun != 2 { - t.Fatalf("copy field unmarshal: expected 2 allocs, got %f", allocsPerRun) + if allocsPerRun > 2 { + t.Fatalf("copy field unmarshal: expected <= 2 allocs, got %f", allocsPerRun) } }