public void RoslynConfig_NoAnalyzerAssemblies_Succeeds() { // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); MockSonarQubeServer mockServer = CreateValidServer("valid.project", null, "valid.profile"); QualityProfile csProfile = mockServer.Data.FindProfile("valid.profile", RoslynAnalyzerProvider.CSharpLanguage); csProfile.SetExport(RoslynAnalyzerProvider.RoslynCSharpFormatName, @"<?xml version=""1.0"" encoding=""utf-8""?> <RoslynExportProfile Version=""1.0=""> <Configuration> <RuleSet /> <AdditionalFiles /> </Configuration> <Deployment> <Plugins /> <!-- empty --> </Deployment> </RoslynExportProfile>"); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "valid.project", null); // Assert CheckSettingsInvariants(actualSettings); CheckExpectedAssemblies(actualSettings /* none */); logger.AssertErrorsLogged(0); logger.AssertWarningsLogged(0); }
public void RoslynConfig_MissingRuleset() { // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); MockSonarQubeServer mockServer = CreateValidServer("valid.project", null, "valid.profile"); QualityProfile csProfile = mockServer.Data.FindProfile("valid.profile", RoslynAnalyzerProvider.CSharpLanguage); csProfile.SetExport(RoslynAnalyzerProvider.RoslynCSharpFormatName, @"<?xml version=""1.0"" encoding=""utf-8""?> <RoslynExportProfile Version=""1.0=""> <Configuration> <!-- Missing ruleset --> <AdditionalFiles> <AdditionalFile FileName=""SonarLint.xml"" > </AdditionalFile> </AdditionalFiles> </Configuration> <Deployment /> </RoslynExportProfile>"); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "valid.project", null); // Assert AssertAnalyzerSetupNotPerformed(actualSettings, rootDir); logger.AssertErrorsLogged(0); logger.AssertWarningsLogged(0); }
public void RoslynConfig_DuplicateAdditionalFileName_DuplicateFileIgnored() { // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); string expectedFileContent = "expected"; string unexpectedFileContent = "not expected: file should already exist with the expected content"; MockSonarQubeServer mockServer = CreateValidServer("valid.project", null, "valid.profile"); QualityProfile csProfile = mockServer.Data.FindProfile("valid.profile", RoslynAnalyzerProvider.CSharpLanguage); csProfile.SetExport(RoslynAnalyzerProvider.RoslynCSharpFormatName, @"<?xml version=""1.0"" encoding=""utf-8""?> <RoslynExportProfile Version=""1.0=""> <Configuration> <RuleSet /> <AdditionalFiles> <AdditionalFile FileName=""foo.txt"" >" + GetBase64EncodedString(expectedFileContent) + @"</AdditionalFile> <AdditionalFile FileName=""foo.txt"" >" + GetBase64EncodedString(unexpectedFileContent) + @"</AdditionalFile> <AdditionalFile FileName=""file2.txt""></AdditionalFile> </AdditionalFiles> </Configuration> <Deployment /> </RoslynExportProfile>"); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "valid.project", null); // Assert CheckSettingsInvariants(actualSettings); CheckRuleset(actualSettings, rootDir); CheckExpectedAdditionalFileExists("foo.txt", expectedFileContent, actualSettings); CheckExpectedAdditionalFileExists("file2.txt", string.Empty, actualSettings); logger.AssertErrorsLogged(0); logger.AssertWarningsLogged(0); }
public void RoslynConfig_ProfileExportIsUnavailable_FailsGracefully() { // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); // Create a server that doesn't export the expected format (simulates // calling an older plugin version) MockSonarQubeServer mockServer = CreateValidServer("valid.project", null, "valid.profile"); QualityProfile csProfile = mockServer.Data.FindProfile("valid.profile", RoslynAnalyzerProvider.CSharpLanguage); csProfile.SetExport(RoslynAnalyzerProvider.RoslynCSharpFormatName, null); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "valid.project", null); // Assert AssertAnalyzerSetupNotPerformed(actualSettings, rootDir); logger.AssertErrorsLogged(0); }