# Makefile for sonr-io/common # Provides convenient testing and validation commands for ipfs and webauthn modules .PHONY: help test test-ipfs test-webauthn test-all coverage coverage-ipfs coverage-webauthn coverage-all lint vet fmt clean # Default target help: @echo "Available targets:" @echo " make test - Run all tests" @echo " make test-ipfs - Run tests for ipfs module" @echo " make test-webauthn - Run tests for webauthn module" @echo " make test-all - Run all tests with verbose output" @echo " make coverage - Generate coverage report for all modules" @echo " make coverage-ipfs - Generate coverage report for ipfs module" @echo " make coverage-webauthn - Generate coverage report for webauthn module" @echo " make coverage-all - Generate combined coverage report (HTML)" @echo " make lint - Run golangci-lint" @echo " make vet - Run go vet" @echo " make fmt - Format all Go files" @echo " make clean - Clean test cache and coverage files" # Run all tests test: @echo "Running tests for all modules..." @go test ./ipfs/... ./webauthn/... # Run tests for ipfs module test-ipfs: @echo "Running tests for ipfs module..." @go test ./ipfs/... -v # Run tests for webauthn module test-webauthn: @echo "Running tests for webauthn module..." @go test ./webauthn/... -v # Run all tests with verbose output test-all: @echo "Running all tests with verbose output..." @go test -v ./ipfs/... ./webauthn/... # Generate coverage report for all modules coverage: @echo "Generating coverage report for all modules..." @go test ./ipfs/... ./webauthn/... -coverprofile=coverage.out @go tool cover -func=coverage.out # Generate coverage report for ipfs module coverage-ipfs: @echo "Generating coverage report for ipfs module..." @go test ./ipfs/... -coverprofile=coverage-ipfs.out @go tool cover -func=coverage-ipfs.out # Generate coverage report for webauthn module coverage-webauthn: @echo "Generating coverage report for webauthn module..." @go test ./webauthn/... -coverprofile=coverage-webauthn.out @go tool cover -func=coverage-webauthn.out # Generate HTML coverage report for all modules coverage-all: @echo "Generating HTML coverage report for all modules..." @go test ./ipfs/... ./webauthn/... -coverprofile=coverage.out @go tool cover -html=coverage.out -o coverage.html @echo "Coverage report generated: coverage.html" # Run golangci-lint (requires golangci-lint to be installed) lint: @echo "Running golangci-lint..." @which golangci-lint > /dev/null || (echo "golangci-lint not found. Install from https://golangci-lint.run/usage/install/" && exit 1) @golangci-lint run ./ipfs/... ./webauthn/... # Run go vet vet: @echo "Running go vet..." @go vet ./ipfs/... @go vet ./webauthn/... # Format all Go files fmt: @echo "Formatting Go files..." @go fmt ./ipfs/... @go fmt ./webauthn/... # Clean test cache and coverage files clean: @echo "Cleaning test cache and coverage files..." @go clean -testcache @rm -f coverage.out coverage-ipfs.out coverage-webauthn.out coverage.html @echo "Clean complete" # Run tests with race detector test-race: @echo "Running tests with race detector..." @go test -race ./ipfs/... ./webauthn/... # Run benchmarks bench: @echo "Running benchmarks..." @go test -bench=. -benchmem ./ipfs/... ./webauthn/... # Install test dependencies deps: @echo "Installing dependencies..." @go mod download @go mod tidy # Quick check: fmt, vet, and test check: fmt vet test @echo "All checks passed!"