Files
InvestmentTrackerApp/Makefile
T
2026-02-01 11:12:57 +01:00

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."