1GOPATH=$(shell go env GOPATH)
2GOLANGCI_LINT=$(GOPATH)/bin/golangci-lint
3GOFUZZBUILD = $(GOPATH)/bin/go-fuzz-build
4GOFUZZ = $(GOPATH)/bin/go-fuzz
5
6.PHONY: lint
7lint: $(GOLANGCI_LINT)
8	@echo "==> Linting codebase"
9	@$(GOLANGCI_LINT) run
10
11.PHONY: test
12test:
13	@echo "==> Running tests"
14	GO111MODULE=on go test -v
15
16.PHONY: test-cover
17test-cover:
18	@echo "==> Running Tests with coverage"
19	GO111MODULE=on go test -cover .
20
21.PHONY: fuzz
22fuzz: $(GOFUZZBUILD) $(GOFUZZ)
23	@echo "==> Fuzz testing"
24	$(GOFUZZBUILD)
25	$(GOFUZZ) -workdir=_fuzz
26
27$(GOLANGCI_LINT):
28	# Install golangci-lint. The configuration for it is in the .golangci.yml
29	# file in the root of the repository
30	echo ${GOPATH}
31	curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(GOPATH)/bin v1.17.1
32
33$(GOFUZZBUILD):
34	cd / && go get -u github.com/dvyukov/go-fuzz/go-fuzz-build
35
36$(GOFUZZ):
37	cd / && go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-dep