public void RoslynConfig_BranchMissingRuleset() { // This test is a regression scenario for SONARMSBRU-187: // We do not expect the project profile to be returned if we ask for a branch-specific profile // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); WellKnownProfile testProfile = CreateValidCSharpProfile(); MockSonarQubeServer mockServer = CreateServer("valid.project", null, "valid.profile", testProfile); MockAnalyzerInstaller mockInstaller = new MockAnalyzerInstaller(); mockInstaller.AssemblyPathsToReturn = new HashSet <string>(new string[] { "c:\\assembly1.dll", "d:\\foo\\assembly2.dll" }); RoslynAnalyzerProvider testSubject = new RoslynAnalyzerProvider(mockInstaller, logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "valid.project", "missingBranch"); // Assert AssertAnalyzerSetupNotPerformed(actualSettings, rootDir); logger.AssertErrorsLogged(0); logger.AssertWarningsLogged(0); }
public void RoslynConfig_ValidProfile() { // Arrange var rootFolder = CreateTestFolders(); var logger = new TestLogger(); IList <ActiveRule> activeRules = createActiveRules(); IList <string> inactiveRules = createInactiveRules(); var language = RoslynAnalyzerProvider.CSharpLanguage; var mockInstaller = new MockAnalyzerInstaller { AssemblyPathsToReturn = new HashSet <string>(new string[] { "c:\\assembly1.dll", "d:\\foo\\assembly2.dll" }) }; var settings = CreateSettings(rootFolder); var testSubject = new RoslynAnalyzerProvider(mockInstaller, logger); // Act var actualSettings = testSubject.SetupAnalyzer(settings, ServerSettings, activeRules, inactiveRules, language); // Assert CheckSettingsInvariants(actualSettings); logger.AssertWarningsLogged(0); logger.AssertErrorsLogged(0); CheckRuleset(actualSettings, rootFolder, language); CheckExpectedAdditionalFiles(rootFolder, language, settings.SonarOutputDirectory, actualSettings); CheckExpectedAssemblies(actualSettings, "c:\\assembly1.dll", "d:\\foo\\assembly2.dll"); var plugins = new List <string> { "wintellect", "csharp" }; mockInstaller.AssertExpectedPluginsRequested(plugins); }
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_ValidRealSonarLintProfile() { // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); WellKnownProfile testProfile = CreateRealSonarLintProfile(); MockSonarQubeServer mockServer = CreateServer("valid.project", null, "valid.profile", testProfile); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "valid.project", null); // Assert CheckSettingsInvariants(actualSettings); logger.AssertWarningsLogged(0); logger.AssertErrorsLogged(0); CheckRuleset(actualSettings, rootDir); CheckExpectedAdditionalFiles(testProfile, actualSettings); // Check the additional file is valid XML Assert.AreEqual(1, actualSettings.AdditionalFilePaths.Count(), "Test setup error: expecting only one additional file. Check the sample export XML has not changed"); string filePath = actualSettings.AdditionalFilePaths.First(); CheckFileIsXml(filePath); }
private void CheckRuleset(AnalyzerSettings actualSettings, string rootTestDir, string language) { string.IsNullOrWhiteSpace(actualSettings.RuleSetFilePath).Should().BeFalse("Ruleset file path should be set"); Path.IsPathRooted(actualSettings.RuleSetFilePath).Should().BeTrue("Ruleset file path should be absolute"); File.Exists(actualSettings.RuleSetFilePath).Should().BeTrue("Specified ruleset file does not exist: {0}", actualSettings.RuleSetFilePath); TestContext.AddResultFile(actualSettings.RuleSetFilePath); CheckFileIsXml(actualSettings.RuleSetFilePath); Path.GetFileName(actualSettings.RuleSetFilePath).Should().Be(RoslynAnalyzerProvider.GetRoslynRulesetFileName(language), "Ruleset file does not have the expected name"); var expectedFilePath = GetExpectedRulesetFilePath(rootTestDir, language); actualSettings.RuleSetFilePath.Should().Be(expectedFilePath, "Ruleset was not written to the expected location"); var expectedContent = @"<?xml version=""1.0"" encoding=""utf-8""?> <RuleSet xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" Name=""Rules for SonarQube"" Description=""This rule set was automatically generated from SonarQube"" ToolsVersion=""14.0""> <Rules AnalyzerId=""SonarAnalyzer.CSharp"" RuleNamespace=""SonarAnalyzer.CSharp""> <Rule Id=""S1116"" Action=""Warning"" /> <Rule Id=""S1125"" Action=""Warning"" /> <Rule Id=""S1000"" Action=""None"" /> </Rules> <Rules AnalyzerId=""Wintellect.Analyzers"" RuleNamespace=""Wintellect.Analyzers""> <Rule Id=""Wintellect003"" Action=""Warning"" /> </Rules> </RuleSet>"; File.ReadAllText(actualSettings.RuleSetFilePath).Should().Be(expectedContent, "Ruleset file does not have the expected content: {0}", actualSettings.RuleSetFilePath); }
public void RoslynConfig_ValidProfile() { // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); WellKnownProfile testProfile = CreateValidCSharpProfile(); MockSonarQubeServer mockServer = CreateServer("valid.project", null, "valid.profile", testProfile); MockAnalyzerInstaller mockInstaller = new MockAnalyzerInstaller(); mockInstaller.AssemblyPathsToReturn = new HashSet <string>(new string[] { "c:\\assembly1.dll", "d:\\foo\\assembly2.dll" }); RoslynAnalyzerProvider testSubject = new RoslynAnalyzerProvider(mockInstaller, logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "valid.project", null); // Assert CheckSettingsInvariants(actualSettings); logger.AssertWarningsLogged(0); logger.AssertErrorsLogged(0); CheckRuleset(actualSettings, rootDir); CheckExpectedAdditionalFiles(testProfile, actualSettings); mockInstaller.AssertExpectedPluginsRequested(testProfile.Plugins); CheckExpectedAssemblies(actualSettings, "c:\\assembly1.dll", "d:\\foo\\assembly2.dll"); }
public void RoslynConfig_ValidProfile() { // Arrange string rootFolder = CreateTestFolders(); TestLogger logger = new TestLogger(); IList <ActiveRule> activeRules = createActiveRules(); IList <string> inactiveRules = createInactiveRules(); string language = RoslynAnalyzerProvider.CSharpLanguage; IDictionary <string, string> serverSettings = createServerSettings(); MockAnalyzerInstaller mockInstaller = new MockAnalyzerInstaller(); mockInstaller.AssemblyPathsToReturn = new HashSet <string>(new string[] { "c:\\assembly1.dll", "d:\\foo\\assembly2.dll" }); TeamBuildSettings settings = CreateSettings(rootFolder); RoslynAnalyzerProvider testSubject = new RoslynAnalyzerProvider(mockInstaller, logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzer(settings, serverSettings, activeRules, inactiveRules, language); // Assert CheckSettingsInvariants(actualSettings); logger.AssertWarningsLogged(0); logger.AssertErrorsLogged(0); CheckRuleset(actualSettings, rootFolder, language); CheckExpectedAdditionalFiles(rootFolder, language, actualSettings); CheckExpectedAssemblies(actualSettings, "c:\\assembly1.dll", "d:\\foo\\assembly2.dll"); List <string> plugins = new List <string>(); plugins.Add("wintellect"); plugins.Add("csharp"); mockInstaller.AssertExpectedPluginsRequested(plugins); }
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_SetupAnalyzers_ArgumentChecks() { // Arrange TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(this.TestContext.DeploymentDirectory); MockSonarQubeServer mockServer = CreateValidServer("valid.project", null, "valid.profile"); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act and assert (branch can be null) AssertException.Expects <ArgumentNullException>(() => testSubject.SetupAnalyzers(null, settings, "project", "branch")); AssertException.Expects <ArgumentNullException>(() => testSubject.SetupAnalyzers(mockServer, null, "project", "branch")); AssertException.Expects <ArgumentNullException>(() => testSubject.SetupAnalyzers(mockServer, settings, null, "branch")); }
public void RoslynConfig_NoActiveRules() { // Arrange TestLogger logger = new TestLogger(); IList <ActiveRule> activeRules = new List <ActiveRule>(); IList <string> inactiveRules = new List <string>(); string pluginKey = "csharp"; IDictionary <string, string> serverSettings = new Dictionary <string, string>(); TeamBuildSettings settings = CreateSettings(this.TestContext.DeploymentDirectory); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act and assert Assert.IsNull(testSubject.SetupAnalyzer(settings, serverSettings, activeRules, inactiveRules, pluginKey)); }
public void RoslynConfig_NoAssemblies() { // Arrange var rootFolder = CreateTestFolders(); var logger = new TestLogger(); IList <SonarRule> activeRules = createActiveRules(); IList <SonarRule> inactiveRules = createInactiveRules(); var language = RoslynAnalyzerProvider.CSharpLanguage; // missing properties to get plugin related properties var sonarProperties = new ListPropertiesProvider(new Dictionary <string, string> { { "wintellect.analyzerId", "Wintellect.Analyzers" }, { "wintellect.ruleNamespace", "Wintellect.Analyzers" }, { "sonaranalyzer-cs.analyzerId", "SonarAnalyzer.CSharp" }, { "sonaranalyzer-cs.ruleNamespace", "SonarAnalyzer.CSharp" } }); var mockInstaller = new MockAnalyzerInstaller { AnalyzerPluginsToReturn = new List <AnalyzerPlugin> { CreateAnalyzerPlugin("c:\\assembly1.dll", "d:\\foo\\assembly2.dll") } }; var settings = CreateSettings(rootFolder); var testSubject = new RoslynAnalyzerProvider(mockInstaller, logger); // Act var actualSettings = testSubject.SetupAnalyzer(settings, sonarProperties, activeRules, inactiveRules, language); // Assert CheckSettingsInvariants(actualSettings); logger.AssertWarningsLogged(0); logger.AssertErrorsLogged(0); CheckRuleset(actualSettings.RuleSetFilePath, rootFolder, language); CheckTestRuleset(actualSettings.TestProjectRuleSetFilePath, rootFolder, language); actualSettings.AnalyzerPlugins.Should().BeEmpty(); var plugins = new List <string>(); mockInstaller.AssertExpectedPluginsRequested(plugins); }
public void RoslynConfig_ProjectNotInProfile() { // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); MockSonarQubeServer mockServer = CreateValidServer("valid.project", null, "valid.profile"); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "unknown.project", null); // Assert AssertAnalyzerSetupNotPerformed(actualSettings, rootDir); logger.AssertErrorsLogged(0); }
public void RoslynConfig_SetupAnalyzers_ArgumentChecks() { // Arrange TestLogger logger = new TestLogger(); IList <ActiveRule> activeRules = new List <ActiveRule>(); IList <string> inactiveRules = new List <string>(); string pluginKey = RoslynAnalyzerProvider.CSharpPluginKey; IDictionary <string, string> serverSettings = new Dictionary <string, string>(); TeamBuildSettings settings = CreateSettings(this.TestContext.DeploymentDirectory); RoslynAnalyzerProvider testSubject = CreateTestSubject(logger); // Act and assert AssertException.Expects <ArgumentNullException>(() => testSubject.SetupAnalyzer(null, serverSettings, activeRules, inactiveRules, pluginKey)); AssertException.Expects <ArgumentNullException>(() => testSubject.SetupAnalyzer(settings, null, activeRules, inactiveRules, pluginKey)); AssertException.Expects <ArgumentNullException>(() => testSubject.SetupAnalyzer(settings, serverSettings, null, inactiveRules, pluginKey)); AssertException.Expects <ArgumentNullException>(() => testSubject.SetupAnalyzer(settings, serverSettings, activeRules, null, pluginKey)); AssertException.Expects <ArgumentNullException>(() => testSubject.SetupAnalyzer(settings, serverSettings, activeRules, inactiveRules, null)); }
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_NoAssemblies() { // Arrange var rootFolder = CreateTestFolders(); var logger = new TestLogger(); IList <ActiveRule> activeRules = createActiveRules(); IList <string> inactiveRules = createInactiveRules(); var language = RoslynAnalyzerProvider.CSharpLanguage; // missing properties to get plugin related properties IDictionary <string, string> serverSettings = new Dictionary <string, string> { { "wintellect.analyzerId", "Wintellect.Analyzers" }, { "wintellect.ruleNamespace", "Wintellect.Analyzers" }, { "sonaranalyzer-cs.analyzerId", "SonarAnalyzer.CSharp" }, { "sonaranalyzer-cs.ruleNamespace", "SonarAnalyzer.CSharp" } }; var mockInstaller = new MockAnalyzerInstaller { AssemblyPathsToReturn = new HashSet <string>(new string[] { "c:\\assembly1.dll", "d:\\foo\\assembly2.dll" }) }; var settings = CreateSettings(rootFolder); var testSubject = new RoslynAnalyzerProvider(mockInstaller, logger); // Act var actualSettings = testSubject.SetupAnalyzer(settings, serverSettings, activeRules, inactiveRules, language); // Assert CheckSettingsInvariants(actualSettings); logger.AssertWarningsLogged(0); logger.AssertErrorsLogged(0); CheckRuleset(actualSettings, rootFolder, language); Assert.IsTrue(!actualSettings.AnalyzerAssemblyPaths.Any()); var plugins = new List <string>(); mockInstaller.AssertExpectedPluginsRequested(plugins); }
public void RoslynConfig_ValidProfile_BranchSpecific() { // Arrange string rootDir = CreateTestFolders(); TestLogger logger = new TestLogger(); TeamBuildSettings settings = CreateSettings(rootDir); // Differentiate the branch-specific and non-branch-specific profiles WellKnownProfile nonBranchSpecificProfile = CreateValidCSharpProfile(); WellKnownProfile branchSpecificProfile = CreateValidCSharpProfile(); branchSpecificProfile.AssemblyFilePaths.Add("e:\\assembly3.dll"); MockSonarQubeServer mockServer = CreateServer("valid.project", null, "valid.profile", nonBranchSpecificProfile); AddWellKnownProfileToServer("valid.project", "aBranch", "valid.anotherProfile", branchSpecificProfile, mockServer); MockAnalyzerInstaller mockInstaller = new MockAnalyzerInstaller(); mockInstaller.AssemblyPathsToReturn = new HashSet <string>(new string[] { "c:\\assembly1.dll", "d:\\foo\\assembly2.dll", "e:\\assembly3.dll" }); RoslynAnalyzerProvider testSubject = new RoslynAnalyzerProvider(mockInstaller, logger); // Act AnalyzerSettings actualSettings = testSubject.SetupAnalyzers(mockServer, settings, "valid.project", "aBranch"); // Assert CheckSettingsInvariants(actualSettings); logger.AssertWarningsLogged(0); logger.AssertErrorsLogged(0); CheckRuleset(actualSettings, rootDir); CheckExpectedAdditionalFiles(branchSpecificProfile, actualSettings); mockInstaller.AssertExpectedPluginsRequested(branchSpecificProfile.Plugins); CheckExpectedAssemblies(actualSettings, "c:\\assembly1.dll", "d:\\foo\\assembly2.dll", "e:\\assembly3.dll"); }
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); }
private static RoslynAnalyzerProvider CreateTestSubject(ILogger logger) { var testSubject = new RoslynAnalyzerProvider(new MockAnalyzerInstaller(), logger); return(testSubject); }
public void RoslynConfig_ValidProfile() { // Arrange var rootFolder = CreateTestFolders(); var logger = new TestLogger(); IList <SonarRule> activeRules = createActiveRules(); IList <SonarRule> inactiveRules = createInactiveRules(); var language = RoslynAnalyzerProvider.CSharpLanguage; var mockInstaller = new MockAnalyzerInstaller { AnalyzerPluginsToReturn = new List <AnalyzerPlugin> { CreateAnalyzerPlugin("c:\\assembly1.dll"), CreateAnalyzerPlugin("d:\\foo\\assembly2.dll") } }; var settings = CreateSettings(rootFolder); var sonarProperties = new ListPropertiesProvider(new Dictionary <string, string> { // for ruleset { "wintellect.analyzerId", "Wintellect.Analyzers" }, { "wintellect.ruleNamespace", "Wintellect.Analyzers" }, // to fetch assemblies { "wintellect.pluginKey", "wintellect" }, { "wintellect.pluginVersion", "1.13.0" }, { "wintellect.staticResourceName", "SonarAnalyzer.zip" }, { "sonaranalyzer-cs.analyzerId", "SonarAnalyzer.CSharp" }, { "sonaranalyzer-cs.ruleNamespace", "SonarAnalyzer.CSharp" }, { "sonaranalyzer-cs.pluginKey", "csharp" }, { "sonaranalyzer-cs.staticResourceName", "SonarAnalyzer.zip" }, { "sonaranalyzer-cs.nuget.packageId", "SonarAnalyzer.CSharp" }, { "sonaranalyzer-cs.pluginVersion", "1.13.0" }, { "sonaranalyzer-cs.nuget.packageVersion", "1.13.0" }, // Extra properties - those started sonar.cs should be included, the others ignored { "sonar.vb.testPropertyPattern", "foo" }, { "sonar.cs.testPropertyPattern", "foo" }, { "sonar.sources", "**/*.*" }, { "sonar.cs.foo", "bar" } }); var expectedSonarLintXml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <AnalysisInput> <Settings> <Setting> <Key>sonar.cs.testPropertyPattern</Key> <Value>foo</Value> </Setting> <Setting> <Key>sonar.cs.foo</Key> <Value>bar</Value> </Setting> </Settings> <Rules> <Rule> <Key>S1116</Key> <Parameters> <Parameter> <Key>key</Key> <Value>value</Value> </Parameter> </Parameters> </Rule> <Rule> <Key>S1125</Key> </Rule> </Rules> <Files> </Files> </AnalysisInput> "; var testSubject = new RoslynAnalyzerProvider(mockInstaller, logger); // Act var actualSettings = testSubject.SetupAnalyzer(settings, sonarProperties, activeRules, inactiveRules, language); // Assert CheckSettingsInvariants(actualSettings); logger.AssertWarningsLogged(0); logger.AssertErrorsLogged(0); CheckRuleset(actualSettings.RuleSetFilePath, rootFolder, language); CheckTestRuleset(actualSettings.TestProjectRuleSetFilePath, rootFolder, language); // Currently, only SonarLint.xml is written var filePaths = actualSettings.AdditionalFilePaths; filePaths.Should().ContainSingle(); CheckExpectedAdditionalFileExists("SonarLint.xml", expectedSonarLintXml, actualSettings); CheckExpectedAssemblies(actualSettings, "c:\\assembly1.dll", "d:\\foo\\assembly2.dll"); var plugins = new List <string> { "wintellect", "csharp" }; mockInstaller.AssertExpectedPluginsRequested(plugins); }
private static string GetExpectedRulesetFilePath(string rootDir, string language) { return(Path.Combine(GetConfPath(rootDir), RoslynAnalyzerProvider.GetRoslynRulesetFileName(language))); }
public void RoslynConfig_GetRoslynFormatName() { RoslynAnalyzerProvider.GetRoslynFormatName(RoslynAnalyzerProvider.CSharpLanguage).Should().Be("roslyn-cs"); }
public void RoslynConfig_GetRoslynFormatName() { Assert.AreEqual("roslyn-cs", RoslynAnalyzerProvider.GetRoslynFormatName(RoslynAnalyzerProvider.CSharpLanguage)); }