diff --git a/Engine/Settings.cs b/Engine/Settings.cs index 40e4043ea..4f9dcd546 100644 --- a/Engine/Settings.cs +++ b/Engine/Settings.cs @@ -560,11 +560,6 @@ private Hashtable GetHashtableFromHashTableAst(HashtableAst hashTableAst) } } - if (rhsList.Count == 0) - { - ThrowInvalidDataException(kvp.Item2); - } - output[key] = rhsList.ToArray(); } @@ -629,7 +624,7 @@ private List GetArrayFromArrayExpressionAst(ArrayExpressionAst arrayExp) } } - return null; + return result; } private void ThrowInvalidDataException(Ast ast) diff --git a/Tests/Engine/Settings.tests.ps1 b/Tests/Engine/Settings.tests.ps1 index 23bdf1196..63c7de27f 100644 --- a/Tests/Engine/Settings.tests.ps1 +++ b/Tests/Engine/Settings.tests.ps1 @@ -38,19 +38,23 @@ Describe "Settings Precedence" { Describe "Settings Class" { Context "When an empty hashtable is provided" { - BeforeAll { - $settings = New-Object -TypeName $settingsTypeName -ArgumentList @{} - } It "Should return empty property" -TestCases @( @{ Name = "IncludeRules" } @{ Name = "ExcludeRules" } @{ Name = "Severity" } @{ Name = "RuleArguments" } - ) { - Param($Name) + ) { + Param($Name) - ${settings}.${Name}.Count | Should -Be 0 + $settings = New-Object -TypeName $settingsTypeName -ArgumentList @{} + ${settings}.${Name}.Count | Should -Be 0 + } + + It "Should be able to parse empty settings hashtable from settings file" { + $testPSSASettingsFilePath = "TestDrive:\PSSASettings.psd1" + Set-Content $testPSSASettingsFilePath -Value '@{ExcludeRules = @()}' + Invoke-ScriptAnalyzer -ScriptDefinition 'gci' -Settings $testPSSASettingsFilePath | Should -Not -BeNullOrEmpty } } @@ -104,7 +108,7 @@ Describe "Settings Class" { It "Should return $expectedNumberOfIncludeRules IncludeRules" { $settings.IncludeRules.Count | Should -Be $expectedNumberOfIncludeRules } - + $expectedNumberOfExcludeRules = 3 It "Should return $expectedNumberOfExcludeRules ExcludeRules" { $settings.ExcludeRules.Count | Should -Be $expectedNumberOfExcludeRules