ci(validation): speed up validation, only print logs

This commit is contained in:
Sam Chau
2025-08-27 05:17:39 +09:30
parent 1749e79950
commit 492dbe8530
2 changed files with 91 additions and 19 deletions

View File

@@ -26,26 +26,10 @@ jobs:
sudo apt-get update sudo apt-get update
sudo apt-get install -y powershell sudo apt-get install -y powershell
- name: Validate All Patterns - name: validate
run: | run: pwsh scripts/validateAllPatterns.ps1
failed=0
for file in regex_patterns/*.yml regex_patterns/*.yaml; do
if [ -f "$file" ]; then
echo "Validating: $file"
if ! pwsh scripts/validatePattern.ps1 -YamlFilePath "$file"; then
failed=$((failed + 1))
fi
fi
done
if [ $failed -gt 0 ]; then - name: test
echo "❌ $failed pattern(s) failed validation"
exit 1
else
echo "✅ All patterns validated successfully"
fi
- name: Run Unit Tests
run: | run: |
echo "TODO: Implement unit tests for all patterns" echo "TODO: Implement unit tests for all patterns"
# TODO: Add test runner command here # TODO: Add test runner command here

View File

@@ -0,0 +1,88 @@
param()
function Write-Log {
param(
[Parameter(Mandatory=$true)]
[string]$Level,
[Parameter(Mandatory=$true)]
[string]$Message
)
if ($Level -eq "ERROR") {
Write-Host "ERROR: $Message" -ForegroundColor Red
}
elseif ($Level -eq "SUCCESS") {
Write-Host "$Message" -ForegroundColor Green
}
elseif ($Level -eq "INFO") {
Write-Host "$Message"
}
}
# Get all pattern files
$patternFiles = @()
$patternFiles += Get-ChildItem -Path "regex_patterns" -Filter "*.yml" -File
$patternFiles += Get-ChildItem -Path "regex_patterns" -Filter "*.yaml" -File
if ($patternFiles.Count -eq 0) {
Write-Log -Level "ERROR" -Message "No pattern files found in regex_patterns/"
exit 1
}
Write-Log -Level "INFO" -Message "Found $($patternFiles.Count) pattern files to validate"
# Validate patterns sequentially
$failedPatterns = @()
$completed = 0
$totalFiles = $patternFiles.Count
$lastPercentLogged = 0
foreach ($file in $patternFiles) {
try {
# Read YAML content
$yamlContent = Get-Content -Path $file.FullName -Raw
# Extract pattern field
$patternMatch = [regex]::Match($yamlContent, 'pattern:\s*(.+)')
$pattern = $patternMatch.Groups[1].Value.Trim()
# Validate the pattern
$regex = New-Object System.Text.RegularExpressions.Regex($pattern)
# Success - no need to log
}
catch {
$failedPatterns += @{
File = $file.FullName
Error = $_.ToString()
Pattern = $pattern
}
}
$completed++
# Log progress every 10%
$percentComplete = [math]::Floor(($completed / $totalFiles) * 10) * 10
if ($percentComplete -gt $lastPercentLogged) {
Write-Log -Level "INFO" -Message "$percentComplete% complete ($completed/$totalFiles files)"
$lastPercentLogged = $percentComplete
}
}
# Log errors
foreach ($failure in $failedPatterns) {
Write-Log -Level "ERROR" -Message "$($failure.File): $($failure.Error)"
if ($Verbose) {
Write-Log -Level "ERROR" -Message "Pattern was: $($failure.Pattern)"
}
}
# Summary
if ($failedPatterns.Count -gt 0) {
Write-Log -Level "ERROR" -Message "$($failedPatterns.Count) pattern(s) failed validation"
exit 1
}
else {
Write-Log -Level "SUCCESS" -Message "All $($patternFiles.Count) patterns validated successfully"
exit 0
}