Makefile 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. export GOBIN ?= $(shell pwd)/bin
  2. BENCH_FLAGS ?= -cpuprofile=cpu.pprof -memprofile=mem.pprof -benchmem
  3. GOLINT = $(GOBIN)/golint
  4. GO_FILES := $(shell \
  5. find . '(' -path '*/.*' -o -path './vendor' ')' -prune \
  6. -o -name '*.go' -print | cut -b3-)
  7. .PHONY: all
  8. all: build lint test
  9. .PHONY: build
  10. build:
  11. go build ./...
  12. .PHONY: lint
  13. lint: $(GOLINT)
  14. @rm -rf lint.log
  15. @echo "Checking formatting..."
  16. @gofmt -d -s $(GO_FILES) 2>&1 | tee lint.log
  17. @echo "Checking vet..."
  18. @go vet ./... 2>&1 | tee -a lint.log
  19. @echo "Checking lint..."
  20. @$(GOLINT) ./... 2>&1 | tee -a lint.log
  21. @echo "Checking for unresolved FIXMEs..."
  22. @git grep -i fixme | grep -v -e Makefile | tee -a lint.log
  23. @echo "Checking for license headers..."
  24. @./check_license.sh | tee -a lint.log
  25. @[ ! -s lint.log ]
  26. $(GOLINT):
  27. go install golang.org/x/lint/golint
  28. .PHONY: test
  29. test:
  30. go test -race ./...
  31. .PHONY: cover
  32. cover:
  33. go test -race -coverprofile=cover.out -coverpkg=./... ./...
  34. go tool cover -html=cover.out -o cover.html
  35. .PHONY: bench
  36. BENCH ?= .
  37. bench:
  38. go list ./... | xargs -n1 go test -bench=$(BENCH) -run="^$$" $(BENCH_FLAGS)