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

.PHONY: test test-quick 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 via TestMain)
test: check-deps
	@echo "Running all S3 basic tests..."
	@go test -v -timeout=10m ./...

# Run quick tests (uses TEST_PATTERN if provided)
test-quick: check-deps
	@echo "Running quick S3 basic tests..."
	@if [ -z "$(TEST_PATTERN)" ]; then \
		go test -v -timeout=10m ./...; \
	else \
		go test -v -timeout=10m -run "$(TEST_PATTERN)" ./...; \
	fi

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

# Run tests with auto-managed server (CI/CD target)
test-with-server: test

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