public void SetParameterValues_WhenGivenSonarLintFileHasBooleanParameterType_OnlyOneParameter_PopulatesProperty() { // Arrange var options = CreateOptions("ResourceTests\\RuleWithBooleanParameter\\SonarLint.xml"); var analyzer = new CheckFileLicense(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.IsRegularExpression.Should().BeTrue(); // value from XML file }
public void SetParameterValues_WhenGivenValidSonarLintFileAndDoesNotContainAnalyzerParameters_DoesNotPopulateProperties() { // Arrange var options = CreateOptions("ResourceTests\\SonarLint.xml"); var analyzer = new LineLength(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.Maximum.Should().Be(200); // Default value }
public void SetParameterValues_WhenGivenSonarLintFileHasIntParameterType_PopulatesProperties() { // Arrange var options = CreateOptions("ResourceTests\\SonarLint.xml"); var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.Maximum.Should().Be(1); // Value from the xml file }
public void SetParameterValues_WhenGivenSonarLintFileHasStringParameterType_OnlyOneParameter_PopulatesProperty() { // Arrange var options = CreateOptions("ResourceTests\\RuleWithStringParameter\\SonarLint.xml"); var analyzer = new EnumNameShouldFollowRegex(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.FlagsEnumNamePattern.Should().Be("1"); // value from XML file }
public void SetParameterValues_WithWrongPropertyType_StringInsteadOfBoolean_DoesNotPopulateProperties() { // Arrange var options = CreateOptions("ResourceTests\\StringInsteadOfBoolean\\SonarLint.xml"); var analyzer = new CheckFileLicense(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.IsRegularExpression.Should().BeFalse(); // Default value }
public void SetParameterValues_WhenNoSonarLintIsGiven_DoesNotPopulateParameters() { // Arrange var options = CreateOptions("ResourceTests\\MyFile.xml"); var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.Maximum.Should().Be(3); // Default value }
public void SetParameterValues_WithWrongPropertyType_StringInsteadOfInt_DoesNotPopulateProperties() { // Arrange var options = CreateOptions("ResourceTests\\StringInsteadOfInt\\SonarLint.xml"); var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.Maximum.Should().Be(3); // Default value }
public void SetParameterValues_WithBadPath_DoesNotPopulateProperties() { // Arrange var options = TestHelper.CreateOptions("ResourceTests\\ThisPathDoesNotExist\\SonarLint.xml"); var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.Maximum.Should().Be(3); // Default value }
public void SetParameterValues_WhenGivenValidSonarLintFileAndDoesNotContainAnalyzerParameters_DoesNotPopulateProperties() { // Arrange var additionalText = new Mock <AdditionalText>(); additionalText.Setup(x => x.Path).Returns("ResourceTests\\SonarLint.xml"); var options = new AnalyzerOptions(ImmutableArray.Create(additionalText.Object)); var analyzer = new LineLength(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.Maximum.Should().Be(200); // Default value }
public void SetParameterValues_WhenGivenValidSonarLintFileAndContainsAnalyzerParameters_PopulatesProperties() { // Arrange var additionalText = new Mock <AdditionalText>(); additionalText.Setup(x => x.Path).Returns("ResourceTests\\SonarLint.xml"); var options = new AnalyzerOptions(ImmutableArray.Create(additionalText.Object)); var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties. // Act ParameterLoader.SetParameterValues(analyzer, options); // Assert analyzer.Maximum.Should().Be(1); // Value from the xml file }
protected sealed override void Initialize(SonarAnalysisContext context) { var analysisContext = new ParameterLoadingAnalysisContext(context); Initialize(analysisContext); context.RegisterCompilationStartAction( cac => { ParameterLoader.SetParameterValues(this, cac.Options); foreach (var compilationStartActions in analysisContext.CompilationStartActions) { compilationStartActions(cac); } }); }
public void SetParameterValues_CalledTwiceAfterChangeInConfigFile_UpdatesProperties() { // Arrange var sonarLintXmlRelativePath = "ResourceTests\\ToChange\\SonarLint.xml"; var options = CreateOptions(sonarLintXmlRelativePath); var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties. // Act with the file on disk ParameterLoader.SetParameterValues(analyzer, options); analyzer.Maximum.Should().Be(1); // from the XML on disk // Update the file on disk var originalContent = File.ReadAllText(sonarLintXmlRelativePath); var modifiedContent = originalContent.Replace("<Value>1</Value>", "<Value>42</Value>"); File.WriteAllText(sonarLintXmlRelativePath, modifiedContent); ParameterLoader.SetParameterValues(analyzer, options); analyzer.Maximum.Should().Be(42); // revert change File.WriteAllText(sonarLintXmlRelativePath, originalContent); }