# Makefile for SeaweedFS S3 API versioning tests
# Tests auto-manage server via TestMain using weed mini

.PHONY: test test-quick test-stress test-external test-with-server clean check-deps build

# Build SeaweedFS binary if not exists
build:
	@echo "Building SeaweedFS binary..."
	@cd ../../../ && make install
	@which weed > /dev/null 2>&1 || (echo "SeaweedFS binary not found in PATH" && exit 1)

# Check dependencies
check-deps: build
	@which weed > /dev/null 2>&1 || (echo "SeaweedFS binary not found in PATH" && exit 1)
	@echo "✅ Dependencies available"

# Run all tests (auto-manages weed mini server)
test: check-deps
	@echo "Running all S3 versioning tests..."
	@go test -v -timeout=15m ./...

# Run quick tests (excludes stress tests)
test-quick: check-deps
	@echo "Running quick S3 versioning tests..."
	@go test -v -timeout=10m -run "!(Stress)" ./...

# Run stress tests only
test-stress: check-deps
	@echo "Running stress tests (may take several minutes)..."
	@ENABLE_STRESS_TESTS=true go test -v -timeout=30m -run "Stress" ./...

# Run tests against external server
test-external: check-deps
	@echo "Running tests against external server (USE_EXTERNAL_SERVER=true)..."
	@USE_EXTERNAL_SERVER=true go test -v -timeout=15m ./...

# Run tests with auto-managed server (alias to test for CI/CD)
test-with-server: test

# Clean up test artifacts
clean:
	@echo "Cleaning up test artifacts..."
	@rm -f *.log *.pid
	@rm -rf reports/
	@rm -rf test-volume-data/
	@go clean -testcache
	@echo "✅ Cleanup completed"
