Beispiel #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 CFamilyRuleConfigProvider(IHost host, IActiveSolutionBoundTracker activeSolutionBoundTracker, IUserSettingsProvider userSettingsProvider,
                                         ILogger logger, ICFamilyRulesConfigProvider sonarWayProvider, IFileSystem fileSystem)
        {
            this.activeSolutionBoundTracker = activeSolutionBoundTracker;
            this.userSettingsProvider       = userSettingsProvider;
            this.logger = logger;

            this.sonarWayProvider = sonarWayProvider;
            this.serializer       = new RulesSettingsSerializer(fileSystem, logger);

            this.effectiveConfigCalculator = new EffectiveRulesConfigCalculator(logger);
        }
Beispiel #3
0
        public CFamilyRuleConfigProvider(IHost host, IActiveSolutionBoundTracker activeSolutionBoundTracker, IUserSettingsProvider userSettingsProvider,
                                         ILogger logger, ICFamilyRulesConfigProvider sonarWayProvider, IFileSystem fileSystem)
        {
            this.activeSolutionBoundTracker = activeSolutionBoundTracker;
            this.userSettingsProvider       = userSettingsProvider;
            this.logger = logger;

            solutionInfoProvider = host.GetService <ISolutionRuleSetsInformationProvider>();
            solutionInfoProvider.AssertLocalServiceIsNotNull();

            this.sonarWayProvider = sonarWayProvider;
            this.serializer       = new RulesSettingsSerializer(fileSystem, logger);

            this.effectiveConfigCalculator = new EffectiveRulesConfigCalculator(logger);
        }
Beispiel #4
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 TestInitialize()
 {
     testLogger  = new TestLogger();
     testSubject = new EffectiveRulesConfigCalculator(testLogger);
 }