feat: Add AI features test scripts for Windows and macOS/Linux
- Introduced `test_ai_features.ps1` for Windows to validate AI agent, multimodal vision, and GUI automation capabilities. - Added `test_ai_features.sh` for macOS/Linux with similar testing functionalities, ensuring cross-platform compatibility. - Created `yaze.plist.in` for macOS bundle configuration, enabling proper application packaging. - Enhanced build verification scripts to check for vcpkg availability, improving dependency management for Windows builds. - Updated CMake configurations to include new test scripts and plist file, streamlining the build process.
This commit is contained in:
34
cmake/yaze.plist.in
Normal file
34
cmake/yaze.plist.in
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
||||
</dict>
|
||||
</plist>
|
||||
282
scripts/test_ai_features.ps1
Normal file
282
scripts/test_ai_features.ps1
Normal file
@@ -0,0 +1,282 @@
|
||||
# YAZE AI Features Test Script for Windows
|
||||
# Tests AI agent, multimodal vision, and GUI automation capabilities
|
||||
|
||||
param(
|
||||
[string]$YazeBin = "build-windows\bin\Debug\yaze.exe",
|
||||
[string]$Z3edBin = "build-windows\bin\Debug\z3ed.exe",
|
||||
[string]$TestRom = "zelda3.sfc"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Continue"
|
||||
|
||||
function Write-Header {
|
||||
Write-Host "`n╔════════════════════════════════════════════════════════════════╗" -ForegroundColor Cyan
|
||||
Write-Host "║ YAZE AI Features Test Suite (Windows) ║" -ForegroundColor Cyan
|
||||
Write-Host "╚════════════════════════════════════════════════════════════════╝`n" -ForegroundColor Cyan
|
||||
}
|
||||
|
||||
function Write-Section {
|
||||
param($Title)
|
||||
Write-Host "`n▶ $Title" -ForegroundColor Blue
|
||||
Write-Host ("─" * 64) -ForegroundColor Blue
|
||||
}
|
||||
|
||||
function Write-Test {
|
||||
param($Message)
|
||||
Write-Host " Testing: " -NoNewline -ForegroundColor Cyan
|
||||
Write-Host $Message
|
||||
}
|
||||
|
||||
function Write-Success {
|
||||
param($Message)
|
||||
Write-Host " ✓ $Message" -ForegroundColor Green
|
||||
}
|
||||
|
||||
function Write-Warning {
|
||||
param($Message)
|
||||
Write-Host " ⚠ $Message" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
function Write-Error {
|
||||
param($Message)
|
||||
Write-Host " ✗ $Message" -ForegroundColor Red
|
||||
}
|
||||
|
||||
function Test-Prerequisites {
|
||||
Write-Section "Checking Prerequisites"
|
||||
|
||||
$allOk = $true
|
||||
|
||||
# Check binaries
|
||||
if (Test-Path $YazeBin) {
|
||||
Write-Success "YAZE GUI found: $YazeBin"
|
||||
} else {
|
||||
Write-Error "YAZE GUI not found: $YazeBin"
|
||||
$allOk = $false
|
||||
}
|
||||
|
||||
if (Test-Path $Z3edBin) {
|
||||
Write-Success "z3ed CLI found: $Z3edBin"
|
||||
} else {
|
||||
Write-Error "z3ed CLI not found: $Z3edBin"
|
||||
$allOk = $false
|
||||
}
|
||||
|
||||
# Check ROM
|
||||
if (Test-Path $TestRom) {
|
||||
Write-Success "Test ROM found: $TestRom"
|
||||
} else {
|
||||
Write-Warning "Test ROM not found: $TestRom (some tests will be skipped)"
|
||||
}
|
||||
|
||||
# Check Gemini API Key
|
||||
if ($env:GEMINI_API_KEY) {
|
||||
Write-Success "Gemini API key configured"
|
||||
} else {
|
||||
Write-Warning "GEMINI_API_KEY not set (vision tests will be skipped)"
|
||||
Write-Warning " Set with: `$env:GEMINI_API_KEY='your-key-here'"
|
||||
}
|
||||
|
||||
# Create screenshot directory
|
||||
$screenshotsDir = "test_screenshots"
|
||||
if (-not (Test-Path $screenshotsDir)) {
|
||||
New-Item -ItemType Directory -Path $screenshotsDir | Out-Null
|
||||
}
|
||||
Write-Success "Screenshot directory ready: $screenshotsDir"
|
||||
|
||||
if (-not $allOk) {
|
||||
Write-Host ""
|
||||
Write-Error "Prerequisites not met. Please build the project first:"
|
||||
Write-Host " cmake --preset win-ai"
|
||||
Write-Host " cmake --build build-windows --config Debug"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
function Test-Z3edBasic {
|
||||
Write-Section "Test 1: z3ed Basic Functionality"
|
||||
|
||||
Write-Test "Checking z3ed version"
|
||||
try {
|
||||
$output = & $Z3edBin --version 2>&1
|
||||
Write-Success "z3ed executable works"
|
||||
} catch {
|
||||
Write-Error "z3ed --version failed"
|
||||
return
|
||||
}
|
||||
|
||||
Write-Test "Checking z3ed help"
|
||||
try {
|
||||
$output = & $Z3edBin --help 2>&1
|
||||
Write-Success "z3ed help accessible"
|
||||
} catch {
|
||||
Write-Warning "z3ed help command failed"
|
||||
}
|
||||
}
|
||||
|
||||
function Test-AIAgentOllama {
|
||||
Write-Section "Test 2: AI Agent (Ollama)"
|
||||
|
||||
Write-Test "Checking if Ollama is running"
|
||||
try {
|
||||
$response = Invoke-WebRequest -Uri "http://localhost:11434/api/tags" -UseBasicParsing -TimeoutSec 2
|
||||
Write-Success "Ollama server is running"
|
||||
|
||||
Write-Test "Testing agent chat with Ollama"
|
||||
$output = & $Z3edBin agent chat --model "llama3.2:latest" --prompt "Say 'test successful' and nothing else" 2>&1
|
||||
if ($output -match "test successful") {
|
||||
Write-Success "Ollama agent responded correctly"
|
||||
} else {
|
||||
Write-Warning "Ollama agent test inconclusive"
|
||||
}
|
||||
} catch {
|
||||
Write-Warning "Ollama not running (start with: ollama serve)"
|
||||
}
|
||||
}
|
||||
|
||||
function Test-AIAgentGemini {
|
||||
Write-Section "Test 3: AI Agent (Gemini)"
|
||||
|
||||
if (-not $env:GEMINI_API_KEY) {
|
||||
Write-Warning "Skipping Gemini tests (no API key)"
|
||||
return
|
||||
}
|
||||
|
||||
Write-Test "Testing Gemini text generation"
|
||||
try {
|
||||
$output = & $Z3edBin agent chat --provider gemini --prompt "Say 'Gemini works' and nothing else" 2>&1
|
||||
if ($output -match "Gemini works") {
|
||||
Write-Success "Gemini text generation works"
|
||||
} else {
|
||||
Write-Error "Gemini test failed"
|
||||
Write-Host $output
|
||||
}
|
||||
} catch {
|
||||
Write-Error "Gemini test threw exception: $_"
|
||||
}
|
||||
}
|
||||
|
||||
function Test-MultimodalVision {
|
||||
Write-Section "Test 4: Multimodal Vision (Gemini)"
|
||||
|
||||
if (-not $env:GEMINI_API_KEY) {
|
||||
Write-Warning "Skipping vision tests (no API key)"
|
||||
return
|
||||
}
|
||||
|
||||
Write-Test "Running multimodal vision test suite"
|
||||
try {
|
||||
$output = & $Z3edBin test --filter "*GeminiVision*" 2>&1
|
||||
$outputStr = $output -join "`n"
|
||||
|
||||
if ($outputStr -match "PASSED") {
|
||||
Write-Success "Multimodal vision tests passed"
|
||||
} else {
|
||||
Write-Warning "Vision tests completed with warnings"
|
||||
}
|
||||
} catch {
|
||||
Write-Error "Vision test suite failed: $_"
|
||||
}
|
||||
}
|
||||
|
||||
function Test-LearnCommand {
|
||||
Write-Section "Test 5: Learn Command (Knowledge Management)"
|
||||
|
||||
Write-Test "Testing preference storage"
|
||||
try {
|
||||
& $Z3edBin agent learn preference "test_key" "test_value" 2>&1 | Out-Null
|
||||
Write-Success "Preference stored"
|
||||
} catch {
|
||||
Write-Error "Failed to store preference"
|
||||
}
|
||||
|
||||
Write-Test "Testing context storage"
|
||||
try {
|
||||
& $Z3edBin agent learn context "project" "YAZE ROM Editor test" 2>&1 | Out-Null
|
||||
Write-Success "Project context stored"
|
||||
} catch {
|
||||
Write-Warning "Context storage failed"
|
||||
}
|
||||
|
||||
Write-Test "Listing learned knowledge"
|
||||
try {
|
||||
& $Z3edBin agent learn list 2>&1 | Out-Null
|
||||
Write-Success "Knowledge retrieval works"
|
||||
} catch {
|
||||
Write-Warning "Knowledge list failed"
|
||||
}
|
||||
}
|
||||
|
||||
function Test-GUIAutomationPrep {
|
||||
Write-Section "Test 6: GUI Automation (Preparation)"
|
||||
|
||||
Write-Test "Checking gRPC test harness support"
|
||||
$helpOutput = & $Z3edBin --help 2>&1
|
||||
if ($helpOutput -match "grpc") {
|
||||
Write-Success "gRPC support compiled in"
|
||||
} else {
|
||||
Write-Warning "gRPC support not detected"
|
||||
}
|
||||
|
||||
Write-Test "Verifying screenshot utils"
|
||||
if (Test-Path "build-windows\lib\Debug\yaze_core_lib.lib") {
|
||||
Write-Success "Core library with screenshot utils found"
|
||||
} else {
|
||||
Write-Warning "Core library not found (needed for GUI automation)"
|
||||
}
|
||||
|
||||
Write-Warning "Full GUI automation test requires YAZE to be running"
|
||||
Write-Warning " Start YAZE GUI, then run: .\scripts\test_ai_gui_control.ps1"
|
||||
}
|
||||
|
||||
function Write-Summary {
|
||||
Write-Section "Test Summary"
|
||||
|
||||
Write-Host "✓ Basic z3ed functionality verified" -ForegroundColor Green
|
||||
Write-Host "✓ AI agent system operational" -ForegroundColor Green
|
||||
|
||||
if ($env:GEMINI_API_KEY) {
|
||||
Write-Host "✓ Multimodal vision capabilities tested" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host "⚠ Vision tests skipped (no API key)" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Next Steps:" -ForegroundColor Cyan
|
||||
Write-Host " 1. Start YAZE GUI: " -NoNewline -ForegroundColor Cyan
|
||||
Write-Host $YazeBin -ForegroundColor Green
|
||||
Write-Host " 2. Test collaboration: " -NoNewline -ForegroundColor Cyan
|
||||
Write-Host ".\scripts\test_collaboration.ps1" -ForegroundColor Green
|
||||
Write-Host " 3. Test GUI control: " -NoNewline -ForegroundColor Cyan
|
||||
Write-Host ".\scripts\test_ai_gui_control.ps1" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "For full feature testing:" -ForegroundColor Cyan
|
||||
Write-Host " - Set GEMINI_API_KEY for vision tests"
|
||||
Write-Host " - Start Ollama server for local AI"
|
||||
Write-Host " - Provide test ROM at: $TestRom"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# Main Execution
|
||||
# ============================================================================
|
||||
|
||||
Write-Header
|
||||
|
||||
# Change to script directory's parent
|
||||
Set-Location (Join-Path $PSScriptRoot "..")
|
||||
|
||||
Test-Prerequisites
|
||||
Test-Z3edBasic
|
||||
Test-AIAgentOllama
|
||||
Test-AIAgentGemini
|
||||
Test-MultimodalVision
|
||||
Test-LearnCommand
|
||||
Test-GUIAutomationPrep
|
||||
|
||||
Write-Summary
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "╔════════════════════════════════════════════════════════════════╗" -ForegroundColor Green
|
||||
Write-Host "║ ✓ AI Features Test Complete! ║" -ForegroundColor Green
|
||||
Write-Host "╚════════════════════════════════════════════════════════════════╝" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
277
scripts/test_ai_features.sh
Executable file
277
scripts/test_ai_features.sh
Executable file
@@ -0,0 +1,277 @@
|
||||
#!/bin/bash
|
||||
# YAZE AI Features Test Script for macOS/Linux
|
||||
# Tests AI agent, multimodal vision, and GUI automation capabilities
|
||||
|
||||
set -e
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Configuration
|
||||
YAZE_BIN="${YAZE_BIN:-./build/bin/yaze}"
|
||||
Z3ED_BIN="${Z3ED_BIN:-./build/bin/z3ed}"
|
||||
TEST_ROM="${TEST_ROM:-./zelda3.sfc}"
|
||||
GEMINI_API_KEY="${GEMINI_API_KEY:-}"
|
||||
SCREENSHOTS_DIR="./test_screenshots"
|
||||
|
||||
function print_header() {
|
||||
echo -e "\n${CYAN}╔════════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${CYAN}║ YAZE AI Features Test Suite (macOS/Linux) ║${NC}"
|
||||
echo -e "${CYAN}╚════════════════════════════════════════════════════════════════╝${NC}\n"
|
||||
}
|
||||
|
||||
function print_section() {
|
||||
echo -e "\n${BLUE}▶ $1${NC}"
|
||||
echo -e "${BLUE}$(printf '─%.0s' {1..64})${NC}"
|
||||
}
|
||||
|
||||
function print_test() {
|
||||
echo -e "${CYAN} Testing:${NC} $1"
|
||||
}
|
||||
|
||||
function print_success() {
|
||||
echo -e "${GREEN} ✓ $1${NC}"
|
||||
}
|
||||
|
||||
function print_warning() {
|
||||
echo -e "${YELLOW} ⚠ $1${NC}"
|
||||
}
|
||||
|
||||
function print_error() {
|
||||
echo -e "${RED} ✗ $1${NC}"
|
||||
}
|
||||
|
||||
function check_prerequisites() {
|
||||
print_section "Checking Prerequisites"
|
||||
|
||||
local all_ok=true
|
||||
|
||||
# Check binaries
|
||||
if [[ -f "$YAZE_BIN" ]]; then
|
||||
print_success "YAZE GUI found: $YAZE_BIN"
|
||||
else
|
||||
print_error "YAZE GUI not found: $YAZE_BIN"
|
||||
all_ok=false
|
||||
fi
|
||||
|
||||
if [[ -f "$Z3ED_BIN" ]]; then
|
||||
print_success "z3ed CLI found: $Z3ED_BIN"
|
||||
else
|
||||
print_error "z3ed CLI not found: $Z3ED_BIN"
|
||||
all_ok=false
|
||||
fi
|
||||
|
||||
# Check ROM
|
||||
if [[ -f "$TEST_ROM" ]]; then
|
||||
print_success "Test ROM found: $TEST_ROM"
|
||||
else
|
||||
print_warning "Test ROM not found: $TEST_ROM (some tests will be skipped)"
|
||||
fi
|
||||
|
||||
# Check Gemini API Key
|
||||
if [[ -n "$GEMINI_API_KEY" ]]; then
|
||||
print_success "Gemini API key configured"
|
||||
else
|
||||
print_warning "GEMINI_API_KEY not set (vision tests will be skipped)"
|
||||
print_warning " Set with: export GEMINI_API_KEY='your-key-here'"
|
||||
fi
|
||||
|
||||
# Check screenshot directory
|
||||
mkdir -p "$SCREENSHOTS_DIR"
|
||||
print_success "Screenshot directory ready: $SCREENSHOTS_DIR"
|
||||
|
||||
if [[ "$all_ok" == "false" ]]; then
|
||||
echo ""
|
||||
print_error "Prerequisites not met. Please build the project first:"
|
||||
echo " cmake --preset mac-ai"
|
||||
echo " cmake --build build --target yaze z3ed"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function test_z3ed_basic() {
|
||||
print_section "Test 1: z3ed Basic Functionality"
|
||||
|
||||
print_test "Checking z3ed version"
|
||||
if "$Z3ED_BIN" --version &>/dev/null; then
|
||||
print_success "z3ed executable works"
|
||||
else
|
||||
print_error "z3ed --version failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
print_test "Checking z3ed help"
|
||||
if "$Z3ED_BIN" --help &>/dev/null; then
|
||||
print_success "z3ed help accessible"
|
||||
else
|
||||
print_warning "z3ed help command failed"
|
||||
fi
|
||||
}
|
||||
|
||||
function test_ai_agent_ollama() {
|
||||
print_section "Test 2: AI Agent (Ollama)"
|
||||
|
||||
print_test "Checking if Ollama is running"
|
||||
if curl -s http://localhost:11434/api/tags &>/dev/null; then
|
||||
print_success "Ollama server is running"
|
||||
|
||||
print_test "Testing agent chat with Ollama"
|
||||
if "$Z3ED_BIN" agent chat --model "llama3.2:latest" --prompt "Say 'test successful' and nothing else" 2>&1 | grep -i "test successful" &>/dev/null; then
|
||||
print_success "Ollama agent responded correctly"
|
||||
else
|
||||
print_warning "Ollama agent test inconclusive"
|
||||
fi
|
||||
else
|
||||
print_warning "Ollama not running (skip with: ollama serve)"
|
||||
fi
|
||||
}
|
||||
|
||||
function test_ai_agent_gemini() {
|
||||
print_section "Test 3: AI Agent (Gemini)"
|
||||
|
||||
if [[ -z "$GEMINI_API_KEY" ]]; then
|
||||
print_warning "Skipping Gemini tests (no API key)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
print_test "Testing Gemini text generation"
|
||||
local response
|
||||
response=$("$Z3ED_BIN" agent chat --provider gemini --prompt "Say 'Gemini works' and nothing else" 2>&1)
|
||||
|
||||
if echo "$response" | grep -i "gemini works" &>/dev/null; then
|
||||
print_success "Gemini text generation works"
|
||||
else
|
||||
print_error "Gemini test failed"
|
||||
echo "$response"
|
||||
fi
|
||||
}
|
||||
|
||||
function test_multimodal_vision() {
|
||||
print_section "Test 4: Multimodal Vision (Gemini)"
|
||||
|
||||
if [[ -z "$GEMINI_API_KEY" ]]; then
|
||||
print_warning "Skipping vision tests (no API key)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
print_test "Running multimodal vision test suite"
|
||||
if "$Z3ED_BIN" test --filter "*GeminiVision*" 2>&1 | tee /tmp/vision_test.log; then
|
||||
if grep -q "PASSED" /tmp/vision_test.log; then
|
||||
print_success "Multimodal vision tests passed"
|
||||
else
|
||||
print_warning "Vision tests completed with warnings"
|
||||
fi
|
||||
else
|
||||
print_error "Vision test suite failed"
|
||||
fi
|
||||
}
|
||||
|
||||
function test_learn_command() {
|
||||
print_section "Test 5: Learn Command (Knowledge Management)"
|
||||
|
||||
print_test "Testing preference storage"
|
||||
if "$Z3ED_BIN" agent learn preference "test_key" "test_value" &>/dev/null; then
|
||||
print_success "Preference stored"
|
||||
else
|
||||
print_error "Failed to store preference"
|
||||
fi
|
||||
|
||||
print_test "Testing context storage"
|
||||
if "$Z3ED_BIN" agent learn context "project" "YAZE ROM Editor test" &>/dev/null; then
|
||||
print_success "Project context stored"
|
||||
else
|
||||
print_warning "Context storage failed"
|
||||
fi
|
||||
|
||||
print_test "Listing learned knowledge"
|
||||
if "$Z3ED_BIN" agent learn list &>/dev/null; then
|
||||
print_success "Knowledge retrieval works"
|
||||
else
|
||||
print_warning "Knowledge list failed"
|
||||
fi
|
||||
}
|
||||
|
||||
function test_gui_automation_preparation() {
|
||||
print_section "Test 6: GUI Automation (Preparation)"
|
||||
|
||||
print_test "Checking gRPC test harness support"
|
||||
if "$Z3ED_BIN" --help 2>&1 | grep -i "grpc" &>/dev/null; then
|
||||
print_success "gRPC support compiled in"
|
||||
else
|
||||
print_warning "gRPC support not detected"
|
||||
fi
|
||||
|
||||
print_test "Verifying screenshot utils"
|
||||
if [[ -f "build/lib/libyaze_core_lib.a" ]]; then
|
||||
print_success "Core library with screenshot utils found"
|
||||
else
|
||||
print_warning "Core library not found (needed for GUI automation)"
|
||||
fi
|
||||
|
||||
print_warning "Full GUI automation test requires YAZE to be running"
|
||||
print_warning " Start YAZE GUI, then run: ./scripts/test_ai_gui_control.sh"
|
||||
}
|
||||
|
||||
function test_action_parser() {
|
||||
print_section "Test 7: AI Action Parser"
|
||||
|
||||
print_test "Testing natural language parsing"
|
||||
# This would need a test binary or z3ed command
|
||||
print_warning "Action parser integration test not yet implemented"
|
||||
print_warning " Verify manually: AIActionParser can parse commands"
|
||||
}
|
||||
|
||||
function print_summary() {
|
||||
print_section "Test Summary"
|
||||
|
||||
echo -e "${GREEN}✓ Basic z3ed functionality verified${NC}"
|
||||
echo -e "${GREEN}✓ AI agent system operational${NC}"
|
||||
|
||||
if [[ -n "$GEMINI_API_KEY" ]]; then
|
||||
echo -e "${GREEN}✓ Multimodal vision capabilities tested${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠ Vision tests skipped (no API key)${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}Next Steps:${NC}"
|
||||
echo -e " 1. Start YAZE GUI: ${GREEN}$YAZE_BIN${NC}"
|
||||
echo -e " 2. Test collaboration: ${GREEN}./scripts/test_collaboration.sh${NC}"
|
||||
echo -e " 3. Test GUI control: ${GREEN}./scripts/test_ai_gui_control.sh${NC}"
|
||||
echo ""
|
||||
echo -e "${CYAN}For full feature testing:${NC}"
|
||||
echo -e " - Set GEMINI_API_KEY for vision tests"
|
||||
echo -e " - Start Ollama server for local AI"
|
||||
echo -e " - Provide test ROM at: $TEST_ROM"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# Main Execution
|
||||
# ============================================================================
|
||||
|
||||
print_header
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
check_prerequisites
|
||||
|
||||
test_z3ed_basic
|
||||
test_ai_agent_ollama
|
||||
test_ai_agent_gemini
|
||||
test_multimodal_vision
|
||||
test_learn_command
|
||||
test_gui_automation_preparation
|
||||
test_action_parser
|
||||
|
||||
print_summary
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}╔════════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ ✓ AI Features Test Complete! ║${NC}"
|
||||
echo -e "${GREEN}╚════════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
@@ -82,8 +82,36 @@ function Test-GitSubmodules {
|
||||
return $allPresent
|
||||
}
|
||||
|
||||
function Test-Vcpkg {
|
||||
$vcpkgPath = Join-Path $PSScriptRoot ".." "vcpkg"
|
||||
$vcpkgExe = Join-Path $vcpkgPath "vcpkg.exe"
|
||||
|
||||
if (Test-Path $vcpkgPath) {
|
||||
if (Test-Path $vcpkgExe) {
|
||||
Write-Status "vcpkg found and bootstrapped" "Success"
|
||||
$script:success += "vcpkg available for dependency management"
|
||||
|
||||
try {
|
||||
$vcpkgVersion = & $vcpkgExe version 2>&1 | Select-Object -First 1
|
||||
Write-Status "vcpkg version: $vcpkgVersion" "Info"
|
||||
} catch {
|
||||
Write-Status "vcpkg executable found but version check failed" "Warning"
|
||||
}
|
||||
return $true
|
||||
} else {
|
||||
Write-Status "vcpkg directory exists but not bootstrapped" "Warning"
|
||||
$script:warnings += "vcpkg not bootstrapped - run: vcpkg\bootstrap-vcpkg.bat"
|
||||
return $false
|
||||
}
|
||||
} else {
|
||||
Write-Status "vcpkg not found (required for Windows builds)" "Error"
|
||||
$script:issuesFound += "vcpkg not installed - run: git clone https://github.com/microsoft/vcpkg.git && vcpkg\bootstrap-vcpkg.bat"
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
function Test-CMakeCache {
|
||||
$buildDirs = @("build", "build_test", "build-grpc-test", "out/build")
|
||||
$buildDirs = @("build", "build-windows", "build-test", "build-grpc-test", "out/build")
|
||||
$cacheIssues = $false
|
||||
|
||||
foreach ($dir in $buildDirs) {
|
||||
@@ -389,7 +417,11 @@ if (Test-Path $vswhere) {
|
||||
$script:warnings += "Could not detect Visual Studio installation"
|
||||
}
|
||||
|
||||
# Step 4: Check Git Submodules
|
||||
# Step 4: Check vcpkg
|
||||
Write-Status "Checking vcpkg availability..." "Step"
|
||||
Test-Vcpkg | Out-Null
|
||||
|
||||
# Step 5: Check Git Submodules
|
||||
Write-Status "Checking git submodules..." "Step"
|
||||
$submodulesOk = Test-GitSubmodules
|
||||
if ($submodulesOk) {
|
||||
|
||||
@@ -112,7 +112,7 @@ function test_git_submodules() {
|
||||
}
|
||||
|
||||
function test_cmake_cache() {
|
||||
local build_dirs=("build" "build_test" "build-grpc-test" "build_rooms")
|
||||
local build_dirs=("build" "build-test" "build-grpc-test" "build-rooms" "build-windows")
|
||||
local cache_issues=0
|
||||
|
||||
for dir in "${build_dirs[@]}"; do
|
||||
@@ -189,7 +189,7 @@ function test_agent_folder_structure() {
|
||||
function clean_cmake_cache() {
|
||||
write_status "Cleaning CMake cache and build directories..." "Step"
|
||||
|
||||
local build_dirs=("build" "build_test" "build-grpc-test" "build_rooms")
|
||||
local build_dirs=("build" "build-test" "build-grpc-test" "build-rooms" "build-windows")
|
||||
local cleaned=0
|
||||
|
||||
for dir in "${build_dirs[@]}"; do
|
||||
@@ -359,10 +359,31 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
# Step 7: Check Dependencies
|
||||
# Step 7: Check vcpkg (Windows-specific but important)
|
||||
write_status "Checking vcpkg availability..." "Step"
|
||||
if [[ -d "vcpkg" ]]; then
|
||||
if [[ -f "vcpkg/vcpkg" ]] || [[ -f "vcpkg/vcpkg.exe" ]]; then
|
||||
write_status "vcpkg found and bootstrapped" "Success"
|
||||
SUCCESS+=("vcpkg available for dependency management")
|
||||
|
||||
# Check vcpkg version if possible
|
||||
if [[ -x "vcpkg/vcpkg" ]]; then
|
||||
vcpkg_version=$(./vcpkg/vcpkg version 2>/dev/null | head -n1 || echo "unknown")
|
||||
write_status "vcpkg version: $vcpkg_version" "Info"
|
||||
fi
|
||||
else
|
||||
write_status "vcpkg directory exists but not bootstrapped" "Warning"
|
||||
WARNINGS+=("vcpkg not bootstrapped - run: cd vcpkg && ./bootstrap-vcpkg.sh")
|
||||
fi
|
||||
else
|
||||
write_status "vcpkg not found (optional, required for Windows)" "Info"
|
||||
write_status "To install: git clone https://github.com/microsoft/vcpkg.git && vcpkg/bootstrap-vcpkg.sh" "Info"
|
||||
fi
|
||||
|
||||
# Step 8: Check Dependencies
|
||||
test_dependency_compatibility
|
||||
|
||||
# Step 8: Check Agent Folder Structure
|
||||
# Step 9: Check Agent Folder Structure
|
||||
if test_agent_folder_structure; then
|
||||
: # Structure is OK
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user