Files
ccs/tests/integration/edge-cases.ps1
T
kaitranntt 5fae92ac07 feat(glmt): add streaming with real-time thinking blocks
- reorganize bin/ into auth/, glmt/, management/, utils/
- add budget calculator and locale enforcer
- enhance test coverage with unit/integration separation
2025-11-11 15:39:00 -05:00

184 lines
6.3 KiB
PowerShell

# CCS COMPREHENSIVE TEST SUITE - Master Orchestrator (PowerShell)
# Runs all test suites in the correct order
# Maintains backward compatibility with existing usage
$ErrorActionPreference = "Continue"
# Get the directory where this script is located
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
Write-Host "========================================" -ForegroundColor Yellow
Write-Host "CCS COMPREHENSIVE TEST SUITE" -ForegroundColor Yellow
Write-Host "========================================" -ForegroundColor Yellow
Write-Host ""
Write-Host "This master test suite runs:" -ForegroundColor Cyan
Write-Host " 1. Native Windows tests (PowerShell installation)" -ForegroundColor Gray
Write-Host " 2. npm package tests (if Node.js available)" -ForegroundColor Gray
Write-Host ""
# Track overall results
$OverallPass = 0
$OverallFail = 0
$OverallTotal = 0
function Test-Case {
param(
[string]$Name,
[scriptblock]$Test,
[string]$ExpectedBehavior
)
$script:TotalTests++
Write-Host ""
Write-Host "[$script:TotalTests] $Name" -ForegroundColor Cyan
Write-Host " Expected: $ExpectedBehavior" -ForegroundColor Gray
try {
$result = & $Test
if ($result) {
Write-Host " Result: PASS" -ForegroundColor Green
$script:PassCount++
return $true
} else {
Write-Host " Result: FAIL" -ForegroundColor Red
$script:FailCount++
return $false
}
} catch {
Write-Host " Result: FAIL" -ForegroundColor Red
Write-Host " Error: $($_.Exception.Message)" -ForegroundColor Red
$script:FailCount++
return $false
}
}
# Function to run a test suite
function Run-TestSuite {
param(
[string]$SuiteName,
[scriptblock]$SuiteCommand
)
Write-Host ""
Write-Host "===== Running $SuiteName =====" -ForegroundColor Yellow
Write-Host ""
# Reset counters
$script:PassCount = 0
$script:FailCount = 0
$script:TotalTests = 0
try {
& $SuiteCommand
$suitePassed = $script:PassCount
$suiteFailed = $script:FailCount
$suiteTotal = $script:TotalTests
Write-Host "$SuiteName completed successfully" -ForegroundColor Green
Write-Host "Tests: $suitePassed/$suiteTotal passed" -ForegroundColor Cyan
# Add to overall totals
$script:OverallPass += $suitePassed
$script:OverallFail += $suiteFailed
$script:OverallTotal += $suiteTotal
return $suiteFailed -eq 0
} catch {
Write-Host "$SuiteName failed with exception" -ForegroundColor Red
Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red
$script:OverallFail++
return $false
}
}
# Test Suite 1: Native Windows Tests
$WindowsTestPath = Join-Path $ScriptDir "native\windows\edge-cases.ps1"
if (Test-Path $WindowsTestPath) {
if (Run-TestSuite "Native Windows Tests" { & $WindowsTestPath }) {
Write-Host "✓ Native Windows tests passed" -ForegroundColor Green
} else {
Write-Host "⚠ Native Windows tests had failures" -ForegroundColor Yellow
}
} else {
Write-Host "⚠ Native Windows tests not found, skipping" -ForegroundColor Yellow
}
# Test Suite 2: npm Package Tests
$NodeCommand = Get-Command node -ErrorAction SilentlyContinue
$PackageJsonPath = Join-Path $ScriptDir "..\package.json"
if ($NodeCommand -and (Test-Path $PackageJsonPath)) {
Write-Host ""
Write-Host "===== Running npm Package Tests =====" -ForegroundColor Yellow
Write-Host ""
try {
Push-Location (Split-Path -Parent $PackageJsonPath)
$npmResult = npm run test:npm 2>&1
$npmExitCode = $LASTEXITCODE
Pop-Location
if ($npmExitCode -eq 0) {
Write-Host "✓ npm package tests passed" -ForegroundColor Green
Write-Host "npm tests completed successfully" -ForegroundColor Cyan
} else {
Write-Host "⚠ npm package tests had failures" -ForegroundColor Yellow
Write-Host "npm output:" -ForegroundColor Gray
Write-Host $npmResult -ForegroundColor Gray
$script:OverallFail++
}
} catch {
Write-Host "⚠ npm package tests had errors" -ForegroundColor Yellow
Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red
$script:OverallFail++
}
} else {
if (-not $NodeCommand) {
Write-Host "⚠ Node.js not found, skipping npm tests" -ForegroundColor Yellow
Write-Host " Install Node.js to run npm package tests" -ForegroundColor Gray
} else {
Write-Host "⚠ package.json not found, skipping npm tests" -ForegroundColor Yellow
}
}
# Final Summary
Write-Host ""
Write-Host "========================================" -ForegroundColor Yellow
Write-Host "FINAL TEST RESULTS" -ForegroundColor Yellow
Write-Host "========================================" -ForegroundColor Yellow
Write-Host ""
if ($OverallTotal -gt 0) {
Write-Host "Total Tests: $OverallTotal" -ForegroundColor Cyan
Write-Host "Passed: $OverallPass" -ForegroundColor Green
if ($OverallFail -eq 0) {
Write-Host "Failed: $OverallFail" -ForegroundColor Green
} else {
Write-Host "Failed: $OverallFail" -ForegroundColor Red
}
$SuccessRate = if ($OverallTotal -gt 0) { [math]::Round(($OverallPass / $OverallTotal) * 100, 2) } else { 0 }
Write-Host "Success Rate: $SuccessRate%" -ForegroundColor $(if ($SuccessRate -ge 90) { "Green" } elseif ($SuccessRate -ge 70) { "Yellow" } else { "Red" })
Write-Host ""
if ($OverallFail -eq 0) {
Write-Host "========================================" -ForegroundColor Green
Write-Host "ALL TESTS PASSED!" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
Write-Host ""
Write-Host "CCS is ready for production use!" -ForegroundColor Green
exit 0
} else {
Write-Host "========================================" -ForegroundColor Yellow
Write-Host "SOME TESTS FAILED" -ForegroundColor Yellow
Write-Host "========================================" -ForegroundColor Yellow
Write-Host ""
Write-Host "Review failed tests above for details" -ForegroundColor Yellow
exit 1
}
} else {
Write-Host "No tests were executed" -ForegroundColor Yellow
exit 1
}