GOLANGCI_LINT_VERSION=v1.48.0 LINTER=./bin/golangci-lint LINTER_VERSION_FILE=./bin/.golangci-lint-version-$(GOLANGCI_LINT_VERSION) ALL_SOURCES := $(shell find * -type f -name "*.go") COVERAGE_PROFILE_RAW=./build/coverage_raw.out COVERAGE_PROFILE_RAW_HTML=./build/coverage_raw.html COVERAGE_PROFILE_FILTERED=./build/coverage.out COVERAGE_PROFILE_FILTERED_HTML=./build/coverage.html COVERAGE_ENFORCER_FLAGS=-package github.com/launchdarkly/go-server-sdk-evaluation/v2 -skipcode "// COVERAGE" -packagestats -filestats -showcode TEST_BINARY=./go-server-sdk-evaluation.test ALLOCATIONS_LOG=./allocations.out EASYJSON_TAG=-tags launchdarkly_easyjson .PHONY: all build build-easyjson clean test test-easyjson lint test-coverage benchmarks benchmark-allocs all: build build-easyjson build: go build ./... build-easyjson: go build $(EASYJSON_TAG) ./... clean: go clean test: build go test -v -race -count 1 ./... test-easyjson: build-easyjson go test -v -race -count 1 $(EASYJSON_TAG) ./... test-coverage: $(COVERAGE_PROFILE_RAW) go run github.com/launchdarkly-labs/go-coverage-enforcer@latest $(COVERAGE_ENFORCER_FLAGS) -outprofile $(COVERAGE_PROFILE_FILTERED) $(COVERAGE_PROFILE_RAW) go tool cover -html $(COVERAGE_PROFILE_FILTERED) -o $(COVERAGE_PROFILE_FILTERED_HTML) go tool cover -html $(COVERAGE_PROFILE_RAW) -o $(COVERAGE_PROFILE_RAW_HTML) $(COVERAGE_PROFILE_RAW): $(ALL_SOURCES) @mkdir -p ./build go test -coverprofile $(COVERAGE_PROFILE_RAW) ./... >/dev/null benchmarks: build @mkdir -p ./build go test -benchmem '-run=^$$' '-bench=.*' ./... | tee build/benchmarks.out @if grep $(ALLOCATIONS_LOG) $(LINTER_VERSION_FILE): rm -f $(LINTER) curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | bash -s $(GOLANGCI_LINT_VERSION) touch $(LINTER_VERSION_FILE) lint: $(LINTER_VERSION_FILE) $(LINTER) run ./...