Merge pull request #352 from bulletmys/upd_ci

added Github Actions CI instead of Travis CI
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 @@
 	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 @@
 			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 @@
 			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 @@
 			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 @@
 			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)
 	}
 }