Skip to content

Commit 2c0baf8

Browse files
committed
Fix #93: only set PreRelease if -Semver or -Prerelease are passed
1 parent 629f5d0 commit 2c0baf8

File tree

2 files changed

+73
-1
lines changed

2 files changed

+73
-1
lines changed

Source/Public/Build-Module.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ function Build-Module {
235235
if ($Prerelease) {
236236
Write-Verbose "Update Manifest at $OutputManifest with Prerelease: $Prerelease"
237237
Update-Metadata -Path $OutputManifest -PropertyName PrivateData.PSData.Prerelease -Value $Prerelease
238-
} else {
238+
} elseif ($PSCmdlet.ParameterSetName -eq "SemanticVersion" -or $PSBoundParameters.ContainsKey("Prerelease")) {
239239
Update-Metadata -Path $OutputManifest -PropertyName PrivateData.PSData.Prerelease -Value ""
240240
}
241241
} elseif($Prerelease) {

Tests/Public/Build-Module.Tests.ps1

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,78 @@ Describe "Build-Module" {
458458
Pop-Location -StackName BuildModuleTest
459459
}
460460

461+
Context "Setting the version with no pre-release" {
462+
# $SemVer = "1.0.0-beta03+sha.22c35ffff166f34addc49a3b80e622b543199cc5.Date.2018-10-11"
463+
$SemVer = @{
464+
Version = "1.0.0"
465+
BuildMetadata = "Sha.22c35ffff166f34addc49a3b80e622b543199cc5.Date.2018-10-11"
466+
}
467+
$global:ExpectedVersion = "1.0.0"
468+
Push-Location TestDrive:\ -StackName BuildModuleTest
469+
New-Item -ItemType Directory -Path TestDrive:\MyModule\ -Force
470+
New-Item -ItemType Directory -Path "TestDrive:\$ExpectedVersion\" -Force
471+
472+
Mock SetModuleContent -ModuleName ModuleBuilder {}
473+
Mock Update-Metadata -ModuleName ModuleBuilder {}
474+
475+
Mock InitializeBuild -ModuleName ModuleBuilder {
476+
# These are actually all the values that we need
477+
[PSCustomObject]@{
478+
OutputDirectory = "TestDrive:\$Version"
479+
Name = "MyModule"
480+
ModuleBase = "TestDrive:\MyModule\"
481+
CopyPaths = @()
482+
Encoding = "UTF8"
483+
PublicFilter = "Public\*.ps1"
484+
}
485+
}
486+
487+
Mock New-Item { [IO.FileInfo](Join-Path (Convert-Path "TestDrive:\") $ExpectedVersion) } -Parameter {
488+
$Path -eq "TestDrive:\$ExpectedVersion" -and
489+
$ItemType -eq "Directory" -and
490+
$Force -eq $true
491+
} -ModuleName ModuleBuilder
492+
493+
Mock Test-Path { $True } -Parameter { $Path -eq "TestDrive:\$ExpectedVersion" } -ModuleName ModuleBuilder
494+
Mock Remove-Item {} -Parameter { $Path.StartsWith((Convert-Path "TestDrive:\$ExpectedVersion")) } -ModuleName ModuleBuilder
495+
Mock Set-Location {} -ModuleName ModuleBuilder
496+
Mock Copy-Item {} -ModuleName ModuleBuilder
497+
# Release notes
498+
Mock Get-Metadata { "First Release" } -ModuleName ModuleBuilder
499+
Mock Join-Path {
500+
[IO.Path]::Combine($Path, $ChildPath)
501+
} -ModuleName ModuleBuilder
502+
503+
Mock Get-ChildItem {
504+
[IO.FileInfo]$(Join-Path $(Convert-Path "TestDrive:\") "MyModule\Public\Get-MyInfo.ps1")
505+
} -ModuleName ModuleBuilder
506+
507+
try {
508+
Build-Module @SemVer
509+
} catch {
510+
Pop-Location -StackName BuildModuleTest
511+
throw
512+
}
513+
514+
It "Should build to an output folder with the simple version." {
515+
Assert-MockCalled Remove-Item -ModuleName ModuleBuilder
516+
Assert-MockCalled New-Item -ModuleName ModuleBuilder
517+
}
518+
519+
It "Should update the module version to the simple version." {
520+
Assert-MockCalled Update-Metadata -ModuleName ModuleBuilder -ParameterFilter {
521+
$PropertyName -eq "ModuleVersion" -and $Value -eq $ExpectedVersion
522+
}
523+
}
524+
It "Should not change the module pre-release value" {
525+
Assert-MockCalled Update-Metadata -Times 0 -ModuleName ModuleBuilder -ParameterFilter {
526+
$PropertyName -eq "PrivateData.PSData.Prerelease"
527+
}
528+
}
529+
530+
Pop-Location -StackName BuildModuleTest
531+
}
532+
461533
Context "Bug #70 Cannot build 1.2.3-pre-release" {
462534
BeforeEach {
463535
Push-Location TestDrive:\ -StackName BuildModuleTest

0 commit comments

Comments
 (0)