public void GetConfig_RulesInUserSettings_MergedConfigReturned() { // Arrange var testLogger = new TestLogger(); var testSubject = new EffectiveRulesConfigCalculator(testLogger); var defaultRulesConfig = CreateMockConfig("key"); var sourcesSettings = new UserSettings { Rules = new System.Collections.Generic.Dictionary <string, RuleConfig> { { "rule1", new RuleConfig() } } }; // 1. First call -> new config returned var result1 = testSubject.GetEffectiveRulesConfig("language1", defaultRulesConfig, sourcesSettings); result1.Should().NotBeSameAs(defaultRulesConfig); testLogger.AssertOutputStringExists(CoreStrings.EffectiveRules_CacheMiss); // 2. Second call with same settings -> cache hit testLogger.Reset(); var result2 = testSubject.GetEffectiveRulesConfig("language1", defaultRulesConfig, sourcesSettings); result2.Should().BeSameAs(result1); testLogger.AssertOutputStringExists(CoreStrings.EffectiveRules_CacheHit); // 3. Call with different key -> cache miss testLogger.Reset(); var result3 = testSubject.GetEffectiveRulesConfig("another language", defaultRulesConfig, sourcesSettings); result3.Should().NotBeSameAs(result2); testLogger.AssertOutputStringExists(CoreStrings.EffectiveRules_CacheMiss); }
public void AnalysisStarted_LogToOutputWindow() { var filePath = "c:\\test\\foo-started.cpp"; testSubject.AnalysisStarted(filePath); var expectedMessage = string.Format(AnalysisStrings.MSG_AnalysisStarted, filePath); logger.AssertOutputStringExists(expectedMessage); logger.OutputStrings.Count.Should().Be(1); }
public void GetConfig_NoCustomSettings_DefaultsReturned() { // Arrange var defaultRulesConfig = CreateWellKnownRulesConfig("language1"); var sourcesSettings = new RulesSettings(); // Act var result = testSubject.GetEffectiveRulesConfig("language1", defaultRulesConfig, sourcesSettings); // Assert result.LanguageKey.Should().Be("language1"); result.AllPartialRuleKeys.Should().BeEquivalentTo(defaultRulesConfig.AllPartialRuleKeys); testLogger.AssertOutputStringExists(CoreStrings.CFamily_NoCustomRulesSettings); }
public void TryGet_UnsupportedItemType_ReturnsNull() { // Arrange var projectItemConfig = new ProjectItemConfig { ItemType = "None" }; var projectItemMock = CreateMockProjectItem("c:\\foo\\xxx.vcxproj", projectItemConfig); // Act var fileConfig = CFamilyHelper.FileConfig.TryGet(testLogger, projectItemMock.Object, "c:\\dummy\\file.cpp"); // Assert fileConfig.Should().BeNull(); testLogger.AssertOutputStringExists("File's \"Item type\" is not supported. File: 'c:\\dummy\\file.cpp'"); }
public void TaskIsCancelled_ExceptionIsSuppressed() { // Arrange var testLogger = new TestLogger(); // Act WebServiceHelper.SafeServiceCallAsync <bool>(() => throw new TaskCanceledException("dummy error message"), testLogger).Wait(); // Assert testLogger.AssertOutputStringExists(CoreStrings.SonarQubeRequestTimeoutOrCancelled); }
public void Ctor_NoSettingsFile_EmptySettingsReturned() { // Arrange var fileSystemMock = new Mock <IFileSystem>(); fileSystemMock.Setup(x => x.File.Exists("nonExistentFile")).Returns(false); var testLogger = new TestLogger(); // Act var testSubject = new UserSettingsProvider(testLogger, fileSystemMock.Object, CreateMockFileMonitor("nonexistentFile").Object); // Assert CheckSettingsAreEmpty(testSubject.UserSettings); testLogger.AssertOutputStringExists(AnalysisStrings.Settings_UsingDefaultSettings); }
public void GetConfig_NullUserSettings_DefaultConfigReturned(bool sourceUserSettingsAreNull) { // Arrange var testLogger = new TestLogger(); var testSubject = new EffectiveRulesConfigCalculator(testLogger); var defaultRulesConfig = CreateMockConfig("language1"); var sourcesSettings = sourceUserSettingsAreNull ? null : new UserSettings(); // Act var result = testSubject.GetEffectiveRulesConfig("language1", defaultRulesConfig, sourcesSettings); // Assert - optimisation - expecting the same object instance result.Should().BeSameAs(defaultRulesConfig); testLogger.AssertOutputStringExists(CoreStrings.EffectiveRules_NoUserSettings); }
public void Execute_ReanalysisTriggered() { // Arrange SetActiveDocument(ValidTextDocument, AnalysisLanguage.CFamily); IAnalyzerOptions actualOptions = null; string[] actualFilePaths = null; analysisRequesterMock.Setup(x => x.RequestAnalysis(It.IsAny <IAnalyzerOptions>(), It.IsAny <string[]>())) .Callback <IAnalyzerOptions, string[]>((opts, filePaths) => { actualOptions = opts; actualFilePaths = filePaths; }); // Act testSubject.Invoke(); // Assert logger.AssertOutputStringExists(CFamilyStrings.ReproCmd_ExecutingReproducer); actualOptions.Should().BeOfType <CFamilyAnalyzerOptions>(); ((CFamilyAnalyzerOptions)actualOptions).CreateReproducer.Should().BeTrue(); actualFilePaths.Should().BeEquivalentTo(ValidTextDocument.FilePath); }
public static void AssertWarningLogged(this TestLogger logger, string expected) { logger.AssertOutputStringExists(CFamilyStrings.MSG_Prefix_WARN + expected); }
public static void AssertErrorLogged(this TestLogger logger, string expected) { logger.AssertOutputStringExists(CFamilyStrings.MSG_Prefix_ERROR + expected); }
public static void AssertMessageLogged(this TestLogger logger, string expected) { logger.AssertOutputStringExists(expected); }