Skip to content

Commit aa4901b

Browse files
committed
Fix parsing of empty hashtable when string is provided as settings object
1 parent 2d439ff commit aa4901b

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-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: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,22 @@ 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" {
55+
Invoke-ScriptAnalyzer -ScriptDefinition 'gci' -Settings @{ ExcludeRules = @()} | Should -Not -BeNullOrEmpty
56+
Invoke-ScriptAnalyzer -ScriptDefinition 'gci' -Settings '@{ ExcludeRules = @()}' | Should -Not -BeNullOrEmpty
5457
}
5558
}
5659

@@ -104,7 +107,7 @@ Describe "Settings Class" {
104107
It "Should return $expectedNumberOfIncludeRules IncludeRules" {
105108
$settings.IncludeRules.Count | Should -Be $expectedNumberOfIncludeRules
106109
}
107-
110+
108111
$expectedNumberOfExcludeRules = 3
109112
It "Should return $expectedNumberOfExcludeRules ExcludeRules" {
110113
$settings.ExcludeRules.Count | Should -Be $expectedNumberOfExcludeRules

0 commit comments

Comments
 (0)