public InvocationContext( IAzResourceTypeLoader azResourceTypeLoader, TextWriter outputWriter, TextWriter errorWriter, IFeatureProvider?features = null, IContainerRegistryClientFactory?clientFactory = null, ITemplateSpecRepositoryFactory?templateSpecRepositoryFactory = null) { // keep the list of services in this class in sync with the logic in the AddInvocationContext() extension method OutputWriter = outputWriter; ErrorWriter = errorWriter; Features = features ?? new FeatureProvider(); ClientFactory = clientFactory ?? new ContainerRegistryClientFactory(new TokenCredentialFactory()); TemplateSpecRepositoryFactory = templateSpecRepositoryFactory ?? new TemplateSpecRepositoryFactory(new TokenCredentialFactory()); NamespaceProvider = new DefaultNamespaceProvider(azResourceTypeLoader, Features); }
public static async Task <(Compilation compilation, string outputDirectory, Uri fileUri)> SetupPrerequisitesAndCreateCompilation(this DataSet dataSet, TestContext testContext) { var features = BicepTestConstants.CreateFeaturesProvider(testContext, registryEnabled: dataSet.HasExternalModules); var outputDirectory = dataSet.SaveFilesToTestDirectory(testContext); var clientFactory = dataSet.CreateMockRegistryClients(testContext); await dataSet.PublishModulesToRegistryAsync(clientFactory, testContext); var templateSpecRepositoryFactory = dataSet.CreateMockTemplateSpecRepositoryFactory(testContext); var fileUri = PathHelper.FilePathToFileUrl(Path.Combine(outputDirectory, DataSet.TestFileMain)); var dispatcher = new ModuleDispatcher(new DefaultModuleRegistryProvider(BicepTestConstants.FileResolver, clientFactory, templateSpecRepositoryFactory, features)); var workspace = new Workspace(); var namespaceProvider = new DefaultNamespaceProvider(new AzResourceTypeLoader(), features); var configuration = BicepTestConstants.ConfigurationManager.GetConfiguration(fileUri); var sourceFileGrouping = SourceFileGroupingBuilder.Build(BicepTestConstants.FileResolver, dispatcher, workspace, fileUri, configuration); if (await dispatcher.RestoreModules(configuration, dispatcher.GetValidModuleReferences(sourceFileGrouping.ModulesToRestore, configuration))) { sourceFileGrouping = SourceFileGroupingBuilder.Rebuild(dispatcher, workspace, sourceFileGrouping, configuration); } return(new Compilation(namespaceProvider, sourceFileGrouping, configuration, new LinterAnalyzer(configuration)), outputDirectory, fileUri); }