Skip to content

Commit 6d13de0

Browse files
committed
add test and fix default property values
1 parent 15e8c6e commit 6d13de0

3 files changed

Lines changed: 94 additions & 19 deletions

File tree

src/code/PSScriptRequires.cs

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ public sealed class PSScriptRequires
3838
/// <summary>
3939
/// The assemblies this script requires, specified like: #requires -Assembly path\to\foo.dll#requires -Assembly "System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
4040
/// </summary>
41-
public string[] RequiredAssemblies { get; private set; }
41+
public string[] RequiredAssemblies { get; private set; } = Utils.EmptyStrArray;
4242

4343
/// <summary>
4444
/// The PowerShell Edition this script requires, specified like: #requires -PSEdition Desktop
4545
/// </summary>
46-
public string[] RequiredPSEditions { get; private set; }
46+
public string[] RequiredPSEditions { get; private set; } = Utils.EmptyStrArray;
4747

4848
/// <summary>
4949
/// The PowerShell version this script requires, specified like: #requires -Version 3
@@ -179,14 +179,12 @@ internal string[] EmitContent()
179179
{
180180
psRequiresLines.Add(String.Empty);
181181
psRequiresLines.Add("#Requires -RunAsAdministrator");
182-
psRequiresLines.Add(String.Empty);
183182
}
184183

185184
if (!String.IsNullOrEmpty(RequiredApplicationId))
186185
{
187186
psRequiresLines.Add(String.Empty);
188187
psRequiresLines.Add(String.Format("#Requires -ShellId {0}", RequiredApplicationId));
189-
psRequiresLines.Add(String.Empty);
190188
}
191189

192190
if (RequiredAssemblies.Length > 0)
@@ -196,19 +194,6 @@ internal string[] EmitContent()
196194
{
197195
psRequiresLines.Add(String.Format("#Requires -Assembly {0}", assembly));
198196
}
199-
200-
psRequiresLines.Add(String.Empty);
201-
}
202-
203-
if (RequiredModules.Length > 0)
204-
{
205-
psRequiresLines.Add(String.Empty);
206-
foreach (ModuleSpecification moduleSpec in RequiredModules)
207-
{
208-
psRequiresLines.Add(String.Format("#Requires -Module {0}", moduleSpec.ToString()));
209-
}
210-
211-
psRequiresLines.Add(String.Empty);
212197
}
213198

214199
if (RequiredPSEditions.Length > 0)
@@ -218,14 +203,22 @@ internal string[] EmitContent()
218203
{
219204
psRequiresLines.Add(String.Format("#Requires -PSEdition {0}", psEdition));
220205
}
221-
222-
psRequiresLines.Add(String.Empty);
223206
}
224207

225208
if (RequiredPSVersion != null)
226209
{
227210
psRequiresLines.Add(String.Empty);
228211
psRequiresLines.Add(String.Format("#Requires -Version {0}", RequiredPSVersion.ToString()));
212+
}
213+
214+
if (RequiredModules.Length > 0)
215+
{
216+
psRequiresLines.Add(String.Empty);
217+
foreach (ModuleSpecification moduleSpec in RequiredModules)
218+
{
219+
psRequiresLines.Add(String.Format("#Requires -Module {0}", moduleSpec.ToString()));
220+
}
221+
229222
psRequiresLines.Add(String.Empty);
230223
}
231224

test/PSScriptFileInfoTests/UpdatePSScriptFileInfo.Tests.ps1

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,34 @@ Describe "Test Update-PSScriptFileInfo" -tags 'CI' {
264264
$results -like "*#Requires*ModuleName*Version*" | Should -BeTrue
265265
}
266266

267+
It "update script file with varying Required properties (IsElevationRequired, RequiredApplicationId, RequiredAssembliesRequiredPSEditions, RequiredPSVersion) should retain those Require statements" {
268+
$testScriptWithRequiredProperties = Join-Path -Path $script:testScriptsFolderPath -ChildPath "ScriptWithAllRequiresProperties.ps1"
269+
Update-PSScriptFileInfo -Path $testScriptWithRequiredProperties -Version "2.0.0.0"
270+
Test-PSScriptFileInfo $testScriptWithRequiredProperties | Should -Be $true
271+
272+
$requiredApplicationId = "Shell"
273+
$requiredAssemblies = @("path\to\foo.dll")
274+
$requiredPSEditions = @("Desktop")
275+
$requiredPSVersion = "5.1"
276+
277+
Test-Path -Path $testScriptWithRequiredProperties | Should -BeTrue
278+
$results = Get-Content -Path $testScriptWithRequiredProperties -Raw
279+
$results.Contains("#Requires -RunAsAdministrator") | Should -BeTrue
280+
$results -like "*#Requires -ShellId*" | Should -BeTrue
281+
$results -like "*#Requires*Assembly*" | Should -BeTrue
282+
$results -like "*#Requires*PSEdition*" | Should -BeTrue
283+
$results -like "*#Requires*Version*" | Should -BeTrue
284+
285+
$scriptFileObj = Get-PSScriptFileInfo -Path $testScriptWithRequiredProperties
286+
$scriptFileObj.ScriptRequiresComment.RequiredModules[0] | Should -Be "Microsoft.PowerShell.PSResourceGet"
287+
$scriptFileObj.ScriptRequiresComment.IsElevationRequired | Should -Be $true
288+
$scriptFileObj.ScriptRequiresComment.RequiredApplicationId | Should -Be $requiredApplicationId
289+
$scriptFileObj.ScriptRequiresComment.RequiredAssemblies | Should -Be $requiredAssemblies
290+
$scriptFileObj.ScriptRequiresComment.RequiredPSEditions | Should -Be $requiredPSEditions
291+
$scriptFileObj.ScriptRequiresComment.RequiredPSVersion | Should -Be $requiredPSVersion
292+
$scriptFileObj.ScriptMetadataComment.Version | Should -Be "2.0.0.0"
293+
}
294+
267295
It "update script file RequiredScripts property" {
268296
$requiredScript1 = "RequiredScript1"
269297
$requiredScript2 = "RequiredScript2"
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<#PSScriptInfo
2+
3+
.VERSION 2.0.0.0
4+
5+
.GUID 3951be04-bd06-4337-8dc3-a620bf539fbd
6+
7+
.AUTHOR annavied
8+
9+
.COMPANYNAME
10+
11+
.COPYRIGHT
12+
13+
.TAGS
14+
15+
.LICENSEURI
16+
17+
.PROJECTURI
18+
19+
.ICONURI
20+
21+
.EXTERNALMODULEDEPENDENCIES
22+
23+
.REQUIREDSCRIPTS
24+
25+
.EXTERNALSCRIPTDEPENDENCIES
26+
27+
.RELEASENOTES
28+
29+
30+
.PRIVATEDATA
31+
32+
33+
#>
34+
35+
#Requires -RunAsAdministrator
36+
37+
#Requires -ShellId Shell
38+
39+
#Requires -Assembly path\to\foo.dll
40+
41+
#Requires -PSEdition Desktop
42+
43+
#Requires -Version 5.1
44+
45+
#Requires -Module Microsoft.PowerShell.PSResourceGet
46+
47+
<#
48+
49+
.DESCRIPTION
50+
This is a test script
51+
52+
.SYNOPSIS
53+
Test the Update-PSScriptFileInfo cmdlet
54+
#>

0 commit comments

Comments
 (0)