diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 53188fef..0da2fac8 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -11,4 +11,6 @@ updates:
- dependencies
- github-actions
schedule:
- interval: weekly
+ interval: daily
+ cooldown:
+ default-days: 7
diff --git a/.github/linters/.jscpd.json b/.github/linters/.jscpd.json
deleted file mode 100644
index 3bbc16c5..00000000
--- a/.github/linters/.jscpd.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "threshold": 0,
- "reporters": [
- "consoleFull"
- ],
- "ignore": [
- "**/tests/**",
- "**/.github/workflows/Action-Test**"
- ],
- "absolute": true
-}
diff --git a/.github/linters/.powershell-psscriptanalyzer.psd1 b/.github/linters/.powershell-psscriptanalyzer.psd1
index 09cc3d0c..22dd8844 100644
--- a/.github/linters/.powershell-psscriptanalyzer.psd1
+++ b/.github/linters/.powershell-psscriptanalyzer.psd1
@@ -50,6 +50,7 @@
}
}
ExcludeRules = @(
+ 'PSAvoidUsingWriteHost', # Write-Host is intentionally used for GitHub Actions workflow commands and test output.
'PSMissingModuleManifestField', # This rule is not applicable until the module is built.
'PSUseToExportFieldsInManifest'
)
diff --git a/.github/release.yml b/.github/release.yml
deleted file mode 100644
index 35c6ae86..00000000
--- a/.github/release.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes#configuring-automatically-generated-release-notes
-
-changelog:
- exclude:
- labels:
- - NoRelease
- categories:
- - title: 🌟 Breaking Changes
- labels:
- - Major
- - Breaking
- - title: 🚀 New Features
- labels:
- - Minor
- - Feature
- - title: Other Changes
- labels:
- - '*'
diff --git a/.github/workflows/Action-Test.yml b/.github/workflows/Action-Test.yml
index 479b90d3..39289f05 100644
--- a/.github/workflows/Action-Test.yml
+++ b/.github/workflows/Action-Test.yml
@@ -29,7 +29,9 @@ jobs:
steps:
# Need to check out as part of the test, as its a local action
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
- name: Action-Test [1-Simple]
uses: ./
@@ -41,9 +43,10 @@ jobs:
- name: Status
shell: pwsh
- run: |
- Write-Host "Outcome: ${{ steps.action-test.outcome }}"
- Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
ActionTest1SimpleFile:
name: Action-Test - [1-Simple-File]
@@ -57,7 +60,9 @@ jobs:
steps:
# Need to check out as part of the test, as its a local action
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
- name: Action-Test [1-Simple-File]
uses: ./
@@ -69,9 +74,10 @@ jobs:
- name: Status
shell: pwsh
- run: |
- Write-Host "Outcome: ${{ steps.action-test.outcome }}"
- Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
ActionTest1SimpleFailure:
name: Action-Test - [1-Simple-Failure]
@@ -85,7 +91,9 @@ jobs:
steps:
# Need to check out as part of the test, as its a local action
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
- name: Action-Test [1-Simple-Failure]
uses: ./
@@ -98,9 +106,10 @@ jobs:
- name: Status
shell: pwsh
- run: |
- Write-Host "Outcome: ${{ steps.action-test.outcome }}"
- Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
ActionTest1SimpleFailureOnlyFailedSummary:
name: Action-Test - [1-Simple-Failure-OnlyFailedSummary]
@@ -114,7 +123,9 @@ jobs:
steps:
# Need to check out as part of the test, as its a local action
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
- name: Action-Test [1-Simple-Failure]
uses: ./
@@ -127,9 +138,10 @@ jobs:
- name: Status
shell: pwsh
- run: |
- Write-Host "Outcome: ${{ steps.action-test.outcome }}"
- Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
ActionTest1SimpleExecutionFailure:
name: Action-Test - [1-Simple-ExecutionFailure]
@@ -143,7 +155,9 @@ jobs:
steps:
# Need to check out as part of the test, as its a local action
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
- name: Action-Test [1-Simple-ExecutionFailure]
uses: ./
@@ -154,9 +168,10 @@ jobs:
- name: Status
shell: pwsh
- run: |
- Write-Host "Outcome: ${{ steps.action-test.outcome }}"
- Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
ActionTest2Standard:
name: Action-Test - [2-Standard]
@@ -170,23 +185,60 @@ jobs:
steps:
# Need to check out as part of the test, as its a local action
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
- name: Action-Test [2-Standard]
uses: ./
id: action-test
+ env:
+ RUNNER_OS: ${{ runner.os }}
with:
WorkingDirectory: tests/2-Standard
Output_CIFormat: GithubActions
Prescript: |
Write-Host "This is a prescript"
- Write-Host "We are running on ${{ runner.os }}"
+ Write-Host "We are running on $env:RUNNER_OS"
+
+ - name: Status
+ shell: pwsh
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
+
+ ActionTest2StandardPrescriptFile:
+ name: Action-Test - [2-Standard-PrescriptFile]
+ runs-on: ubuntu-latest
+ outputs:
+ Outcome: ${{ steps.action-test.outcome }}
+ Conclusion: ${{ steps.action-test.conclusion }}
+ Executed: ${{ steps.action-test.outputs.Executed }}
+ Result: ${{ steps.action-test.outputs.Result }}
+
+ steps:
+ # Need to check out as part of the test, as its a local action
+ - name: Checkout repo
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
+
+ - name: Action-Test [2-Standard-PrescriptFile]
+ uses: ./
+ id: action-test
+ with:
+ WorkingDirectory: tests/2-Standard
+ Output_CIFormat: GithubActions
+ Prescript: ../Prescript.ps1
+ TestResult_TestSuiteName: 2-Standard-PrescriptFile
- name: Status
shell: pwsh
- run: |
- Write-Host "Outcome: ${{ steps.action-test.outcome }}"
- Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
ActionTest2StandardNoSummary:
name: Action-Test - [2-Standard-NoSummary]
@@ -200,7 +252,9 @@ jobs:
steps:
# Need to check out as part of the test, as its a local action
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
- name: Action-Test [2-Standard-NoSummary]
uses: ./
@@ -212,9 +266,10 @@ jobs:
- name: Status
shell: pwsh
- run: |
- Write-Host "Outcome: ${{ steps.action-test.outcome }}"
- Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
ActionTest3Advanced:
name: Action-Test - [3-Advanced]
@@ -228,7 +283,9 @@ jobs:
steps:
# Need to check out as part of the test, as its a local action
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
- name: Action-Test [3-Advanced]
uses: ./
@@ -240,9 +297,10 @@ jobs:
- name: Status
shell: pwsh
- run: |
- Write-Host "Outcome: ${{ steps.action-test.outcome }}"
- Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
+ env:
+ OUTCOME: ${{ steps.action-test.outcome }}
+ CONCLUSION: ${{ steps.action-test.conclusion }}
+ run: tests/Show-Status.ps1
CatchJob:
name: Catch Job - Aggregate Status
@@ -253,300 +311,55 @@ jobs:
- ActionTest1SimpleFailureOnlyFailedSummary
- ActionTest1SimpleExecutionFailure
- ActionTest2Standard
+ - ActionTest2StandardPrescriptFile
- ActionTest2StandardNoSummary
- ActionTest3Advanced
if: always()
runs-on: ubuntu-latest
steps:
+ - name: Checkout repo
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
+
- name: Display Aggregated Results as a Table
- uses: PSModule/Github-Script@v1
+ uses: PSModule/GitHub-Script@0097f3bbe3f413f3b577b9bcc600727b0ca3201a # v1.7.10
+ env:
+ ACTIONTEST1SIMPLE_OUTCOME: ${{ needs.ActionTest1Simple.outputs.Outcome }}
+ ACTIONTEST1SIMPLE_CONCLUSION: ${{ needs.ActionTest1Simple.outputs.Conclusion }}
+ ACTIONTEST1SIMPLE_EXECUTED: ${{ needs.ActionTest1Simple.outputs.Executed }}
+ ACTIONTEST1SIMPLE_RESULT: ${{ needs.ActionTest1Simple.outputs.Result }}
+ ACTIONTEST1SIMPLEFILE_OUTCOME: ${{ needs.ActionTest1SimpleFile.outputs.Outcome }}
+ ACTIONTEST1SIMPLEFILE_CONCLUSION: ${{ needs.ActionTest1SimpleFile.outputs.Conclusion }}
+ ACTIONTEST1SIMPLEFILE_EXECUTED: ${{ needs.ActionTest1SimpleFile.outputs.Executed }}
+ ACTIONTEST1SIMPLEFILE_RESULT: ${{ needs.ActionTest1SimpleFile.outputs.Result }}
+ ACTIONTEST1SIMPLEFAILURE_OUTCOME: ${{ needs.ActionTest1SimpleFailure.outputs.Outcome }}
+ ACTIONTEST1SIMPLEFAILURE_CONCLUSION: ${{ needs.ActionTest1SimpleFailure.outputs.Conclusion }}
+ ACTIONTEST1SIMPLEFAILURE_EXECUTED: ${{ needs.ActionTest1SimpleFailure.outputs.Executed }}
+ ACTIONTEST1SIMPLEFAILURE_RESULT: ${{ needs.ActionTest1SimpleFailure.outputs.Result }}
+ ACTIONTEST1SIMPLEFAILUREONLYFAILEDSUMMARY_OUTCOME: ${{ needs.ActionTest1SimpleFailureOnlyFailedSummary.outputs.Outcome }}
+ ACTIONTEST1SIMPLEFAILUREONLYFAILEDSUMMARY_CONCLUSION: ${{ needs.ActionTest1SimpleFailureOnlyFailedSummary.outputs.Conclusion }}
+ ACTIONTEST1SIMPLEFAILUREONLYFAILEDSUMMARY_EXECUTED: ${{ needs.ActionTest1SimpleFailureOnlyFailedSummary.outputs.Executed }}
+ ACTIONTEST1SIMPLEFAILUREONLYFAILEDSUMMARY_RESULT: ${{ needs.ActionTest1SimpleFailureOnlyFailedSummary.outputs.Result }}
+ ACTIONTEST1SIMPLEEXECUTIONFAILURE_OUTCOME: ${{ needs.ActionTest1SimpleExecutionFailure.outputs.Outcome }}
+ ACTIONTEST1SIMPLEEXECUTIONFAILURE_CONCLUSION: ${{ needs.ActionTest1SimpleExecutionFailure.outputs.Conclusion }}
+ ACTIONTEST1SIMPLEEXECUTIONFAILURE_EXECUTED: ${{ needs.ActionTest1SimpleExecutionFailure.outputs.Executed }}
+ ACTIONTEST1SIMPLEEXECUTIONFAILURE_RESULT: ${{ needs.ActionTest1SimpleExecutionFailure.outputs.Result }}
+ ACTIONTEST2STANDARD_OUTCOME: ${{ needs.ActionTest2Standard.outputs.Outcome }}
+ ACTIONTEST2STANDARD_CONCLUSION: ${{ needs.ActionTest2Standard.outputs.Conclusion }}
+ ACTIONTEST2STANDARD_EXECUTED: ${{ needs.ActionTest2Standard.outputs.Executed }}
+ ACTIONTEST2STANDARD_RESULT: ${{ needs.ActionTest2Standard.outputs.Result }}
+ ACTIONTEST2STANDARDPRESCRIPTFILE_OUTCOME: ${{ needs.ActionTest2StandardPrescriptFile.outputs.Outcome }}
+ ACTIONTEST2STANDARDPRESCRIPTFILE_CONCLUSION: ${{ needs.ActionTest2StandardPrescriptFile.outputs.Conclusion }}
+ ACTIONTEST2STANDARDPRESCRIPTFILE_EXECUTED: ${{ needs.ActionTest2StandardPrescriptFile.outputs.Executed }}
+ ACTIONTEST2STANDARDPRESCRIPTFILE_RESULT: ${{ needs.ActionTest2StandardPrescriptFile.outputs.Result }}
+ ACTIONTEST2STANDARDNOSUMMARY_OUTCOME: ${{ needs.ActionTest2StandardNoSummary.outputs.Outcome }}
+ ACTIONTEST2STANDARDNOSUMMARY_CONCLUSION: ${{ needs.ActionTest2StandardNoSummary.outputs.Conclusion }}
+ ACTIONTEST2STANDARDNOSUMMARY_EXECUTED: ${{ needs.ActionTest2StandardNoSummary.outputs.Executed }}
+ ACTIONTEST2STANDARDNOSUMMARY_RESULT: ${{ needs.ActionTest2StandardNoSummary.outputs.Result }}
+ ACTIONTEST3ADVANCED_OUTCOME: ${{ needs.ActionTest3Advanced.outputs.Outcome }}
+ ACTIONTEST3ADVANCED_CONCLUSION: ${{ needs.ActionTest3Advanced.outputs.Conclusion }}
+ ACTIONTEST3ADVANCED_EXECUTED: ${{ needs.ActionTest3Advanced.outputs.Executed }}
+ ACTIONTEST3ADVANCED_RESULT: ${{ needs.ActionTest3Advanced.outputs.Result }}
with:
- Script: |
- 'Markdown' | ForEach-Object {
- $name = $_
- Write-Output "Installing module: $name"
- $retryCount = 5
- $retryDelay = 10
- for ($i = 0; $i -lt $retryCount; $i++) {
- try {
- Install-PSResource -Name $name -WarningAction SilentlyContinue -TrustRepository -Repository PSGallery
- break
- } catch {
- Write-Warning "Installation of $name failed with error: $_"
- if ($i -eq $retryCount - 1) {
- throw
- }
- Write-Warning "Retrying in $retryDelay seconds..."
- Start-Sleep -Seconds $retryDelay
- }
- }
- Import-Module -Name $name
- }
-
- # Build an array of objects for each job
- $ActionTest1SimpleOutcome = '${{ needs.ActionTest1Simple.outputs.Outcome }}'
- $ActionTest1SimpleOutcomeExpected = 'success'
- $ActionTest1SimpleOutcomeResult = $ActionTest1SimpleOutcome -eq $ActionTest1SimpleOutcomeExpected
- $ActionTest1SimpleConclusion = '${{ needs.ActionTest1Simple.outputs.Conclusion }}'
- $ActionTest1SimpleConclusionExpected = 'success'
- $ActionTest1SimpleConclusionResult = $ActionTest1SimpleConclusion -eq $ActionTest1SimpleConclusionExpected
- $ActionTest1SimpleExecuted = '${{ needs.ActionTest1Simple.outputs.Executed }}'
- $ActionTest1SimpleExecutedExpected = 'True'
- $ActionTest1SimpleExecutedResult = $ActionTest1SimpleExecuted -eq $ActionTest1SimpleExecutedExpected
- $ActionTest1SimpleResult = '${{ needs.ActionTest1Simple.outputs.Result }}'
- $ActionTest1SimpleResultExpected = 'Passed'
- $ActionTest1SimpleResultResult = $ActionTest1SimpleResult -eq $ActionTest1SimpleResultExpected
-
- $ActionTest1SimpleFileOutcome = '${{ needs.ActionTest1SimpleFile.outputs.Outcome }}'
- $ActionTest1SimpleFileOutcomeExpected = 'success'
- $ActionTest1SimpleFileOutcomeResult = $ActionTest1SimpleFileOutcome -eq $ActionTest1SimpleFileOutcomeExpected
- $ActionTest1SimpleFileConclusion = '${{ needs.ActionTest1SimpleFile.outputs.Conclusion }}'
- $ActionTest1SimpleFileConclusionExpected = 'success'
- $ActionTest1SimpleFileConclusionResult = $ActionTest1SimpleFileConclusion -eq $ActionTest1SimpleFileConclusionExpected
- $ActionTest1SimpleFileExecuted = '${{ needs.ActionTest1SimpleFile.outputs.Executed }}'
- $ActionTest1SimpleFileExecutedExpected = 'True'
- $ActionTest1SimpleFileExecutedResult = $ActionTest1SimpleFileExecuted -eq $ActionTest1SimpleFileExecutedExpected
- $ActionTest1SimpleFileResult = '${{ needs.ActionTest1SimpleFile.outputs.Result }}'
- $ActionTest1SimpleFileResultExpected = 'Passed'
- $ActionTest1SimpleFileResultResult = $ActionTest1SimpleFileResult -eq $ActionTest1SimpleFileResultExpected
-
- $ActionTest1SimpleFailureOutcome = '${{ needs.ActionTest1SimpleFailure.outputs.Outcome }}'
- $ActionTest1SimpleFailureOutcomeExpected = 'failure'
- $ActionTest1SimpleFailureOutcomeResult = $ActionTest1SimpleFailureOutcome -eq $ActionTest1SimpleFailureOutcomeExpected
- $ActionTest1SimpleFailureConclusion = '${{ needs.ActionTest1SimpleFailure.outputs.Conclusion }}'
- $ActionTest1SimpleFailureConclusionExpected = 'success'
- $ActionTest1SimpleFailureConclusionResult = $ActionTest1SimpleFailureConclusion -eq $ActionTest1SimpleFailureConclusionExpected
- $ActionTest1SimpleFailureExecuted = '${{ needs.ActionTest1SimpleFailure.outputs.Executed }}'
- $ActionTest1SimpleFailureExecutedExpected = 'True'
- $ActionTest1SimpleFailureExecutedResult = $ActionTest1SimpleFailureExecuted -eq $ActionTest1SimpleFailureExecutedExpected
- $ActionTest1SimpleFailureResult = '${{ needs.ActionTest1SimpleFailure.outputs.Result }}'
- $ActionTest1SimpleFailureResultExpected = 'Failed'
- $ActionTest1SimpleFailureResultResult = $ActionTest1SimpleFailureResult -eq $ActionTest1SimpleFailureResultExpected
-
- $ActionTest1SimpleFailureOnlyFailedSummaryOutcome = '${{ needs.ActionTest1SimpleFailureOnlyFailedSummary.outputs.Outcome }}'
- $ActionTest1SimpleFailureOnlyFailedSummaryOutcomeExpected = 'failure'
- $ActionTest1SimpleFailureOnlyFailedSummaryOutcomeResult = $ActionTest1SimpleFailureOnlyFailedSummaryOutcome -eq $ActionTest1SimpleFailureOnlyFailedSummaryOutcomeExpected
- $ActionTest1SimpleFailureOnlyFailedSummaryConclusion = '${{ needs.ActionTest1SimpleFailureOnlyFailedSummary.outputs.Conclusion }}'
- $ActionTest1SimpleFailureOnlyFailedSummaryonclusionExpected = 'success'
- $ActionTest1SimpleFailureOnlyFailedSummaryonclusionResult = $ActionTest1SimpleFailureOnlyFailedSummaryConclusion -eq $ActionTest1SimpleFailureOnlyFailedSummaryonclusionExpected
- $ActionTest1SimpleFailureOnlyFailedSummaryExecuted = '${{ needs.ActionTest1SimpleFailureOnlyFailedSummary.outputs.Executed }}'
- $ActionTest1SimpleFailureOnlyFailedSummaryExecutedExpected = 'True'
- $ActionTest1SimpleFailureOnlyFailedSummaryExecutedResult = $ActionTest1SimpleFailureOnlyFailedSummaryExecuted -eq $ActionTest1SimpleFailureOnlyFailedSummaryExecutedExpected
- $ActionTest1SimpleFailureOnlyFailedSummaryResult = '${{ needs.ActionTest1SimpleFailureOnlyFailedSummary.outputs.Result }}'
- $ActionTest1SimpleFailureOnlyFailedSummaryResultExpected = 'Failed'
- $ActionTest1SimpleFailureOnlyFailedSummaryResultResult = $ActionTest1SimpleFailureOnlyFailedSummaryResult -eq $ActionTest1SimpleFailureOnlyFailedSummaryResultExpected
-
- $ActionTest1SimpleExecutionFailureOutcome = '${{ needs.ActionTest1SimpleExecutionFailure.outputs.Outcome }}'
- $ActionTest1SimpleExecutionFailureOutcomeExpected = 'failure'
- $ActionTest1SimpleExecutionFailureOutcomeResult = $ActionTest1SimpleExecutionFailureOutcome -eq $ActionTest1SimpleExecutionFailureOutcomeExpected
- $ActionTest1SimpleExecutionFailureConclusion = '${{ needs.ActionTest1SimpleExecutionFailure.outputs.Conclusion }}'
- $ActionTest1SimpleExecutionFailureConclusionExpected = 'success'
- $ActionTest1SimpleExecutionFailureConclusionResult = $ActionTest1SimpleExecutionFailureConclusion -eq $ActionTest1SimpleExecutionFailureConclusionExpected
- $ActionTest1SimpleExecutionFailureExecuted = '${{ needs.ActionTest1SimpleExecutionFailure.outputs.Executed }}'
- $ActionTest1SimpleExecutionFailureExecutedExpected = 'False'
- $ActionTest1SimpleExecutionFailureExecutedResult = $ActionTest1SimpleExecutionFailureExecuted -eq $ActionTest1SimpleExecutionFailureExecutedExpected
- $ActionTest1SimpleExecutionFailureResult = '${{ needs.ActionTest1SimpleExecutionFailure.outputs.Result }}'
- $ActionTest1SimpleExecutionFailureResultExpected = ''
- $ActionTest1SimpleExecutionFailureResultResult = $ActionTest1SimpleExecutionFailureResult -eq $ActionTest1SimpleExecutionFailureResultExpected
-
- $ActionTest2StandardOutcome = '${{ needs.ActionTest2Standard.outputs.Outcome }}'
- $ActionTest2StandardOutcomeExpected = 'success'
- $ActionTest2StandardOutcomeResult = $ActionTest2StandardOutcome -eq $ActionTest2StandardOutcomeExpected
- $ActionTest2StandardConclusion = '${{ needs.ActionTest2Standard.outputs.Conclusion }}'
- $ActionTest2StandardConclusionExpected = 'success'
- $ActionTest2StandardConclusionResult = $ActionTest2StandardConclusion -eq $ActionTest2StandardConclusionExpected
- $ActionTest2StandardExecuted = '${{ needs.ActionTest2Standard.outputs.Executed }}'
- $ActionTest2StandardExecutedExpected = 'True'
- $ActionTest2StandardExecutedResult = $ActionTest2StandardExecuted -eq $ActionTest2StandardExecutedExpected
- $ActionTest2StandardResult = '${{ needs.ActionTest2Standard.outputs.Result }}'
- $ActionTest2StandardResultExpected = 'Passed'
- $ActionTest2StandardResultResult = $ActionTest2StandardResult -eq $ActionTest2StandardResultExpected
-
- $ActionTest2StandardNoSummaryOutcome = '${{ needs.ActionTest2StandardNoSummary.outputs.Outcome }}'
- $ActionTest2StandardNoSummaryOutcomeExpected = 'success'
- $ActionTest2StandardNoSummaryOutcomeResult = $ActionTest2StandardNoSummaryOutcome -eq $ActionTest2StandardNoSummaryOutcomeExpected
- $ActionTest2StandardNoSummaryConclusion = '${{ needs.ActionTest2StandardNoSummary.outputs.Conclusion }}'
- $ActionTest2StandardNoSummaryConclusionExpected = 'success'
- $ActionTest2StandardNoSummaryConclusionResult = $ActionTest2StandardNoSummaryConclusion -eq $ActionTest2StandardNoSummaryConclusionExpected
- $ActionTest2StandardNoSummaryExecuted = '${{ needs.ActionTest2StandardNoSummary.outputs.Executed }}'
- $ActionTest2StandardNoSummaryExecutedExpected = 'True'
- $ActionTest2StandardNoSummaryExecutedResult = $ActionTest2StandardNoSummaryExecuted -eq $ActionTest2StandardNoSummaryExecutedExpected
- $ActionTest2StandardNoSummaryResult = '${{ needs.ActionTest2StandardNoSummary.outputs.Result }}'
- $ActionTest2StandardNoSummaryResultExpected = 'Passed'
- $ActionTest2StandardNoSummaryResultResult = $ActionTest2StandardNoSummaryResult -eq $ActionTest2StandardNoSummaryResultExpected
-
- $ActionTest3AdvancedOutcome = '${{ needs.ActionTest3Advanced.outputs.Outcome }}'
- $ActionTest3AdvancedOutcomeExpected = 'success'
- $ActionTest3AdvancedOutcomeResult = $ActionTest3AdvancedOutcome -eq $ActionTest3AdvancedOutcomeExpected
- $ActionTest3AdvancedConclusion = '${{ needs.ActionTest3Advanced.outputs.Conclusion }}'
- $ActionTest3AdvancedConclusionExpected = 'success'
- $ActionTest3AdvancedConclusionResult = $ActionTest3AdvancedConclusion -eq $ActionTest3AdvancedConclusionExpected
- $ActionTest3AdvancedExecuted = '${{ needs.ActionTest3Advanced.outputs.Executed }}'
- $ActionTest3AdvancedExecutedExpected = 'True'
- $ActionTest3AdvancedExecutedResult = $ActionTest3AdvancedExecuted -eq $ActionTest3AdvancedExecutedExpected
- $ActionTest3AdvancedResult = '${{ needs.ActionTest3Advanced.outputs.Result }}'
- $ActionTest3AdvancedResultExpected = 'Passed'
- $ActionTest3AdvancedResultResult = $ActionTest3AdvancedResult -eq $ActionTest3AdvancedResultExpected
-
- $jobs = @(
- [PSCustomObject]@{
- Name = "Action-Test - [1-Simple]"
- Outcome = $ActionTest1SimpleOutcome
- OutcomeExpected = $ActionTest1SimpleOutcomeExpected
- OutcomeResult = $ActionTest1SimpleOutcomeResult
- Conclusion = $ActionTest1SimpleConclusion
- ConclusionExpected = $ActionTest1SimpleConclusionExpected
- ConclusionResult = $ActionTest1SimpleConclusionResult
- Executed = $ActionTest1SimpleExecuted
- ExecutedExpected = $ActionTest1SimpleExecutedExpected
- ExecutedResult = $ActionTest1SimpleExecutedResult
- Result = $ActionTest1SimpleResult
- ResultExpected = $ActionTest1SimpleResultExpected
- ResultResult = $ActionTest1SimpleResultResult
- },
- [PSCustomObject]@{
- Name = "Action-Test - [1-Simple-File]"
- Outcome = $ActionTest1SimpleFileOutcome
- OutcomeExpected = $ActionTest1SimpleFileOutcomeExpected
- OutcomeResult = $ActionTest1SimpleFileOutcomeResult
- Conclusion = $ActionTest1SimpleFileConclusion
- ConclusionExpected = $ActionTest1SimpleFileConclusionExpected
- ConclusionResult = $ActionTest1SimpleFileConclusionResult
- Executed = $ActionTest1SimpleFileExecuted
- ExecutedExpected = $ActionTest1SimpleFileExecutedExpected
- ExecutedResult = $ActionTest1SimpleFileExecutedResult
- Result = $ActionTest1SimpleFileResult
- ResultExpected = $ActionTest1SimpleFileResultExpected
- ResultResult = $ActionTest1SimpleFileResultResult
- },
- [PSCustomObject]@{
- Name = "Action-Test - [1-Simple-Failure]"
- Outcome = $ActionTest1SimpleFailureOutcome
- OutcomeExpected = $ActionTest1SimpleFailureOutcomeExpected
- OutcomeResult = $ActionTest1SimpleFailureOutcomeResult
- Conclusion = $ActionTest1SimpleFailureConclusion
- ConclusionExpected = $ActionTest1SimpleFailureConclusionExpected
- ConclusionResult = $ActionTest1SimpleFailureConclusionResult
- Executed = $ActionTest1SimpleFailureExecuted
- ExecutedExpected = $ActionTest1SimpleFailureExecutedExpected
- ExecutedResult = $ActionTest1SimpleFailureExecutedResult
- Result = $ActionTest1SimpleFailureResult
- ResultExpected = $ActionTest1SimpleFailureResultExpected
- ResultResult = $ActionTest1SimpleFailureResultResult
- },
- [PSCustomObject]@{
- Name = "Action-Test - [1-Simple-Failure-OnlyFailedSummary]"
- Outcome = $ActionTest1SimpleFailureOnlyFailedSummaryOutcome
- OutcomeExpected = $ActionTest1SimpleFailureOnlyFailedSummaryOutcomeExpected
- OutcomeResult = $ActionTest1SimpleFailureOnlyFailedSummaryOutcomeResult
- Conclusion = $ActionTest1SimpleFailureOnlyFailedSummaryConclusion
- ConclusionExpected = $ActionTest1SimpleFailureOnlyFailedSummaryonclusionExpected
- ConclusionResult = $ActionTest1SimpleFailureOnlyFailedSummaryonclusionResult
- Executed = $ActionTest1SimpleFailureOnlyFailedSummaryExecuted
- ExecutedExpected = $ActionTest1SimpleFailureOnlyFailedSummaryExecutedExpected
- ExecutedResult = $ActionTest1SimpleFailureOnlyFailedSummaryExecutedResult
- Result = $ActionTest1SimpleFailureOnlyFailedSummaryResult
- ResultExpected = $ActionTest1SimpleFailureOnlyFailedSummaryResultExpected
- ResultResult = $ActionTest1SimpleFailureOnlyFailedSummaryResultResult
- },
- [PSCustomObject]@{
- Name = "Action-Test - [1-Simple-ExecutionFailure]"
- Outcome = $ActionTest1SimpleExecutionFailureOutcome
- OutcomeExpected = $ActionTest1SimpleExecutionFailureOutcomeExpected
- OutcomeResult = $ActionTest1SimpleExecutionFailureOutcomeResult
- Conclusion = $ActionTest1SimpleExecutionFailureConclusion
- ConclusionExpected = $ActionTest1SimpleExecutionFailureConclusionExpected
- ConclusionResult = $ActionTest1SimpleExecutionFailureConclusionResult
- Executed = $ActionTest1SimpleExecutionFailureExecuted
- ExecutedExpected = $ActionTest1SimpleExecutionFailureExecutedExpected
- ExecutedResult = $ActionTest1SimpleExecutionFailureExecutedResult
- Result = $ActionTest1SimpleExecutionFailureResult
- ResultExpected = $ActionTest1SimpleExecutionFailureResultExpected
- ResultResult = $ActionTest1SimpleExecutionFailureResultResult
- },
- [PSCustomObject]@{
- Name = "Action-Test - [2-Standard]"
- Outcome = $ActionTest2StandardOutcome
- OutcomeExpected = $ActionTest2StandardOutcomeExpected
- OutcomeResult = $ActionTest2StandardOutcomeResult
- Conclusion = $ActionTest2StandardConclusion
- ConclusionExpected = $ActionTest2StandardConclusionExpected
- ConclusionResult = $ActionTest2StandardConclusionResult
- Executed = $ActionTest2StandardExecuted
- ExecutedExpected = $ActionTest2StandardExecutedExpected
- ExecutedResult = $ActionTest2StandardExecutedResult
- Result = $ActionTest2StandardResult
- ResultExpected = $ActionTest2StandardResultExpected
- ResultResult = $ActionTest2StandardResultResult
- },
- [PSCustomObject]@{
- Name = "Action-Test - [2-Standard-NoSummary]"
- Outcome = $ActionTest2StandardNoSummaryOutcome
- OutcomeExpected = $ActionTest2StandardNoSummaryOutcomeExpected
- OutcomeResult = $ActionTest2StandardNoSummaryOutcomeResult
- Conclusion = $ActionTest2StandardNoSummaryConclusion
- ConclusionExpected = $ActionTest2StandardNoSummaryConclusionExpected
- ConclusionResult = $ActionTest2StandardNoSummaryConclusionResult
- Executed = $ActionTest2StandardNoSummaryExecuted
- ExecutedExpected = $ActionTest2StandardNoSummaryExecutedExpected
- ExecutedResult = $ActionTest2StandardNoSummaryExecutedResult
- Result = $ActionTest2StandardNoSummaryResult
- ResultExpected = $ActionTest2StandardNoSummaryResultExpected
- ResultResult = $ActionTest2StandardNoSummaryResultResult
- },
- [PSCustomObject]@{
- Name = "Action-Test - [3-Advanced]"
- Outcome = $ActionTest3AdvancedOutcome
- OutcomeExpected = $ActionTest3AdvancedOutcomeExpected
- OutcomeResult = $ActionTest3AdvancedOutcomeResult
- Conclusion = $ActionTest3AdvancedConclusion
- ConclusionExpected = $ActionTest3AdvancedConclusionExpected
- ConclusionResult = $ActionTest3AdvancedConclusionResult
- Executed = $ActionTest3AdvancedExecuted
- ExecutedExpected = $ActionTest3AdvancedExecutedExpected
- ExecutedResult = $ActionTest3AdvancedExecutedResult
- Result = $ActionTest3AdvancedResult
- ResultExpected = $ActionTest3AdvancedResultExpected
- ResultResult = $ActionTest3AdvancedResultResult
- }
- )
-
- # Display the table in the workflow logs
- $jobs | Format-List | Out-String
-
- $passed = $true
- $jobs | ForEach-Object {
- if (-not $_.OutcomeResult) {
- Write-Error "Job $($_.Name) failed with Outcome $($_.Outcome) and Expected Outcome $($_.OutcomeExpected)"
- $passed = $false
- }
-
- if (-not $_.ConclusionResult) {
- Write-Error "Job $($_.Name) failed with Conclusion $($_.Conclusion) and Expected Conclusion $($_.ConclusionExpected)"
- $passed = $false
- }
-
- if (-not $_.ExecutedResult) {
- Write-Error "Job $($_.Name) not executed as expected. (Actual: $($_.Executed), Expected: $($_.ExecutedExpected))"
- $passed = $false
- }
-
- if (-not $_.ResultResult) {
- Write-Error "Job $($_.Name) tests did not pass as expected. (Actual: $($_.Result), Expected: $($_.ResultExpected))"
- $passed = $false
- }
- }
-
- $icon = if ($passed) { '✅' } else { '❌' }
- $status = Heading 1 "$icon - GitHub Actions Status" {
- Table {
- $jobs
- }
- }
-
- Set-GitHubStepSummary -Summary $status
-
- if (-not $passed) {
- Write-GithubError "One or more jobs failed"
- exit 1
- }
+ Script: tests/Test-ActionResults.ps1
diff --git a/.github/workflows/Auto-Release.yml b/.github/workflows/Auto-Release.yml
deleted file mode 100644
index b0835525..00000000
--- a/.github/workflows/Auto-Release.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: Auto-Release
-
-run-name: "Auto-Release - [${{ github.event.pull_request.title }} #${{ github.event.pull_request.number }}] by @${{ github.actor }}"
-
-on:
- pull_request_target:
- branches:
- - main
- types:
- - closed
- - opened
- - reopened
- - synchronize
- - labeled
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
-
-permissions:
- contents: write # Required to create releases
- pull-requests: write # Required to create comments on the PRs
-
-jobs:
- Auto-Release:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout Code
- uses: actions/checkout@v6
-
- - name: Auto-Release
- uses: PSModule/Auto-Release@v1
diff --git a/.github/workflows/Linter.yml b/.github/workflows/Linter.yml
index 19626293..3a07190e 100644
--- a/.github/workflows/Linter.yml
+++ b/.github/workflows/Linter.yml
@@ -19,14 +19,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
+ persist-credentials: false
- name: Lint code base
- uses: super-linter/super-linter@latest
+ uses: super-linter/super-linter@d5b0a2ab116623730dd094f15ddc1b6b25bf7b99 # v8.3.2
env:
GITHUB_TOKEN: ${{ github.token }}
+ VALIDATE_BIOME_FORMAT: false
+ VALIDATE_JSCPD: false
VALIDATE_JSON_PRETTIER: false
VALIDATE_MARKDOWN_PRETTIER: false
VALIDATE_YAML_PRETTIER: false
diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml
new file mode 100644
index 00000000..9d2a6319
--- /dev/null
+++ b/.github/workflows/Release.yml
@@ -0,0 +1,37 @@
+name: Release
+
+run-name: "Release - [${{ github.event.pull_request.title }} #${{ github.event.pull_request.number }}] by @${{ github.actor }}"
+
+on:
+ pull_request:
+ branches:
+ - main
+ types:
+ - closed
+ - opened
+ - reopened
+ - synchronize
+ - labeled
+ paths:
+ - 'action.yml'
+ - 'src/**'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: write # Required to create releases
+ pull-requests: write # Required to create comments on the PRs
+
+jobs:
+ Release:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
+
+ - name: Release
+ uses: PSModule/Release-GHRepository@88c70461c8f16cc09682005bcf3b7fca4dd8dc1a # v2.0.1
diff --git a/README.md b/README.md
index 3b378028..58f55623 100644
--- a/README.md
+++ b/README.md
@@ -259,81 +259,81 @@ jobs:
*All inputs are optional unless noted otherwise. For more details, refer to the [Pester Configuration documentation](https://pester.dev/docs/usage/configuration).*
`Run.PassThru` is forced to `$true` to ensure the action can capture test results.
-| **Input** | **Description** | **Default** |
-|--------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|-------------|
-| `Path` | Path to where tests are located or a configuration file. | *(none)* |
-| `ReportAsJson` | Output generated reports in JSON format in addition to the configured format through Pester. | `true` |
-| `Prescript` | Script to be executed before the test run. This script is executed in the same context as the test run. | *(none)* |
-| `Notice_Mode` | Controls when to show notices for test completion. Allows "Full" (show on success and failure), "Failed" (show only on failure), or "None" (disable notices). | `Failed` |
-| `StepSummary_Mode` | Controls which tests to show in the GitHub step summary. Allows "Full" (all tests), "Failed" (only failed tests), or "None" (disable step summary). | `Failed` |
-| `StepSummary_ShowTestOverview` | Controls whether to show the test overview table in the GitHub step summary. | `false` |
-| `StepSummary_ShowConfiguration` | Controls whether to show the configuration details in the GitHub step summary. | `false` |
-| `Run_Path` | Directories/files to be searched for tests. | *(none)* |
-| `Run_ExcludePath` | Directories/files to exclude from the run. | *(none)* |
-| `Run_ScriptBlock` | ScriptBlocks containing tests to be executed. | *(none)* |
-| `Run_Container` | ContainerInfo objects containing tests to be executed. | *(none)* |
-| `Run_TestExtension` | Filter used to identify test files (e.g. `.Tests.ps1`). | *(none)* |
-| `Run_Exit` | Whether to exit with a non-zero exit code on failure. | *(none)* |
-| `Run_Throw` | Whether to throw an exception on test failure. | *(none)* |
-| `Run_SkipRun` | Discovery only, skip actual test run. | *(none)* |
-| `Run_SkipRemainingOnFailure` | Skips remaining tests after the first failure. Options: `None`, `Run`, `Container`, `Block`. | *(none)* |
-| `Filter_Tag` | Tags of Describe/Context/It blocks to run. | *(none)* |
-| `Filter_ExcludeTag` | Tags of Describe/Context/It blocks to exclude. | *(none)* |
-| `Filter_Line` | Filter by file + scriptblock start line (e.g. `C:\tests\file1.Tests.ps1:37`). | *(none)* |
-| `Filter_ExcludeLine` | Exclude by file + scriptblock start line. Precedence over `Filter_Line`. | *(none)* |
-| `Filter_FullName` | Full name of a test with wildcards, joined by dot. E.g. `*.describe Get-Item.test1` | *(none)* |
-| `CodeCoverage_Enabled` | Enable code coverage. | *(none)* |
-| `CodeCoverage_OutputFormat` | Format for the coverage report. Possible values: `JaCoCo`, `CoverageGutters`, `Cobertura`. | *(none)* |
-| `CodeCoverage_OutputPath` | Where to save the code coverage report (relative to the current dir). | *(none)* |
-| `CodeCoverage_OutputEncoding` | Encoding of the coverage file. | *(none)* |
-| `CodeCoverage_Path` | Files/directories to measure coverage on (by default, reuses `Path` from the general settings). | *(none)* |
-| `CodeCoverage_ExcludeTests` | Exclude tests themselves from coverage. | *(none)* |
-| `CodeCoverage_RecursePaths` | Recurse through coverage directories. | *(none)* |
-| `CodeCoverage_CoveragePercentTarget` | Desired minimum coverage percentage. | *(none)* |
-| `CodeCoverage_UseBreakpoints` | **Experimental**: When `false`, use a Profiler-based tracer instead of breakpoints. | *(none)* |
-| `CodeCoverage_SingleHitBreakpoints` | Remove breakpoints after first hit. | *(none)* |
-| `TestResult_Enabled` | Enable test-result output (e.g. NUnitXml, JUnitXml). | *(none)* |
-| `TestResult_OutputFormat` | Possible values: `NUnitXml`, `NUnit2.5`, `NUnit3`, `JUnitXml`. | *(none)* |
-| `TestResult_OutputPath` | Where to save the test-result report (relative path). | *(none)* |
-| `TestResult_OutputEncoding` | Encoding of the test-result file. | *(none)* |
-| `TestResult_TestSuiteName` | Name used for the root `test-suite` element in the result file. | *(none)* |
-| `Should_ErrorAction` | Controls if `Should` throws on error. Use `Stop` to throw, or `Continue` to fail at the end. | *(none)* |
-| `Debug_ShowFullErrors` | Show Pester internal stack on errors. (Deprecated – overrides `Output.StackTraceVerbosity` to `Full`). | *(none)* |
-| `Debug_WriteDebugMessages` | Write debug messages to screen. | *(none)* |
-| `Debug_WriteDebugMessagesFrom` | Filter debug messages by source. Wildcards allowed. | *(none)* |
-| `Debug_ShowNavigationMarkers` | Write paths after every block/test for easy navigation in Visual Studio Code. | *(none)* |
-| `Debug_ReturnRawResultObject` | Returns an unfiltered result object, for development only. | *(none)* |
-| `Output_Verbosity` | Verbosity: `None`, `Normal`, `Detailed`, `Diagnostic`. | *(none)* |
-| `Output_StackTraceVerbosity` | Stacktrace detail: `None`, `FirstLine`, `Filtered`, `Full`. | *(none)* |
-| `Output_CIFormat` | CI format of error output: `None`, `Auto`, `AzureDevops`, `GithubActions`. | *(none)* |
-| `Output_CILogLevel` | CI log level: `Error` or `Warning`. | *(none)* |
-| `Output_RenderMode` | How to render console output: `Auto`, `Ansi`, `ConsoleColor`, `Plaintext`. | *(none)* |
-| `TestDrive_Enabled` | Enable `TestDrive`. | *(none)* |
-| `TestRegistry_Enabled` | Enable `TestRegistry`. | *(none)* |
-| `Debug` | Enable debug output. | `false` |
-| `Verbose` | Enable verbose output. | `false` |
-| `Version` | Specifies the exact version of the GitHub module to install. | *(none)* |
-| `Prerelease` | Allow prerelease versions if available. | `false` |
-| `WorkingDirectory` | The working directory where the script runs. | `.` |
+| **Input** | **Description** | **Default** |
+|--------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|
+| `Path` | Path to where tests are located or a configuration file. | *(none)* |
+| `ReportAsJson` | Output generated reports in JSON format in addition to the configured format through Pester. | `true` |
+| `Prescript` | Script to be executed before the test run. This script is executed in the same context as the test run. | *(none)* |
+| `Notice_Mode` | Controls when to show notices for test completion.