Skip to content

Commit 0d81244

Browse files
authored
Merge pull request #1073 from bergmeister/FixParsingOfEmptySettingsFiles
Fix parsing of empty hashtable when string is provided as settings object
2 parents 0272c25 + 59277c7 commit 0d81244

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

Engine/Settings.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -560,11 +560,6 @@ private Hashtable GetHashtableFromHashTableAst(HashtableAst hashTableAst)
560560
}
561561
}
562562

563-
if (rhsList.Count == 0)
564-
{
565-
ThrowInvalidDataException(kvp.Item2);
566-
}
567-
568563
output[key] = rhsList.ToArray();
569564
}
570565

@@ -629,7 +624,7 @@ private List<string> GetArrayFromArrayExpressionAst(ArrayExpressionAst arrayExp)
629624
}
630625
}
631626

632-
return null;
627+
return result;
633628
}
634629

635630
private void ThrowInvalidDataException(Ast ast)

Tests/Engine/Settings.tests.ps1

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,23 @@ Describe "Settings Precedence" {
3838

3939
Describe "Settings Class" {
4040
Context "When an empty hashtable is provided" {
41-
BeforeAll {
42-
$settings = New-Object -TypeName $settingsTypeName -ArgumentList @{}
43-
}
4441

4542
It "Should return empty <name> property" -TestCases @(
4643
@{ Name = "IncludeRules" }
4744
@{ Name = "ExcludeRules" }
4845
@{ Name = "Severity" }
4946
@{ Name = "RuleArguments" }
50-
) {
51-
Param($Name)
47+
) {
48+
Param($Name)
5249

53-
${settings}.${Name}.Count | Should -Be 0
50+
$settings = New-Object -TypeName $settingsTypeName -ArgumentList @{}
51+
${settings}.${Name}.Count | Should -Be 0
52+
}
53+
54+
It "Should be able to parse empty settings hashtable from settings file" {
55+
$testPSSASettingsFilePath = "TestDrive:\PSSASettings.psd1"
56+
Set-Content $testPSSASettingsFilePath -Value '@{ExcludeRules = @()}'
57+
Invoke-ScriptAnalyzer -ScriptDefinition 'gci' -Settings $testPSSASettingsFilePath | Should -Not -BeNullOrEmpty
5458
}
5559
}
5660

@@ -104,7 +108,7 @@ Describe "Settings Class" {
104108
It "Should return $expectedNumberOfIncludeRules IncludeRules" {
105109
$settings.IncludeRules.Count | Should -Be $expectedNumberOfIncludeRules
106110
}
107-
111+
108112
$expectedNumberOfExcludeRules = 3
109113
It "Should return $expectedNumberOfExcludeRules ExcludeRules" {
110114
$settings.ExcludeRules.Count | Should -Be $expectedNumberOfExcludeRules

0 commit comments

Comments
 (0)