public void SonarLint_ValidRuleset()
        {
            // Arrange
            string              rootDir    = CreateTestFolders();
            TestLogger          logger     = new TestLogger();
            TeamBuildSettings   settings   = CreateSettings(rootDir);
            MockSonarQubeServer mockServer = CreateValidServer("valid.project", "valid.profile");

            // Act
            SonarLintAnalyzerProvider.SetupAnalyzers(mockServer, settings, "valid.project", logger);

            // Assert
            CheckRulesetExists(rootDir);
            CheckSonarLintBinariesExist(rootDir);
        }
        public void SonarLint_InvalidRuleset()
        {
            // Arrange
            string            rootDir  = CreateTestFolders();
            TestLogger        logger   = new TestLogger();
            TeamBuildSettings settings = CreateSettings(rootDir);

            MockSonarQubeServer mockServer = CreateValidServer("valid.project", "valid.profile");

            mockServer.Data.FindProfile("valid.profile", SonarLintAnalyzerProvider.CSharpLanguage).SetExport(SonarLintAnalyzerProvider.SonarLintProfileFormatName, "not a ruleset");

            // Act
            SonarLintAnalyzerProvider.SetupAnalyzers(mockServer, settings, "valid.project", logger);

            // Assert
            CheckRulesetDoesNotExist(rootDir);
            CheckBinariesDoNotExist(rootDir);
            logger.AssertErrorsLogged(1); // Expecting an error in this case: the profile exists but couldn't be retrieved
        }
        public void SonarLint_ProjectNotInProfile()
        {
            // Arrange
            string            rootDir  = CreateTestFolders();
            TestLogger        logger   = new TestLogger();
            TeamBuildSettings settings = CreateSettings(rootDir);

            MockSonarQubeServer mockServer = CreateValidServer("valid.project", "valid.profile");

            mockServer.Data.FindProfile("valid.profile", SonarLintAnalyzerProvider.CSharpLanguage).ActiveRules.Clear();

            // Act
            SonarLintAnalyzerProvider.SetupAnalyzers(mockServer, settings, "unknown.project", logger);

            // Assert
            CheckRulesetDoesNotExist(rootDir);
            CheckBinariesDoNotExist(rootDir);
            logger.AssertErrorsLogged(0);
        }
        public void SonarLint_PluginNotInstalled()
        {
            // Arrange
            string            rootDir  = CreateTestFolders();
            TestLogger        logger   = new TestLogger();
            TeamBuildSettings settings = CreateSettings(rootDir);

            MockSonarQubeServer mockServer = CreateValidServer("valid.project", "valid.profile");

            mockServer.Data.InstalledPlugins.Remove(SonarLintAnalyzerProvider.CSharpPluginKey);

            // Act
            SonarLintAnalyzerProvider.SetupAnalyzers(mockServer, settings, "valid.project", logger);

            // Assert
            CheckRulesetDoesNotExist(rootDir);
            CheckBinariesDoNotExist(rootDir);
            logger.AssertErrorsLogged(0);
        }