Skip to content

Commit 362922c

Browse files
authored
Prerelease module on new modulev3 (#106)
* Set default module to prerelease to 'dev' * Add test check for dev and others * Add test to check prerelease tag * Fix bug for adding PreRelease to injected function.
1 parent 73a50ba commit 362922c

4 files changed

Lines changed: 59 additions & 28 deletions

File tree

TestingHelperTest/public/New-ModuleV3-Add-ModuleV3.Tests.ps1

Lines changed: 51 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,39 @@
22
function TestingHelperTest_NewModuleV3_AddModule_FailCall_NewModuleManifest {
33

44
# test when failing calling dependency Microsoft PowerShell.Core/New-ModuleManifest
5-
6-
$modulename = "MyModule"
75

8-
# Inject depepdency
9-
$module = Import-Module -Name $TESTED_MANIFEST_PATH -Prefix "LL_" -Force -PassThru
10-
& $module {
11-
. {
12-
function script:New-MyModuleManifest {
13-
[CmdletBinding()]
14-
param(
15-
[Parameter(Mandatory)][string]$Path,
16-
[Parameter(Mandatory)][string]$RootModule
17-
)
18-
throw "Injected error from New-MymoduleManifest."
6+
try {
7+
8+
$modulename = "MyModule"
9+
10+
# Inject depepdency
11+
$module = Import-Module -Name $TESTED_MANIFEST_PATH -Prefix "LL_" -Force -PassThru
12+
& $module {
13+
. {
14+
function script:New-MyModuleManifest {
15+
[CmdletBinding()]
16+
param(
17+
[Parameter(Mandatory)][string]$Path,
18+
[Parameter(Mandatory)][string]$RootModule,
19+
[Parameter(Mandatory)][string]$PreRelease
20+
)
21+
throw "Injected error from New-MymoduleManifest."
22+
}
23+
}
1924
}
25+
26+
$result = Add-LL_ModuleV3 -Name $modulename @ErrorParameters
27+
28+
Assert-IsNull -Object $result -Comment "No module is created"
29+
Assert-IsNotNull -Object $errorVar.Exception -Comment "Error is thrown"
30+
Assert-Contains -Expected "Injected error from New-MymoduleManifest." -Presented ($errorVar.Exception.Message)
31+
Assert-ContainsPattern -Expected "Error creating the PSD1 file.*" -Presented ($errorVar.Exception.Message)
32+
}
33+
finally {
34+
# reset module
35+
Import-Module -Name $TESTED_MANIFEST_PATH -Prefix "TT_" -Force
2036
}
21-
}
22-
23-
$result = Add-LL_ModuleV3 -Name $modulename @ErrorParameters
24-
25-
Assert-IsNull -Object $result -Comment "No module is created"
26-
Assert-IsNotNull -Object $errorVar.Exception -Comment "Error is thrown"
27-
Assert-Contains -Expected "Injected error from New-MymoduleManifest." -Presented ($errorVar.Exception.Message)
28-
Assert-ContainsPattern -Expected "Error creating the PSD1 file.*" -Presented ($errorVar.Exception.Message)
2937

30-
# reset module
31-
Import-Module -Name $TESTED_MANIFEST_PATH -Prefix "TT_" -Force
3238
}
3339

3440
function TestingHelperTest_NewModuleV3_AddModule_DefaultManifest {
@@ -39,6 +45,8 @@ function TestingHelperTest_NewModuleV3_AddModule_DefaultManifest {
3945

4046
$defaultsManifest = Get-DefaultsManifest
4147

48+
$defaultsManifest.PrivateData.PSData.Prerelease = 'dev'
49+
4250
Assert-AreEqualPath -Expected $moduleName -Presented $result
4351

4452
Assert-AddModuleV3 -Path $moduleName -Expected $defaultsManifest
@@ -48,6 +56,7 @@ function TestingHelperTest_NewModuleV3_AddModule_MyManifest {
4856

4957
$moduleName = "MyModule"
5058

59+
# Metadata is really the posible parameters for Update-ModuleManifest
5160
$param = @{
5261
RootModule = "MyModule.psm1"
5362
Author = "Me"
@@ -56,11 +65,28 @@ function TestingHelperTest_NewModuleV3_AddModule_MyManifest {
5665
Description = "MyDescription of the module"
5766
FunctionsToExport = @("MyFunction")
5867
CopyRight = "(c) 2020 MyCompany. All rights reserved."
68+
Prerelease = "radompre"
5969
}
60-
70+
6171
$result = Add-TT_ModuleV3 -Name $moduleName -Metadata $param
6272

63-
Assert-AddModuleV3 -Path $result -Expected $param
73+
$ExpectedMetadata = @{
74+
RootModule = $param.RootModule
75+
Author = $param.Author
76+
CompanyName = $param.CompanyName
77+
ModuleVersion = $param.ModuleVersion
78+
Description = $param.Description
79+
FunctionsToExport = $param.FunctionsToExport
80+
Copyright = $param.CopyRight
81+
}
82+
83+
$ExpectedMetadata.PrivateData = @{
84+
PSData = @{
85+
Prerelease = $param.Prerelease
86+
}
87+
}
88+
89+
Assert-AddModuleV3 -Path $result -Expected $ExpectedMetadata
6490

6591
}
6692

private/Microsoft.PowerShell.Core.Dependency.ps1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ function script:New-MyModuleManifest {
44
[CmdletBinding()]
55
param(
66
[Parameter(Mandatory)][string]$Path,
7-
[Parameter(Mandatory)][string]$RootModule
7+
[Parameter(Mandatory)][string]$RootModule,
8+
[Parameter(Mandatory)][string]$PreRelease
89
)
9-
New-ModuleManifest -Path $Path -RootModule $RootModule
10+
New-ModuleManifest -Path $Path -RootModule $RootModule -PreRelease $PreRelease
1011
}
1112

1213
function script:Update-MyModuleManifest {

public/Add-ModuleV3.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ function Add-ModuleV3 {
4040

4141
try {
4242
# Create the PSD1 file
43-
New-MyModuleManifest -Path $psd1Path -RootModule $rootModule
43+
# Default Prerelease to 'dev' but may be overriten by $metadata
44+
New-MyModuleManifest -Path $psd1Path -RootModule $rootModule -PreRelease "dev"
4445

4546
# Update with metadata
4647
if ($Metadata.Count -gt 0) {

public/Add-TestModuleV3.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ function Add-TestModuleV3 {
2020
$manifest.Remove('Name')
2121
$manifest.Remove('RootModule')
2222
$manifest.Remove('GUID')
23+
24+
#match the prerelease field with module
25+
$manifest.Prerelease = $manifest.PrivateData.PSData.Prerelease
2326
}
2427

2528
# TODO: Not sure how to mangage Force on Add-Module functions

0 commit comments

Comments
 (0)