Skip to content
This repository was archived by the owner on Jul 16, 2026. It is now read-only.

Commit a1a469e

Browse files
Resolve to the current version on non-PR events instead of throwing
1 parent 8d1dac7 commit a1a469e

3 files changed

Lines changed: 64 additions & 2 deletions

File tree

scripts/Resolve-PSModuleVersion.Helpers.psm1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,9 @@ function Get-GitHubPullRequest {
149149

150150
$pr = $githubEvent.pull_request
151151
if (-not $pr) {
152-
throw 'GitHub event does not contain pull_request data. This action must be run from a pull_request event.'
152+
Write-Host 'GitHub event does not contain pull_request data (non-PR event, e.g. workflow_dispatch or schedule).'
153+
Write-Host 'No pull request context is available; the caller keeps the current version without a bump.'
154+
return $null
153155
}
154156

155157
$labels = @()

scripts/main.ps1

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,24 @@ Import-Module -Name "$PSScriptRoot/Resolve-PSModuleVersion.Helpers.psm1" -Force
99
$actionInput = Read-ActionInput
1010
$config = Get-PublishConfiguration -SettingsJson $actionInput.SettingsJson
1111
$pullRequest = Get-GitHubPullRequest
12-
$decision = Resolve-ReleaseDecision -Configuration $config -PullRequest $pullRequest
12+
13+
$decision = if ($null -eq $pullRequest) {
14+
# Non-PR event (for example workflow_dispatch or schedule): there are no pull request
15+
# labels to determine a version bump, so keep the current published version and publish
16+
# nothing. For a module that has never been released this floors at 0.0.0.
17+
[PSCustomObject]@{
18+
ShouldPublish = $false
19+
CreateRelease = $false
20+
CreatePrerelease = $false
21+
MajorRelease = $false
22+
MinorRelease = $false
23+
PatchRelease = $false
24+
HasVersionBump = $false
25+
PrereleaseName = ''
26+
}
27+
} else {
28+
Resolve-ReleaseDecision -Configuration $config -PullRequest $pullRequest
29+
}
1330

1431
$releases = Get-GitHubRelease
1532
$ghVersion = Get-LatestGitHubVersion -Releases $releases

tests/Resolve-PSModuleVersion.Helpers.Tests.ps1

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,3 +188,46 @@ Describe 'End-to-end: Resolve-ReleaseDecision + Get-NextModuleVersion' {
188188
}
189189
}
190190
}
191+
192+
Describe 'Non-PR event keeps the current version' {
193+
# main.ps1 builds this decision when the event has no pull_request (for example
194+
# workflow_dispatch or schedule): no bump, no prerelease, no publish. Get-NextModuleVersion
195+
# must then return the current published version unchanged, floored at 0.0.0 when nothing
196+
# has ever been released.
197+
BeforeAll {
198+
Mock -CommandName Find-PSResource -ModuleName 'Resolve-PSModuleVersion.Helpers' -MockWith { @() }
199+
$emptyReleases = @([PSCustomObject]@{ tagName = 'v0.0.0'; isLatest = $false; isPrerelease = $false })
200+
$config = [PSCustomObject]@{
201+
AutoPatching = $false
202+
IncrementalPrerelease = $true
203+
DatePrereleaseFormat = ''
204+
VersionPrefix = 'v'
205+
ReleaseType = 'None'
206+
IgnoreLabels = @()
207+
MajorLabels = @('major')
208+
MinorLabels = @('minor')
209+
PatchLabels = @('patch')
210+
}
211+
$noReleaseDecision = [PSCustomObject]@{
212+
ShouldPublish = $false
213+
CreateRelease = $false
214+
CreatePrerelease = $false
215+
MajorRelease = $false
216+
MinorRelease = $false
217+
PatchRelease = $false
218+
HasVersionBump = $false
219+
PrereleaseName = ''
220+
}
221+
}
222+
223+
It 'keeps the current version <LatestVersion> with no bump and no prerelease' -ForEach @(
224+
@{ LatestVersion = '1.2.3' }
225+
@{ LatestVersion = '0.0.0' }
226+
) {
227+
$latestVer = New-PSSemVer -Version $LatestVersion
228+
$result = Get-NextModuleVersion -LatestVersion $latestVer -Decision $noReleaseDecision `
229+
-Configuration $config -ModuleName 'TestModule' -Releases $emptyReleases
230+
"$($result.Major).$($result.Minor).$($result.Patch)" | Should -Be $LatestVersion
231+
$result.Prerelease | Should -BeNullOrEmpty
232+
}
233+
}

0 commit comments

Comments
 (0)