mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2025-12-31 17:28:58 +00:00
112 lines
3.9 KiB
Makefile
112 lines
3.9 KiB
Makefile
.PHONY: test test-unit test-integration docker-up docker-down clean
|
|
|
|
# Run all unit tests
|
|
test-unit:
|
|
@echo "Running unit tests..."
|
|
@go test ./pkg/resolvespec ./pkg/restheadspec -v -cover
|
|
|
|
# Run all integration tests (requires PostgreSQL)
|
|
test-integration:
|
|
@echo "Running integration tests..."
|
|
@go test -tags=integration ./pkg/resolvespec ./pkg/restheadspec -v
|
|
|
|
# Run all tests (unit + integration)
|
|
test: test-unit test-integration
|
|
|
|
release-version: ## Create and push a release with specific version (use: make release-version VERSION=v1.2.3)
|
|
@if [ -z "$(VERSION)" ]; then \
|
|
echo "Error: VERSION is required. Usage: make release-version VERSION=v1.2.3"; \
|
|
exit 1; \
|
|
fi
|
|
@version="$(VERSION)"; \
|
|
if ! echo "$$version" | grep -q "^v"; then \
|
|
version="v$$version"; \
|
|
fi; \
|
|
echo "Creating release: $$version"; \
|
|
latest_tag=$$(git describe --tags --abbrev=0 2>/dev/null || echo ""); \
|
|
if [ -z "$$latest_tag" ]; then \
|
|
commit_logs=$$(git log --pretty=format:"- %s" --no-merges); \
|
|
else \
|
|
commit_logs=$$(git log "$${latest_tag}..HEAD" --pretty=format:"- %s" --no-merges); \
|
|
fi; \
|
|
if [ -z "$$commit_logs" ]; then \
|
|
tag_message="Release $$version"; \
|
|
else \
|
|
tag_message="Release $$version\n\n$$commit_logs"; \
|
|
fi; \
|
|
git tag -a "$$version" -m "$$tag_message"; \
|
|
git push origin "$$version"; \
|
|
echo "Tag $$version created and pushed to remote repository."
|
|
|
|
|
|
lint: ## Run linter
|
|
@echo "Running linter..."
|
|
@if command -v golangci-lint > /dev/null; then \
|
|
golangci-lint run --config=.golangci.json; \
|
|
else \
|
|
echo "golangci-lint not installed. Install with: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
lintfix: ## Run linter
|
|
@echo "Running linter..."
|
|
@if command -v golangci-lint > /dev/null; then \
|
|
golangci-lint run --config=.golangci.json --fix; \
|
|
else \
|
|
echo "golangci-lint not installed. Install with: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
|
|
# Start PostgreSQL for integration tests
|
|
docker-up:
|
|
@echo "Starting PostgreSQL container..."
|
|
@podman compose up -d postgres-test
|
|
@echo "Waiting for PostgreSQL to be ready..."
|
|
@sleep 5
|
|
@echo "PostgreSQL is ready!"
|
|
|
|
# Stop PostgreSQL container
|
|
docker-down:
|
|
@echo "Stopping PostgreSQL container..."
|
|
@podman compose down
|
|
|
|
# Clean up Docker volumes and test data
|
|
clean:
|
|
@echo "Cleaning up..."
|
|
@podman compose down -v
|
|
@echo "Cleanup complete!"
|
|
|
|
# Run integration tests with Docker (full workflow)
|
|
test-integration-docker: docker-up
|
|
@echo "Running integration tests with Docker..."
|
|
@go test -tags=integration ./pkg/resolvespec ./pkg/restheadspec -v
|
|
@$(MAKE) docker-down
|
|
|
|
# Check test coverage
|
|
coverage:
|
|
@echo "Generating coverage report..."
|
|
@go test ./pkg/resolvespec ./pkg/restheadspec -coverprofile=coverage.out
|
|
@go tool cover -html=coverage.out -o coverage.html
|
|
@echo "Coverage report generated: coverage.html"
|
|
|
|
# Run integration tests coverage
|
|
coverage-integration:
|
|
@echo "Generating integration test coverage report..."
|
|
@go test -tags=integration ./pkg/resolvespec ./pkg/restheadspec -coverprofile=coverage-integration.out
|
|
@go tool cover -html=coverage-integration.out -o coverage-integration.html
|
|
@echo "Integration coverage report generated: coverage-integration.html"
|
|
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " test-unit - Run unit tests"
|
|
@echo " test-integration - Run integration tests (requires PostgreSQL)"
|
|
@echo " test - Run all tests"
|
|
@echo " docker-up - Start PostgreSQL container"
|
|
@echo " docker-down - Stop PostgreSQL container"
|
|
@echo " test-integration-docker - Run integration tests with Docker (automated)"
|
|
@echo " clean - Clean up Docker volumes"
|
|
@echo " coverage - Generate unit test coverage report"
|
|
@echo " coverage-integration - Generate integration test coverage report"
|
|
@echo " help - Show this help message"
|