Skip to content

Commit 9db81e0

Browse files
authored
File I/O abstraction part 19: Migrate ISourceFileFactory and remove IFileResolver (#17761)
- Updated `ISourceFileFactory` methods to use `IOUri` - Removed `IFileResolver` and `FileResolver` ###### Microsoft Reviewers: [Open in CodeFlow](https://microsoft.github.io/open-pr/?codeflow=https://github.com/Azure/bicep/pull/17761)
1 parent 2a0d6f0 commit 9db81e0

File tree

63 files changed

+212
-399
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+212
-399
lines changed

src/Bicep.Cli/Commands/BuildParamsCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public async Task<DiagnosticSummary> CompileMultiple(BuildParamsArguments args,
116116
return null;
117117
}
118118

119-
var sourceFile = sourceFileFactory.CreateBicepParamFile(paramsFileUri.ToUri(), paramsFileText);
119+
var sourceFile = sourceFileFactory.CreateBicepParamFile(paramsFileUri, paramsFileText);
120120
var parameterOverrides = JsonConvert.DeserializeObject<Dictionary<string, JToken>>(parameterOverridesJson, new JsonSerializerSettings()
121121
{
122122
DateParseHandling = DateParseHandling.None,

src/Bicep.Cli/Commands/DecompileCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public async Task<int> RunAsync(DecompileArguments args)
6868
var workspace = new Workspace();
6969
foreach (var (fileUri, bicepOutput) in decompilation.FilesToSave)
7070
{
71-
workspace.UpsertSourceFile(this.sourceFileFactory.CreateBicepFile(fileUri, bicepOutput));
71+
workspace.UpsertSourceFile(this.sourceFileFactory.CreateBicepFile(fileUri.ToIOUri(), bicepOutput));
7272
}
7373

7474
// to verify success we recompile and check for syntax errors.

src/Bicep.Cli/Commands/FormatCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void Format(FormatArguments args, IOUri inputUri, IOUri outputUri, bool o
4545
throw new DiagnosticException(diagnostic);
4646
}
4747

48-
if (sourceFileFactory.CreateSourceFile(inputUri.ToUri(), fileContents) is not BicepSourceFile sourceFile)
48+
if (sourceFileFactory.CreateSourceFile(inputUri, fileContents) is not BicepSourceFile sourceFile)
4949
{
5050
throw new InvalidOperationException("Unable to create Bicep source file.");
5151
}

src/Bicep.Cli/Commands/PublishCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ private async Task PublishModuleAsync(ArtifactReference target, BinaryData compi
120120

121121
private ArtifactReference ValidateReference(string targetModuleReference, IOUri targetModuleUri)
122122
{
123-
var dummyReferencingFile = this.sourceFileFactory.CreateBicepFile(targetModuleUri.ToUri(), string.Empty);
123+
var dummyReferencingFile = this.sourceFileFactory.CreateBicepFile(targetModuleUri, string.Empty);
124124

125125
if (!this.moduleDispatcher.TryGetArtifactReference(dummyReferencingFile, ArtifactType.Module, targetModuleReference).IsSuccess(out var moduleReference, out var failureBuilder))
126126
{

src/Bicep.Cli/Commands/PublishExtensionCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ private ArtifactReference ValidateReference(string targetReference)
129129
dummyReferencingFileUri = new IOUri("file", "", "/dummy");
130130
}
131131

132-
var dummyReferencingFile = sourceFileFactory.CreateBicepFile(dummyReferencingFileUri.ToUri(), "");
132+
var dummyReferencingFile = sourceFileFactory.CreateBicepFile(dummyReferencingFileUri, "");
133133

134134
if (!moduleDispatcher.TryGetArtifactReference(dummyReferencingFile, ArtifactType.Extension, targetReference).IsSuccess(out var extensionReference, out var failureBuilder))
135135
{

src/Bicep.Cli/Helpers/ParamsFileHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,6 @@ public static BicepParamFile ApplyParameterOverrides(ISourceFileFactory sourceFi
8585
return sourceFile;
8686
}
8787

88-
return sourceFileFactory.CreateBicepParamFile(sourceFile.Uri, newProgramSyntax.ToString());
88+
return sourceFileFactory.CreateBicepParamFile(sourceFile.FileHandle.Uri, newProgramSyntax.ToString());
8989
}
9090
}

src/Bicep.Cli/Helpers/ServiceCollectionExtensions.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ public static IServiceCollection AddBicepCore(this IServiceCollection services)
7171
.AddSingleton<IModuleDispatcher, ModuleDispatcher>()
7272
.AddSingleton<IArtifactRegistryProvider, DefaultArtifactRegistryProvider>()
7373
.AddSingleton<ITokenCredentialFactory, TokenCredentialFactory>()
74-
.AddSingleton<IFileResolver, FileResolver>()
7574
.AddSingleton<IEnvironment, Environment>()
7675
.AddSingleton<IFileSystem, LocalFileSystem>()
7776
.AddSingleton<IFileExplorer, FileSystemFileExplorer>()

src/Bicep.Core.IntegrationTests/RegistryTests.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Bicep.Core.UnitTests.Assertions;
1313
using Bicep.Core.UnitTests.Features;
1414
using Bicep.Core.UnitTests.Utils;
15+
using Bicep.IO.InMemory;
1516
using Bicep.TextFixtures.Utils;
1617
using FluentAssertions;
1718
using FluentAssertions.Execution;
@@ -211,12 +212,9 @@ public async Task ModuleRestoreWithStuckFileLockShouldFailAfterTimeout(IEnumerab
211212
var artifactManager = new TestExternalArtifactManager(TestCompiler.ForMockFileSystemCompilation().WithFeatureOverrides<FeatureProviderOverrides, OverriddenFeatureProviderFactory>(features));
212213
await dataSet.PublishAllDataSetArtifacts(artifactManager, publishSource: true);
213214

214-
var fileResolver = BicepTestConstants.FileResolver;
215-
216215
var services = Services
217216
.WithFeatureOverrides(features)
218217
.WithTestArtifactManager(artifactManager)
219-
.WithFileResolver(fileResolver)
220218
.Build();
221219

222220
var dispatcher = services.Construct<IModuleDispatcher>();
@@ -277,12 +275,9 @@ public async Task ForceModuleRestoreWithStuckFileLockShouldFailAfterTimeout(IEnu
277275
var artifactManager = new TestExternalArtifactManager(TestCompiler.ForMockFileSystemCompilation().WithFeatureOverrides<FeatureProviderOverrides, OverriddenFeatureProviderFactory>(features));
278276
await dataSet.PublishAllDataSetArtifacts(artifactManager, publishSource: true);
279277

280-
var fileResolver = BicepTestConstants.FileResolver;
281-
282278
var services = Services
283279
.WithFeatureOverrides(features)
284280
.WithTestArtifactManager(artifactManager)
285-
.WithFileResolver(fileResolver)
286281
.Build();
287282

288283
var dispatcher = services.Construct<IModuleDispatcher>();
@@ -351,12 +346,9 @@ public async Task ForceModuleRestoreShouldRestoreAllModules(IEnumerable<External
351346
var artifactManager = new TestExternalArtifactManager(TestCompiler.ForMockFileSystemCompilation().WithFeatureOverrides<FeatureProviderOverrides, OverriddenFeatureProviderFactory>(features));
352347
await dataSet.PublishAllDataSetArtifacts(artifactManager, publishSource: true);
353348

354-
var fileResolver = BicepTestConstants.FileResolver;
355-
356349
var services = Services
357350
.WithFeatureOverrides(new(CacheRootDirectory: cacheDirectory))
358351
.WithTestArtifactManager(artifactManager)
359-
.WithFileResolver(fileResolver)
360352
.Build();
361353

362354
var dispatcher = services.Construct<IModuleDispatcher>();
@@ -400,7 +392,7 @@ private static BicepFile CreateDummyReferencingFile(IDependencyHelper dependency
400392
{
401393
var sourceFileFactory = dependencyHelper.Construct<ISourceFileFactory>();
402394

403-
return sourceFileFactory.CreateBicepFile(new Uri("inmemory:///main.bicep"), "");
395+
return sourceFileFactory.CreateBicepFile(DummyFileHandle.Default, "");
404396
}
405397

406398
private static ResultWithDiagnosticBuilder<ArtifactReference> TryGetModuleReference(IModuleDispatcher moduleDispatcher, BicepSourceFile referencingFile, string reference) =>

src/Bicep.Core.IntegrationTests/Scenarios/LoadFunctionsTests.cs

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Bicep.Core.UnitTests.Assertions;
88
using Bicep.Core.UnitTests.FileSystem;
99
using Bicep.Core.UnitTests.Utils;
10+
using Bicep.TextFixtures.IO;
1011
using Bicep.TextFixtures.Utils;
1112
using FluentAssertions;
1213
using FluentAssertions.Execution;
@@ -111,17 +112,15 @@ private static CompilationHelper.CompilationResult CreateLoadTextContentTestComp
111112
{
112113
var encoding = LanguageConstants.SupportedEncodings.TryGetValue(encodingName, out var val) ? val : Encoding.UTF8;
113114

114-
var files = new Dictionary<Uri, MockFileData>
115-
{
116-
[new Uri("file:///main.bicep")] = new(@"
117-
var message = loadTextContent('message.txt', '" + encodingName + @"')
115+
var fileSet = MockFileSystemTestFileSet.Create(
116+
("main.bicep", $"""
117+
var message = loadTextContent('message.txt', '{encodingName}')
118118
119-
output out string = message
120-
"),
121-
[new Uri("file:///message.txt")] = new(TEXT_CONTENT, encoding),
122-
};
119+
output out string = message
120+
"""),
121+
("message.txt", new(TEXT_CONTENT, encoding)));
123122

124-
return CompilationHelper.Compile(new(), new InMemoryFileResolver(files), files.Keys, new Uri("file:///main.bicep"));
123+
return CompilationHelper.Compile(new(), fileSet, fileSet.GetUri("main.bicep"));
125124
}
126125

127126
[DataTestMethod]
@@ -649,15 +648,13 @@ private static CompilationHelper.CompilationResult CreateLoadJsonContentTestComp
649648
{
650649
var encoding = LanguageConstants.SupportedEncodings.TryGetValue(encodingName, out var val) ? val : Encoding.UTF8;
651650

652-
var files = new Dictionary<Uri, MockFileData>
653-
{
654-
[new Uri("file:///main.bicep")] = new(@"
655-
var fileObj = loadJsonContent('file.json', '$', '" + encodingName + @"')
656-
"),
657-
[new Uri("file:///file.json")] = new(TEST_JSON, encoding),
658-
};
651+
var fileSet = MockFileSystemTestFileSet.Create(
652+
("main.bicep", $"""
653+
var fileObj = loadJsonContent('file.json', '$', '{encodingName}')
654+
"""),
655+
("file.json", new(TEST_JSON, encoding)));
659656

660-
return CompilationHelper.Compile(new(), new InMemoryFileResolver(files), files.Keys, new Uri("file:///main.bicep"));
657+
return CompilationHelper.Compile(new(), fileSet, fileSet.GetUri("main.bicep"));
661658
}
662659

663660
[DataTestMethod]
@@ -995,15 +992,13 @@ private static CompilationHelper.CompilationResult CreateLoadYamlContentTestComp
995992
{
996993
var encoding = LanguageConstants.SupportedEncodings.TryGetValue(encodingName, out var val) ? val : Encoding.UTF8;
997994

998-
var files = new Dictionary<Uri, MockFileData>
999-
{
1000-
[new Uri("file:///main.bicep")] = new(@"
1001-
var fileObj = loadYamlContent('file.yaml', '$', '" + encodingName + @"')
1002-
"),
1003-
[new Uri("file:///file.yaml")] = new(TEST_YAML, encoding),
1004-
};
995+
var fileSet = MockFileSystemTestFileSet.Create(
996+
("main.bicep", $"""
997+
var fileObj = loadYamlContent('file.yaml', '$', '{encodingName}')
998+
"""),
999+
("file.yaml", new(TEST_YAML, encoding)));
10051000

1006-
return CompilationHelper.Compile(new(), new InMemoryFileResolver(files), files.Keys, new Uri("file:///main.bicep"));
1001+
return CompilationHelper.Compile(new(), fileSet, fileSet.GetUri("main.bicep"));
10071002
}
10081003

10091004
[DataTestMethod]

src/Bicep.Core.UnitTests/BicepTestConstants.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ public static class BicepTestConstants
4242

4343
public static readonly IFileSystem FileSystem = new OnDiskFileSystem();
4444

45-
public static readonly FileResolver FileResolver = new(FileSystem);
46-
4745
public static readonly IFileExplorer FileExplorer = new FileSystemFileExplorer(FileSystem);
4846

4947
public static readonly FeatureProviderOverrides FeatureOverrides = new();
@@ -186,8 +184,7 @@ public static BicepFile CreateDummyBicepFile(RootConfiguration? configuration =
186184
public static BicepFile CreateDummyBicepFile(IConfigurationManager configurationManager, IFeatureProviderFactory? featureProviderFactory = null)
187185
{
188186
return new(
189-
new Uri($"inmemory:///main.bicep"),
190-
DummyFileHandle.Instance,
187+
DummyFileHandle.Default,
191188
[],
192189
SyntaxFactory.EmptyProgram,
193190
configurationManager,

0 commit comments

Comments
 (0)