Migrates to Pester5+ tests #59

Merged
OCram85 merged 47 commits from Pester5 into master 2022-07-14 13:37:13 +02:00
3 changed files with 63 additions and 56 deletions
Showing only changes of commit d2582e7194 - Show all commits

View File

@ -1,7 +1,7 @@
--- ---
kind: pipeline kind: pipeline
type: docker type: docker
name: Linux_PWSH7_Build name: PWSH_LTS_7.2_Ubuntu-focal
platform: platform:
os: linux os: linux
@ -9,7 +9,7 @@ platform:
steps: steps:
- name: Environments - name: Environments
image: mcr.microsoft.com/powershell:latest image: mcr.microsoft.com/powershell:lts-7.2-ubuntu-focal
commands: commands:
- | - |
pwsh -NonInteractive -c "& { pwsh -NonInteractive -c "& {
@ -18,7 +18,7 @@ steps:
}" }"
- name: LintTests - name: LintTests
image: mcr.microsoft.com/powershell:latest image: mcr.microsoft.com/powershell:lts-7.2-ubuntu-focal
failure: ignore failure: ignore
commands: commands:
- | - |
@ -29,7 +29,7 @@ steps:
}" }"
- name: UnitTests - name: UnitTests
image: mcr.microsoft.com/powershell:latest image: mcr.microsoft.com/powershell:lts-7.2-ubuntu-focal
failure: ignore failure: ignore
commands: commands:
- | - |
@ -47,61 +47,11 @@ steps:
files: files:
- coverage.xml - coverage.xml
--- - name: SetPipelineState
kind: pipeline
type: docker
name: PWSH_LTS_7.2_Ubuntu-focal
platform:
os: linux
arch: amd64
platform:
os: linux
arch: amd64
steps:
- name: Environments
image: mcr.microsoft.com/powershell:lts-7.2-ubuntu-focal
commands:
- |
pwsh -NonInteractive -c "& {
Import-Module './tools/DroneIO.psm1' -Verbose;
Invoke-ShowEnv -Verbose
}"
- name: LintTests
image: mcr.microsoft.com/powershell:lts-7.2-ubuntu-focal
#failure: ignore
commands:
- |
pwsh -NonInteractive -c "& {
Import-Module './tools/DroneIO.psm1';
Invoke-InstallDependencies;
Invoke-Linter -ErrorAction 'Stop'
}"
- name: UnitTests
image: mcr.microsoft.com/powershell:lts-7.2-ubuntu-focal
#failure: ignore
commands:
- |
pwsh -NonInteractive -c "& {
Import-Module './tools/DroneIO.psm1';
Invoke-InstallDependencies;
Invoke-UnitTest -Verbosity 'Detailed' -ErrorAction 'Stop'
}"
- name: FinalState
image: mcr.microsoft.com/powershell:lts-7.2-ubuntu-focal image: mcr.microsoft.com/powershell:lts-7.2-ubuntu-focal
commands: commands:
- | - |
pwsh -NonInteractive -c "& { pwsh -NonInteractive -c "& {
Import-Module './tools/DroneIO.psm1'; Import-Module './tools/DroneIO.psm1';
Invoke-ShowEnv -Verbose Invoke-BuildState -ErrorAction 'Stop'
}" }"
depends_on:
- LintTests
- UnitTests

20
STATE.xml Normal file
View File

@ -0,0 +1,20 @@
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0">
<TN RefId="0">
<T>System.Management.Automation.PSCustomObject</T>
<T>System.Object</T>
</TN>
<MS>
<Obj N="Steps" RefId="1">
<TN RefId="1">
<T>System.Object[]</T>
<T>System.Array</T>
<T>System.Object</T>
</TN>
<LST>
<S>lint</S>
</LST>
</Obj>
</MS>
</Obj>
</Objs>

View File

@ -144,6 +144,7 @@ function Invoke-Linter {
"RuleName", "RuleName",
"Message" "Message"
) -AutoSize | Out-String | Write-Verbose -Verbose ) -AutoSize | Out-String | Write-Verbose -Verbose
Update-BuildStateFile
throw 'PS Script Analyzer failed!' throw 'PS Script Analyzer failed!'
} }
} }
@ -203,6 +204,7 @@ function Invoke-UnitTest {
$TestResults = Invoke-Pester -Configuration $PesterConf -ErrorAction 'Stop' $TestResults = Invoke-Pester -Configuration $PesterConf -ErrorAction 'Stop'
if ($TestResults.FailedCount -gt 0) { if ($TestResults.FailedCount -gt 0) {
Update-BuildStateFile
throw ('{0} tests failed!' -f $TestResults.FailedCount) throw ('{0} tests failed!' -f $TestResults.FailedCount)
} }
@ -211,3 +213,38 @@ function Invoke-UnitTest {
} }
} }
} }
function Update-BuildStateFile {
[CmdletBinding()]
param (
[Parameter(Mandatory = $false)]
[ValidateNotNullOrEmpty()]
[string]$StepName = $Env:DRONE_FAILED_STEPS
)
process {
$StateFilePath = Join-Path -Path $PWD -ChildPath './STATE.xml'
if (Test-Path -Path $StateFilePath) {
$StateContent = Import-Clixml -Path $StateFilePath
$StateContent.Steps += $StepName
}
else {
$StateContent = [PSCustomObject]@{
Steps = @($StepName)
}
}
Export-Clixml -Path $StateFilePath -InputObject $StateContent -Force -Encoding utf8NoBOM
}
}
function Invoke-BuildState {
[CmdletBinding()]
param ()
process {
$StateFilePath = Join-Path -Path $PWD -ChildPath './STATE.xml'
if ( Test-Path -Path $StateFilePath ) {
throw 'One one more pipeline steps failed. Marking the pipeline as failed!'
}
}
}