...

Text file src/github.com/launchdarkly/go-sdk-events/v2/Makefile

Documentation: github.com/launchdarkly/go-sdk-events/v2

     1
     2GOLANGCI_LINT_VERSION=v1.42.1
     3
     4LINTER=./bin/golangci-lint
     5LINTER_VERSION_FILE=./bin/.golangci-lint-version-$(GOLANGCI_LINT_VERSION)
     6
     7ALL_SOURCES := $(shell find * -type f -name "*.go")
     8
     9COVERAGE_PROFILE_RAW=./build/coverage_raw.out
    10COVERAGE_PROFILE_RAW_HTML=./build/coverage_raw.html
    11COVERAGE_PROFILE_FILTERED=./build/coverage.out
    12COVERAGE_PROFILE_FILTERED_HTML=./build/coverage.html
    13COVERAGE_ENFORCER_FLAGS=-skipcode "// COVERAGE" -packagestats -filestats -showcode
    14
    15TEST_BINARY=./build/go-sdk-events.test
    16ALLOCATIONS_LOG=./build/allocations.out
    17
    18.PHONY: build clean test test-coverage lint
    19
    20build:
    21	go build ./...
    22
    23clean:
    24	go clean
    25
    26test:
    27	go test -race ./...
    28
    29test-coverage: $(COVERAGE_PROFILE_RAW)
    30	go run github.com/launchdarkly-labs/go-coverage-enforcer@latest $(COVERAGE_ENFORCER_FLAGS) -outprofile $(COVERAGE_PROFILE_FILTERED) $(COVERAGE_PROFILE_RAW)
    31	go tool cover -html $(COVERAGE_PROFILE_FILTERED) -o $(COVERAGE_PROFILE_FILTERED_HTML)
    32	go tool cover -html $(COVERAGE_PROFILE_RAW) -o $(COVERAGE_PROFILE_RAW_HTML)
    33
    34$(COVERAGE_PROFILE_RAW): $(ALL_SOURCES)
    35	@mkdir -p ./build
    36	go test -coverprofile $(COVERAGE_PROFILE_RAW) ./... >/dev/null
    37
    38benchmarks: build
    39	@mkdir -p ./build
    40	go test -benchmem '-run=^$$' '-bench=.*' ./... | tee build/benchmarks.out
    41	@if grep <build/benchmarks.out 'NoAlloc.*[1-9][0-9]* allocs/op'; then echo "Unexpected heap allocations detected in benchmarks!"; exit 1; fi
    42
    43# See CONTRIBUTING.md regarding the use of the benchmark-allocs target. Notes about this implementation:
    44# 1. We precompile the test code because otherwise the allocation traces will include the actions of the compiler itself.
    45# 2. "benchtime=3x" means the run count (b.N) is set to 3. Setting it to 1 would produce less redundant output, but the
    46#    benchmark statistics seem to be less reliable if the run count is less than 3 - they will report a higher allocation
    47#    count per run, possibly because the first run
    48benchmark-allocs:
    49	@if [ -z "$$BENCHMARK" ]; then echo "must specify BENCHMARK=" && exit 1; fi
    50	@mkdir -p ./build
    51	@echo Precompiling test code to $(TEST_BINARY)
    52	@go test -c -o $(TEST_BINARY) >/dev/null 2>&1
    53	@echo "Generating heap allocation traces in $(ALLOCATIONS_LOG) for benchmark(s): $$BENCHMARK"
    54	@echo "You should see some benchmark result output; if you do not, you may have misspelled the benchmark name/regex"
    55	@GODEBUG=allocfreetrace=1 $(TEST_BINARY) -test.run=none -test.bench=$$BENCHMARK -test.benchmem -test.benchtime=1x 2>$(ALLOCATIONS_LOG)
    56
    57$(LINTER_VERSION_FILE):
    58	rm -f $(LINTER)
    59	curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s $(GOLANGCI_LINT_VERSION)
    60	touch $(LINTER_VERSION_FILE)
    61
    62lint: $(LINTER_VERSION_FILE)
    63	$(LINTER) run ./...

View as plain text