Files
deltaglider/Makefile
Simone Scarduzio 39e3ce5567 fix
2025-09-23 07:33:07 +02:00

76 lines
2.1 KiB
Makefile

.PHONY: help install test test-unit test-integration test-e2e lint format typecheck clean start-localstack stop-localstack
help: ## Show this help message
@echo 'Usage: make [target]'
@echo ''
@echo 'Targets:'
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-20s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
install: ## Install dependencies
uv pip install -e ".[dev]"
test: test-unit test-integration test-e2e ## Run all tests
test-unit: ## Run unit tests only
uv run pytest tests/unit -v
test-integration: ## Run integration tests only
uv run pytest tests/integration -v
test-e2e: start-localstack ## Run e2e tests (starts LocalStack)
@echo "Running E2E tests..."
@export AWS_ACCESS_KEY_ID=test && \
export AWS_SECRET_ACCESS_KEY=test && \
export AWS_DEFAULT_REGION=us-east-1 && \
export AWS_ENDPOINT_URL=http://localhost:4566 && \
uv run pytest tests/e2e -v --tb=short; \
exit_code=$$?; \
$(MAKE) stop-localstack; \
exit $$exit_code
start-localstack: ## Start LocalStack for e2e testing
@echo "Starting LocalStack..."
@docker run -d \
--name deltaglider-localstack \
-p 4566:4566 \
-e SERVICES=s3 \
-e DEBUG=0 \
-e DATA_DIR=/tmp/localstack/data \
localstack/localstack:latest || true
@echo "Waiting for LocalStack to be ready..."
@max_attempts=30; \
attempt=0; \
while [ $$attempt -lt $$max_attempts ]; do \
if curl -s -f http://localhost:4566/_localstack/health > /dev/null 2>&1; then \
echo "LocalStack is ready!"; \
break; \
fi; \
echo "Waiting... (attempt $$((attempt + 1))/$$max_attempts)"; \
sleep 2; \
attempt=$$((attempt + 1)); \
done; \
if [ $$attempt -eq $$max_attempts ]; then \
echo "LocalStack failed to start"; \
docker logs deltaglider-localstack; \
docker rm -f deltaglider-localstack; \
exit 1; \
fi
stop-localstack: ## Stop LocalStack
@echo "Stopping LocalStack..."
@docker rm -f deltaglider-localstack || true
lint: ## Run linting
uv run ruff check src tests
format: ## Format code
uv run ruff format src tests
typecheck: ## Run type checking
uv run mypy src
clean: ## Clean up
rm -rf .pytest_cache
rm -rf __pycache__
find . -name "*.pyc" -delete
find . -name "__pycache__" -delete