private void RegisterLocalServices() { this.localServices.Add(typeof(ISolutionRuleSetsInformationProvider), new Lazy <ILocalService>(() => new SolutionRuleSetsInformationProvider(this, Logger))); this.localServices.Add(typeof(IRuleSetSerializer), new Lazy <ILocalService>(() => new RuleSetSerializer())); this.localServices.Add(typeof(ICredentialStoreService), new Lazy <ILocalService>(() => new CredentialStore(new SecretStore("SonarLint.VisualStudio.Integration")))); this.localServices.Add(typeof(IConfigurationProvider), new Lazy <ILocalService>(() => { var solution = this.GetService <SVsSolution, IVsSolution>(); var connectedModeConfigPathProvider = new ConnectedModeSolutionBindingPathProvider(solution); var legacyConfigPathProvider = new LegacySolutionBindingPathProvider(this); var legacyPostSaveOperation = new LegacySolutionBindingPostSaveOperation(this); var store = this.GetService <ICredentialStoreService>(); var credentialsLoader = new SolutionBindingCredentialsLoader(store); var bindingFileLoader = new SolutionBindingFileLoader(Logger); var sccFileSystem = this.GetService <ISourceControlledFileSystem>(); var bindingSerializer = new SolutionBindingSerializer(sccFileSystem, bindingFileLoader, credentialsLoader); return(new ConfigurationProvider(legacyConfigPathProvider, connectedModeConfigPathProvider, bindingSerializer, legacyPostSaveOperation)); })); var projectNameTestProjectIndicator = new Lazy <ILocalService>(() => new ProjectNameTestProjectIndicator(Logger)); this.localServices.Add(typeof(ITestProjectRegexSetter), projectNameTestProjectIndicator); this.localServices.Add(typeof(IProjectSystemHelper), new Lazy <ILocalService>(() => new ProjectSystemHelper(this))); this.localServices.Add(typeof(IRuleSetInspector), new Lazy <ILocalService>(() => new RuleSetInspector(this, Logger))); this.localServices.Add(typeof(IRuleSetConflictsController), new Lazy <ILocalService>(() => new RuleSetConflictsController(this, new ConflictsManager(this, Logger)))); this.localServices.Add(typeof(IProjectSystemFilter), new Lazy <ILocalService>(() => { var testProjectIndicators = new List <ITestProjectIndicator> { new BuildPropertyTestProjectIndicator(this), new ProjectKindTestProjectIndicator(this), new ProjectCapabilityTestProjectIndicator(this), new ServiceGuidTestProjectIndicator(Logger), projectNameTestProjectIndicator.Value as ITestProjectIndicator, }; var testProjectIndicator = new TestProjectIndicator(testProjectIndicators); return(new ProjectSystemFilter(this, testProjectIndicator)); })); this.localServices.Add(typeof(IErrorListInfoBarController), new Lazy <ILocalService>(() => new ErrorListInfoBarController(this, new UnboundProjectFinder(this)))); // Use Lazy<object> to avoid creating instances needlessly, since the interfaces are serviced by the same instance var sccFs = new Lazy <ILocalService>(() => new SourceControlledFileSystem(this, Logger)); this.localServices.Add(typeof(ISourceControlledFileSystem), sccFs); Debug.Assert(SupportedLocalServices.Length == this.localServices.Count, "Unexpected number of local services"); Debug.Assert(SupportedLocalServices.All(t => this.localServices.ContainsKey(t)), "Not all the LocalServices are registered"); }
private ILocalService GetConfigurationPersister() { var connectedModeConfigPathProvider = new ConnectedModeSolutionBindingPathProvider(this); var legacyConfigPathProvider = new LegacySolutionBindingPathProvider(this); var legacyConfigFolderItemAdder = new LegacyConfigFolderItemAdder(this); var credentialsLoader = new SolutionBindingCredentialsLoader(credentialStoreService); var bindingFileLoader = new SolutionBindingFileLoader(Logger); var sccFileSystem = this.GetService <ISourceControlledFileSystem>(); var solutionBindingDataWriter = new SolutionBindingDataWriter(sccFileSystem, bindingFileLoader, credentialsLoader); return(new ConfigurationPersister(legacyConfigPathProvider, connectedModeConfigPathProvider, solutionBindingDataWriter, legacyConfigFolderItemAdder)); }
public void TestInitialize() { logger = new Mock <ILogger>(); fileSystem = new Mock <IFileSystem>(); testSubject = new SolutionBindingFileLoader(logger.Object, fileSystem.Object); fileSystem.Setup(x => x.Directory.Exists(MockDirectory)).Returns(true); boundProject = new BoundSonarQubeProject( new Uri("http://xxx.www.zzz/yyy:9000"), "MyProject Key", "projectName") { Profiles = new Dictionary <Language, ApplicableQualityProfile> { { Language.CSharp, new ApplicableQualityProfile { ProfileKey = "sonar way", ProfileTimestamp = DateTime.Parse("2020-02-25T08:57:54+0000") } } } }; serializedProject = @"{ ""ServerUri"": ""http://xxx.www.zzz/yyy:9000"", ""Organization"": null, ""ProjectKey"": ""MyProject Key"", ""ProjectName"": ""projectName"", ""Profiles"": { ""CSharp"": { ""ProfileKey"": ""sonar way"", ""ProfileTimestamp"": ""2020-02-25T08:57:54Z"" } } }"; }