mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 00:22:34 +00:00
- reorganize bin/ into auth/, glmt/, management/, utils/ - add budget calculator and locale enforcer - enhance test coverage with unit/integration separation
184 lines
6.3 KiB
PowerShell
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
|
|
} |