You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							82 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							82 lines
						
					
					
						
							1.8 KiB
						
					
					
				| .PHONY: default install build test quicktest fmt vet lint 
 | |
| 
 | |
| # List of all release tags "supported" by our current Go version
 | |
| # E.g. ":go1.1:go1.2:go1.3:go1.4:go1.5:go1.6:go1.7:go1.8:go1.9:go1.10:go1.11:go1.12:"
 | |
| GO_RELEASE_TAGS := $(shell go list -f ':{{join (context.ReleaseTags) ":"}}:' runtime)
 | |
| 
 | |
| # Only use the `-race` flag on newer versions of Go (version 1.3 and newer)
 | |
| ifeq (,$(findstring :go1.3:,$(GO_RELEASE_TAGS)))
 | |
| 	RACE_FLAG :=
 | |
| else
 | |
| 	RACE_FLAG := -race -cpu 1,2,4
 | |
| endif
 | |
| 
 | |
| # Run `go vet` on Go 1.12 and newer. For Go 1.5-1.11, use `go tool vet`
 | |
| ifneq (,$(findstring :go1.12:,$(GO_RELEASE_TAGS)))
 | |
| 	GO_VET := go vet \
 | |
| 		-atomic \
 | |
| 		-bool \
 | |
| 		-copylocks \
 | |
| 		-nilfunc \
 | |
| 		-printf \
 | |
| 		-rangeloops \
 | |
| 		-unreachable \
 | |
| 		-unsafeptr \
 | |
| 		-unusedresult \
 | |
| 		.
 | |
| else ifneq (,$(findstring :go1.5:,$(GO_RELEASE_TAGS)))
 | |
| 	GO_VET := go tool vet \
 | |
| 		-atomic \
 | |
| 		-bool \
 | |
| 		-copylocks \
 | |
| 		-nilfunc \
 | |
| 		-printf \
 | |
| 		-shadow \
 | |
| 		-rangeloops \
 | |
| 		-unreachable \
 | |
| 		-unsafeptr \
 | |
| 		-unusedresult \
 | |
| 		.
 | |
| else
 | |
| 	GO_VET := @echo "go vet skipped -- not supported on this version of Go"
 | |
| endif
 | |
| 
 | |
| default: fmt vet lint build quicktest
 | |
| 
 | |
| install:
 | |
| 	go get -t -v ./...
 | |
| 
 | |
| build:
 | |
| 	go build -v ./...
 | |
| 
 | |
| test:
 | |
| 	go test -v $(RACE_FLAG) -cover ./...
 | |
| 
 | |
| quicktest:
 | |
| 	go test ./...
 | |
| 
 | |
| # Capture output and force failure when there is non-empty output
 | |
| fmt:
 | |
| 	@echo gofmt -l .
 | |
| 	@OUTPUT=`gofmt -l . 2>&1`; \
 | |
| 	if [ "$$OUTPUT" ]; then \
 | |
| 		echo "gofmt must be run on the following files:"; \
 | |
| 		echo "$$OUTPUT"; \
 | |
| 		exit 1; \
 | |
| 	fi
 | |
| 
 | |
| vet:
 | |
| 	$(GO_VET)
 | |
| 
 | |
| # https://github.com/golang/lint
 | |
| # go get github.com/golang/lint/golint
 | |
| # Capture output and force failure when there is non-empty output
 | |
| # Only run on go1.5+
 | |
| lint:
 | |
| 	@echo golint ./...
 | |
| 	@OUTPUT=`command -v golint >/dev/null 2>&1 && golint ./... 2>&1`; \
 | |
| 	if [ "$$OUTPUT" ]; then \
 | |
| 		echo "golint errors:"; \
 | |
| 		echo "$$OUTPUT"; \
 | |
| 		exit 1; \
 | |
| 	fi
 | |
| 
 |