示例#1
0
        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);
        }
示例#4
0
        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'");
        }
示例#5
0
        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);
        }
示例#7
0
        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);
 }