stop on BITS download errors
reject 0 byte dsa-collector.exe before launching
This commit is contained in:
@@ -13,12 +13,18 @@ Function Download-File {
|
||||
[CmdletBinding()]
|
||||
param($URL, $File)
|
||||
$script:DsaDownloadCalls++
|
||||
If ($script:DsaTestMode -eq 'empty-download') {
|
||||
[IO.File]::WriteAllBytes($File, [byte[]]@())
|
||||
Return $File
|
||||
}
|
||||
If ($script:DsaTestMode -eq 'download-failure') { Throw 'Simulated BITS failure.' }
|
||||
[IO.File]::WriteAllText($File, 'Mock executable; never executed.')
|
||||
Return $File
|
||||
}
|
||||
Function Start-Process {
|
||||
[CmdletBinding()]
|
||||
param($FilePath, $ArgumentList, [switch]$Wait, [switch]$PassThru, $WindowStyle)
|
||||
$script:DsaProcessCalls++
|
||||
$DsaMatch = [regex]::Match($ArgumentList, '"--output"\s+"([^"]+)"')
|
||||
If (!$DsaMatch.Success) { Throw 'Collector output argument missing.' }
|
||||
$script:DsaCsvPath = $DsaMatch.Groups[1].Value
|
||||
@@ -64,6 +70,7 @@ Function Invoke-DsaCase {
|
||||
$script:DsaTestMode = $Mode
|
||||
$script:DsaRecordedUploads = @()
|
||||
$script:DsaDownloadCalls = 0
|
||||
$script:DsaProcessCalls = 0
|
||||
$script:DsaGeneratedPath = $null
|
||||
$DsaCaught = $null
|
||||
Try { . $DsaScriptUnderTest | Out-Null } Catch { $DsaCaught = $_ }
|
||||
@@ -73,6 +80,14 @@ Function Invoke-DsaCase {
|
||||
Assert-Dsa ($script:DsaDownloadCalls -eq 0) 'Invalid flag must fail before downloading.'
|
||||
Return
|
||||
}
|
||||
If ($Mode -in @('empty-download','download-failure')) {
|
||||
Assert-Dsa ($null -ne $DsaCaught) 'Download failure must stop collection.'
|
||||
Assert-Dsa ($script:DsaProcessCalls -eq 0 -and $script:DsaRecordedUploads.Count -eq 0) 'Download failure must prevent execution and upload.'
|
||||
If ($Mode -eq 'empty-download') {
|
||||
Assert-Dsa ($DsaCaught.Exception.Message -like '*0 bytes*') 'Empty download error must explain the failure.'
|
||||
}
|
||||
Return
|
||||
}
|
||||
If ($Mode -in @('collector-failure','missing-output')) {
|
||||
Assert-Dsa ($null -ne $DsaCaught -and $script:DsaRecordedUploads.Count -eq 0) 'Collection failure must prevent upload.'
|
||||
Return
|
||||
@@ -107,7 +122,7 @@ Try {
|
||||
Write-Host "PASS: ZIP=$ZipExpected Upload=$UploadExpected DeleteAfterUpload=$DeleteExpected"
|
||||
}
|
||||
}
|
||||
Foreach ($Mode in @('upload-failure','no-receipt','incomplete-receipt','collector-failure','missing-output')) {
|
||||
Foreach ($Mode in @('upload-failure','no-receipt','incomplete-receipt','collector-failure','missing-output','empty-download','download-failure')) {
|
||||
Invoke-DsaCase $ZipExpected $true $true $Mode
|
||||
Write-Host "PASS: ZIP=$ZipExpected $Mode prevents deletion."
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user