Makefile raw

   1  -include .env
   2  BIN_DIR := $(GOPATH)/bin
   3  
   4  INTEGRATION_DIR := ./test/integration
   5  FIXTURES_DIR    := $(INTEGRATION_DIR)/fixtures
   6  
   7  TEST_TAGS := integration
   8  TEST_TIMEOUT := 5h
   9  
  10  SKIP_DOCKER       ?= 0
  11  GOLANGCILINT      := golangci-lint
  12  GOLANGCILINT_IMG  := golangci/golangci-lint:latest
  13  GOLANGCILINT_ARGS := run
  14  
  15  LINODE_URL ?= https://api.linode.com/
  16  
  17  PACKAGES := $(shell go list ./... | grep -v integration)
  18  
  19  SKIP_LINT ?= 0
  20  
  21  .PHONY: build vet test refresh-fixtures clean clean-cov clean-fixtures lint run_fixtures sanitize fixtures godoc test-int test-unit test-smoke testcov tidy
  22  
  23  test: build lint test-unit test-int
  24  
  25  citest: lint test
  26  
  27  test-unit:
  28  	go test -v $(PACKAGES) $(TEST_ARGS)
  29  	cd test && make test-unit
  30  
  31  test-int:
  32  	cd test && make test-int TEST_TIMEOUT=$(TEST_TIMEOUT)
  33  
  34  testcov-func:
  35  	@go test -v -coverprofile="coverage.txt" . > /dev/null 2>&1
  36  	@go tool cover -func coverage.txt
  37  
  38  # Note for WSL Users, set BROWSER=wslview
  39  testcov-html:
  40  	@go test -v -coverprofile="coverage.txt" . > /dev/null 2>&1
  41  	@go tool cover -html coverage.txt
  42  
  43  test-smoke:
  44  	cd test && make test-smoke TEST_TIMEOUT=$(TEST_TIMEOUT)
  45  
  46  build: vet lint
  47  	go build ./...
  48  	cd k8s && go build ./...
  49  
  50  vet:
  51  	go vet ./...
  52  	cd k8s && go vet ./...
  53  
  54  lint:
  55  ifeq ($(SKIP_LINT), 1)
  56  	@echo Skipping lint stage
  57  else ifeq ($(SKIP_DOCKER), 1)
  58  	$(GOLANGCILINT) $(GOLANGCILINT_ARGS)
  59  else
  60  	docker run --rm -v $(shell pwd):/app -w /app $(GOLANGCILINT_IMG) $(GOLANGCILINT) $(GOLANGCILINT_ARGS)
  61  endif
  62  
  63  clean: clean-cov
  64  
  65  clean-cov:
  66  	@-rm -f coverage.txt
  67  
  68  clean-fixtures:
  69  	@-rm -f fixtures/*.yaml
  70  
  71  refresh-fixtures: clean-fixtures fixtures
  72  
  73  run_fixtures:
  74  	@echo "* Running fixtures"
  75  	cd $(INTEGRATION_DIR) && \
  76  	LINODE_FIXTURE_MODE="record" \
  77  	LINODE_TOKEN=$(LINODE_TOKEN) \
  78  	LINODE_API_VERSION="v4beta" \
  79  	LINODE_URL="$(LINODE_URL)" \
  80  	GO111MODULE="on" \
  81  	go test -timeout=$(TEST_TIMEOUT) -v $(TEST_ARGS)
  82  
  83  sanitize:
  84  	@echo "* Sanitizing fixtures"
  85  	@for yaml in $(FIXTURES_DIR)/*yaml; do \
  86  		sed -E -i.bak \
  87  			-e 's_stats/20[0-9]{2}/[1-9][0-2]?_stats/2018/1_g' \
  88  			-e 's/(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/1234::5678/g' \
  89  			$$yaml; \
  90  	done
  91  	@find $(FIXTURES_DIR) -name *yaml.bak -exec rm {} \;
  92  
  93  fixtures: run_fixtures sanitize
  94  
  95  godoc:
  96  	@godoc -http=:6060
  97  
  98  tidy:
  99  	go mod tidy
 100  	cd k8s && go mod tidy
 101  	cd test && go mod tidy
 102