Skip to content

Commit aea004c

Browse files
authored
Limit config searching the same way editorconfig searching is limited (#1243)
* Limit config searching the same way editorconfig searching is limited closes #1240 * don't forget this file
1 parent 86f6690 commit aea004c

File tree

4 files changed

+39
-6
lines changed

4 files changed

+39
-6
lines changed

Src/CSharpier.Cli/CommandLineFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ CancellationToken cancellationToken
4949
fileSystem,
5050
logger,
5151
cancellationToken,
52-
limitEditorConfigSearch: true
52+
limitConfigSearch: true
5353
);
5454

5555
if (

Src/CSharpier.Cli/Options/ConfigurationFileOptions.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,20 @@ ConfigurationFileOptions configurationFileOptions
4646
internal static List<CSharpierConfigData> FindForDirectoryName(
4747
string directoryName,
4848
IFileSystem fileSystem,
49-
ILogger logger
49+
ILogger logger,
50+
bool limitEditorConfigSearch
5051
)
5152
{
5253
var results = new List<CSharpierConfigData>();
5354
var directoryInfo = fileSystem.DirectoryInfo.New(directoryName);
5455

5556
var filesByDirectory = directoryInfo
56-
.EnumerateFiles(".csharpierrc*", SearchOption.AllDirectories)
57+
.EnumerateFiles(
58+
".csharpierrc*",
59+
limitEditorConfigSearch
60+
? SearchOption.TopDirectoryOnly
61+
: SearchOption.AllDirectories
62+
)
5763
.GroupBy(o => o.DirectoryName);
5864

5965
foreach (var group in filesByDirectory)

Src/CSharpier.Cli/Options/OptionsProvider.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,20 @@ public static async Task<OptionsProvider> Create(
3636
IFileSystem fileSystem,
3737
ILogger logger,
3838
CancellationToken cancellationToken,
39-
bool limitEditorConfigSearch = false
39+
bool limitConfigSearch = false
4040
)
4141
{
4242
var specifiedPrinterOptions = configPath is not null
4343
? ConfigurationFileOptions.CreatePrinterOptionsFromPath(configPath, fileSystem, logger)
4444
: null;
4545

4646
var csharpierConfigs = configPath is null
47-
? ConfigurationFileOptions.FindForDirectoryName(directoryName, fileSystem, logger)
47+
? ConfigurationFileOptions.FindForDirectoryName(
48+
directoryName,
49+
fileSystem,
50+
logger,
51+
limitConfigSearch
52+
)
4853
: Array.Empty<CSharpierConfigData>().ToList();
4954

5055
IList<EditorConfigSections>? editorConfigSections = null;
@@ -56,7 +61,7 @@ public static async Task<OptionsProvider> Create(
5661
editorConfigSections = EditorConfigParser.FindForDirectoryName(
5762
directoryName,
5863
fileSystem,
59-
limitEditorConfigSearch,
64+
limitConfigSearch,
6065
ignoreFile
6166
);
6267
}

Src/CSharpier.Tests/OptionsProviderTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -647,6 +647,28 @@ public async Task Should_Not_Look_For_Subfolders_EditorConfig_When_Limited()
647647
result.TabWidth.Should().Be(4);
648648
}
649649

650+
[Test]
651+
public async Task Should_Not_Look_For_Subfolders_CSharpierRc_When_Limited()
652+
{
653+
var context = new TestContext();
654+
context.WhenAFileExists(
655+
"c:/test/subfolder/.csharpierrc",
656+
@"
657+
[*]
658+
tabWidth: 1
659+
"
660+
);
661+
662+
// this shouldn't happen in the real world, but validates we correctly limit
663+
// the search to the top directory only
664+
var result = await context.CreateProviderAndGetOptionsFor(
665+
"c:/test/",
666+
"c:/test/subfolder/test.cs",
667+
limitEditorConfigSearch: true
668+
);
669+
result.TabWidth.Should().Be(4);
670+
}
671+
650672
[Test]
651673
public async Task Should_Look_For_Subfolders_When_Limited()
652674
{

0 commit comments

Comments
 (0)