Skip to content

Commit 73b34ac

Browse files
authored
Merge pull request #3762 from kvpt/fix_directive_placement_setting
Fix csharp_using_directive_placement setting retrieval
2 parents 1b5a75a + d0ad21f commit 73b34ac

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/Settings/SettingsCSharp8UnitTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
namespace StyleCop.Analyzers.Test.CSharp8.Settings
77
{
8+
using System;
89
using System.Collections.Immutable;
910
using System.Threading;
1011
using System.Threading.Tasks;
@@ -172,6 +173,30 @@ public async Task VerifyInvalidReferenceBehaviorFromEditorConfigAsync()
172173
Assert.Equal("[InvalidReference]", styleCopSettings.DocumentationRules.GetCopyrightText("unused"));
173174
}
174175

176+
[Theory]
177+
[InlineData("outside_namespace")]
178+
[InlineData("inside_namespace")]
179+
public async Task VerifyEditorConfigSettingsReadCorrectlyDirectivePlacementWithoutSeverityLevelAsync(string placement)
180+
{
181+
var expected = placement switch
182+
{
183+
"outside_namespace" => UsingDirectivesPlacement.OutsideNamespace,
184+
"inside_namespace" => UsingDirectivesPlacement.InsideNamespace,
185+
_ => throw new InvalidOperationException(),
186+
};
187+
var settings = $@"root = true
188+
189+
[*]
190+
csharp_using_directive_placement = {placement}
191+
";
192+
var context = await this.CreateAnalysisContextFromEditorConfigAsync(settings).ConfigureAwait(false);
193+
194+
var styleCopSettings = context.GetStyleCopSettings(CancellationToken.None);
195+
196+
Assert.NotNull(styleCopSettings.OrderingRules);
197+
Assert.Equal(expected, styleCopSettings.OrderingRules.UsingDirectivesPlacement);
198+
}
199+
175200
protected virtual AnalyzerConfigOptionsProvider CreateAnalyzerConfigOptionsProvider(AnalyzerConfigSet analyzerConfigSet)
176201
=> new TestAnalyzerConfigOptionsProvider(analyzerConfigSet);
177202

StyleCop.Analyzers/StyleCop.Analyzers/Settings/ObjectModel/AnalyzerConfigHelper.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ internal static string TryGetMultiLineStringValue(AnalyzerConfigOptionsWrapper a
7171
{
7272
return new KeyValuePair<string, string>(value.Substring(0, colonIndex), value.Substring(colonIndex + 1));
7373
}
74+
75+
return new KeyValuePair<string, string>(value, string.Empty);
7476
}
7577

7678
return null;

0 commit comments

Comments
 (0)