1.0.0 Release
This commit is contained in:
138
tests/test_app.sh
Executable file
138
tests/test_app.sh
Executable file
@@ -0,0 +1,138 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Test script for HereIAm.app
|
||||
# Verifies the built application works correctly
|
||||
|
||||
set -e
|
||||
|
||||
echo "🧪 Testing HereIAm.app..."
|
||||
echo "========================="
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
APP_PATH="../dist/HereIAm.app"
|
||||
|
||||
# Check if app exists
|
||||
if [ ! -d "$APP_PATH" ]; then
|
||||
echo -e "${RED}❌ Error: $APP_PATH not found!${NC}"
|
||||
echo "Please run '../build_app.sh' first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}📱 Testing app structure...${NC}"
|
||||
|
||||
# Test executable exists
|
||||
if [ -f "$APP_PATH/Contents/MacOS/HereIAm" ]; then
|
||||
echo -e "${GREEN}✅ Executable found${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ Executable missing${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test Info.plist exists
|
||||
if [ -f "$APP_PATH/Contents/Info.plist" ]; then
|
||||
echo -e "${GREEN}✅ Info.plist found${NC}"
|
||||
|
||||
# Check bundle identifier
|
||||
bundle_id=$(plutil -extract CFBundleIdentifier raw "$APP_PATH/Contents/Info.plist" 2>/dev/null || echo "")
|
||||
if [ "$bundle_id" = "net.tekop.hereiam" ]; then
|
||||
echo -e "${GREEN}✅ Bundle identifier correct${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ Bundle identifier: $bundle_id${NC}"
|
||||
fi
|
||||
|
||||
# Check version
|
||||
version=$(plutil -extract CFBundleVersion raw "$APP_PATH/Contents/Info.plist" 2>/dev/null || echo "")
|
||||
echo -e "${BLUE}📋 Version: $version${NC}"
|
||||
|
||||
else
|
||||
echo -e "${RED}❌ Info.plist missing${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test assets are bundled
|
||||
if [ -d "$APP_PATH/Contents/Resources/assets" ]; then
|
||||
echo -e "${GREEN}✅ Assets directory found${NC}"
|
||||
|
||||
# Check for required icons
|
||||
for icon in "Enabled.icns" "Disabled-Light.icns" "Disabled-Dark.icns"; do
|
||||
if [ -f "$APP_PATH/Contents/Resources/assets/$icon" ]; then
|
||||
echo -e "${GREEN}✅ $icon found${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ $icon missing${NC}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo -e "${RED}❌ Assets directory missing${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test code signing (if signed)
|
||||
echo -e "${BLUE}🔍 Checking code signature...${NC}"
|
||||
if codesign -dv "$APP_PATH" 2>/dev/null; then
|
||||
echo -e "${GREEN}✅ App is code signed${NC}"
|
||||
|
||||
# Verify signature
|
||||
if codesign --verify --verbose "$APP_PATH" 2>/dev/null; then
|
||||
echo -e "${GREEN}✅ Signature is valid${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ Signature verification failed${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ App is not code signed${NC}"
|
||||
echo -e "${YELLOW} (Users may see security warnings)${NC}"
|
||||
fi
|
||||
|
||||
# Test Gatekeeper assessment (if signed)
|
||||
echo -e "${BLUE}🛡️ Checking Gatekeeper assessment...${NC}"
|
||||
if spctl --assess --verbose "$APP_PATH" 2>/dev/null; then
|
||||
echo -e "${GREEN}✅ Gatekeeper will allow this app${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ Gatekeeper may block this app${NC}"
|
||||
echo -e "${YELLOW} (Code signing and notarization recommended for distribution)${NC}"
|
||||
fi
|
||||
|
||||
# Get app size
|
||||
app_size=$(du -sh "$APP_PATH" | cut -f1)
|
||||
echo -e "${BLUE}📦 App bundle size: $app_size${NC}"
|
||||
|
||||
# Basic launch test (background)
|
||||
echo -e "${BLUE}🚀 Testing app launch...${NC}"
|
||||
"$APP_PATH/Contents/MacOS/HereIAm" &
|
||||
APP_PID=$!
|
||||
|
||||
# Wait a moment for launch
|
||||
sleep 3
|
||||
|
||||
# Check if process is running
|
||||
if kill -0 $APP_PID 2>/dev/null; then
|
||||
echo -e "${GREEN}✅ App launched successfully${NC}"
|
||||
|
||||
# Clean shutdown
|
||||
kill $APP_PID 2>/dev/null || true
|
||||
sleep 1
|
||||
|
||||
# Force kill if still running
|
||||
kill -9 $APP_PID 2>/dev/null || true
|
||||
|
||||
echo -e "${GREEN}✅ App shutdown cleanly${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ App failed to launch or crashed${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}🎉 All tests passed!${NC}"
|
||||
echo -e "${GREEN}📱 HereIAm.app is ready for distribution${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}📝 Next steps:${NC}"
|
||||
echo "1. Test manually: open $APP_PATH"
|
||||
echo "2. Create DMG: ../create_dmg.sh"
|
||||
echo "3. For distribution: code sign and notarize"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user