Base fixes and test harness
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
# 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."
|
||||
Reference in New Issue
Block a user