136 lines
3.7 KiB
Makefile
136 lines
3.7 KiB
Makefile
# Portfolio Journal Makefile
|
|
# Usage: make [target]
|
|
#
|
|
# Available targets:
|
|
# test - Run all unit tests
|
|
# test-unit - Run unit tests only
|
|
# test-ui - Run UI tests only
|
|
# test-coverage - Run tests with code coverage
|
|
# build - Build the app for debug
|
|
# build-release - Build the app for release
|
|
# clean - Clean build artifacts
|
|
# setup-tests - Set up test targets in Xcode project
|
|
# help - Show this help message
|
|
|
|
.PHONY: test test-unit test-ui test-coverage build build-release clean setup-tests help
|
|
|
|
# Configuration
|
|
PROJECT = PortfolioJournal.xcodeproj
|
|
SCHEME = PortfolioJournal
|
|
DEVICE = iPhone 17
|
|
DESTINATION = platform=iOS Simulator,name=$(DEVICE)
|
|
|
|
# Default target
|
|
.DEFAULT_GOAL := help
|
|
|
|
# Help
|
|
help:
|
|
@echo "Portfolio Journal - Build & Test Commands"
|
|
@echo ""
|
|
@echo "Usage: make [target]"
|
|
@echo ""
|
|
@echo "Test targets:"
|
|
@echo " test Run all unit tests"
|
|
@echo " test-unit Run unit tests only"
|
|
@echo " test-ui Run UI tests only"
|
|
@echo " test-coverage Run tests with code coverage"
|
|
@echo " test-quick Run tests without pretty output (faster)"
|
|
@echo ""
|
|
@echo "Build targets:"
|
|
@echo " build Build the app for debug"
|
|
@echo " build-release Build the app for release"
|
|
@echo " clean Clean build artifacts"
|
|
@echo ""
|
|
@echo "Setup targets:"
|
|
@echo " setup-tests Set up test targets in Xcode project"
|
|
@echo " install-tools Install required development tools"
|
|
@echo ""
|
|
@echo "Examples:"
|
|
@echo " make test # Run all tests"
|
|
@echo " make test DEVICE='iPhone 16' # Run tests on specific device"
|
|
|
|
# Run all tests
|
|
test:
|
|
@echo "Running all tests on $(DEVICE)..."
|
|
@./Scripts/run_tests.sh --unit --device "$(DEVICE)"
|
|
|
|
# Run unit tests only
|
|
test-unit:
|
|
@echo "Running unit tests on $(DEVICE)..."
|
|
@./Scripts/run_tests.sh --unit --device "$(DEVICE)"
|
|
|
|
# Run UI tests only
|
|
test-ui:
|
|
@echo "Running UI tests on $(DEVICE)..."
|
|
@./Scripts/run_tests.sh --ui --device "$(DEVICE)"
|
|
|
|
# Run tests with coverage
|
|
test-coverage:
|
|
@echo "Running tests with coverage on $(DEVICE)..."
|
|
@./Scripts/run_tests.sh --all --coverage --device "$(DEVICE)"
|
|
|
|
# Quick test run without xcpretty
|
|
test-quick:
|
|
@echo "Running quick tests on $(DEVICE)..."
|
|
xcodebuild test \
|
|
-project $(PROJECT) \
|
|
-scheme $(SCHEME) \
|
|
-destination "$(DESTINATION)" \
|
|
-only-testing:PortfolioJournalTests \
|
|
| grep -E "(Test Case|passed|failed|error:)" || true
|
|
|
|
# Build for debug
|
|
build:
|
|
@echo "Building for Debug..."
|
|
xcodebuild \
|
|
-project $(PROJECT) \
|
|
-scheme $(SCHEME) \
|
|
-configuration Debug \
|
|
-destination "$(DESTINATION)" \
|
|
build
|
|
|
|
# Build for release
|
|
build-release:
|
|
@echo "Building for Release..."
|
|
xcodebuild \
|
|
-project $(PROJECT) \
|
|
-scheme $(SCHEME) \
|
|
-configuration Release \
|
|
build
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
@echo "Cleaning build artifacts..."
|
|
xcodebuild \
|
|
-project $(PROJECT) \
|
|
-scheme $(SCHEME) \
|
|
clean
|
|
rm -rf ~/Library/Developer/Xcode/DerivedData/PortfolioJournal-*
|
|
|
|
# Set up test targets
|
|
setup-tests:
|
|
@echo "Setting up test targets..."
|
|
@if command -v ruby >/dev/null 2>&1; then \
|
|
ruby Scripts/setup_tests.rb; \
|
|
else \
|
|
echo "Ruby not found. Please add test target manually in Xcode:"; \
|
|
echo "1. File > New > Target > iOS Unit Testing Bundle"; \
|
|
echo "2. Name it 'PortfolioJournalTests'"; \
|
|
echo "3. Add test files from PortfolioJournalTests folder"; \
|
|
fi
|
|
|
|
# Install development tools
|
|
install-tools:
|
|
@echo "Installing development tools..."
|
|
@if command -v gem >/dev/null 2>&1; then \
|
|
gem install xcpretty xcodeproj; \
|
|
else \
|
|
echo "RubyGems not found. Please install Ruby first."; \
|
|
fi
|
|
|
|
# Pre-release checks
|
|
pre-release: clean build-release test
|
|
@echo ""
|
|
@echo "✅ Pre-release checks passed!"
|
|
@echo "Ready to submit to App Store."
|