diff --git a/src/SLCore.UnitTests/Listener/BranchListenerTests.cs b/src/SLCore.UnitTests/Listener/BranchListenerTests.cs new file mode 100644 index 0000000000..0dfb7149d0 --- /dev/null +++ b/src/SLCore.UnitTests/Listener/BranchListenerTests.cs @@ -0,0 +1,74 @@ +/* + * SonarLint for Visual Studio + * Copyright (C) 2016-2023 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +using System.Collections.Generic; +using System.Threading.Tasks; +using SonarLint.VisualStudio.SLCore.Core; +using SonarLint.VisualStudio.SLCore.Listener; +using SonarLint.VisualStudio.TestInfrastructure; + +namespace SonarLint.VisualStudio.SLCore.UnitTests.Listener +{ + [TestClass] + public class BranchListenerTests + { + [TestMethod] + public void MefCtor_CheckIsExported() + { + MefTestHelpers.CheckTypeCanBeImported(); + } + + [TestMethod] + public void Mef_CheckIsSingleton() + { + MefTestHelpers.CheckIsSingletonMefComponent(); + } + + [TestMethod] + public async Task MatchSonarProjectBranch_ReturnsMainBranch() + { + var param = new MatchSonarProjectBranchParams + { + configurationScopeId = "scopeId", + mainSonarBranchName = "mainBranch", + allSonarBranchesNames = new List { "branch1", "branch2", "mainBranch" } + }; + + var testSubject = new BranchListener(); + + var result = await testSubject.MatchSonarProjectBranch(param); + + result.matchedSonarBranch.Should().Be("mainBranch"); + } + + [TestMethod] + [DataRow(null)] + [DataRow(5)] + [DataRow("something")] + public void DidChangeMatchedSonarProjectBranch_ReturnsTaskCompleted(object parameter) + { + var testSubject = new BranchListener(); + + var result = testSubject.DidChangeMatchedSonarProjectBranch(parameter); + + result.Should().Be(Task.CompletedTask); + } + } +} diff --git a/src/SLCore/Listener/BranchListener.cs b/src/SLCore/Listener/BranchListener.cs new file mode 100644 index 0000000000..637b6ab602 --- /dev/null +++ b/src/SLCore/Listener/BranchListener.cs @@ -0,0 +1,64 @@ +/* + * SonarLint for Visual Studio + * Copyright (C) 2016-2023 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +using System.Collections.Generic; +using System.ComponentModel.Composition; +using System.Threading.Tasks; +using SonarLint.VisualStudio.SLCore.Core; + +namespace SonarLint.VisualStudio.SLCore.Listener +{ + [Export(typeof(ISLCoreListener))] + [PartCreationPolicy(CreationPolicy.Shared)] + public class BranchListener : ISLCoreListener + { + /// + /// Stub method for compability with SLCore. + /// + /// Parameter's here for compability we discard it + /// This will be implemented properly in the future when needed but features we support does not need branch awareness for now + public async Task MatchSonarProjectBranch(MatchSonarProjectBranchParams parameters) + { + return new MatchSonarProjectBranchResponse { matchedSonarBranch = parameters.mainSonarBranchName }; + } + + /// + /// Stub method for compability with SLCore. + /// + /// Parameter's here for compability we discard it + /// This will be implemented properly in the future when needed but features we support does not need branch awareness for now + public Task DidChangeMatchedSonarProjectBranch(object parameters) + { + return Task.CompletedTask; + } + } + + public class MatchSonarProjectBranchParams + { + public string configurationScopeId; + public string mainSonarBranchName; + public List allSonarBranchesNames; + } + + public class MatchSonarProjectBranchResponse + { + public string matchedSonarBranch; + } +}