From 07fe2e57fc54b9133879a0d23eaa81709edb39e6 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sat, 13 Oct 2012 17:29:45 +0100 Subject: [PATCH] Implement EnvDTE.SolutionBuild.ActiveConfiguration --- .../Project/Src/EnvDTE/Solution.cs | 5 +++++ .../Project/Src/EnvDTE/SolutionBuild.cs | 2 +- .../Project/Src/EnvDTE/SolutionConfiguration.cs | 8 ++++++-- .../Test/Src/EnvDTE/SolutionBuildTests.cs | 17 +++++++++++++++++ .../Test/Src/Helpers/SolutionHelper.cs | 5 +++++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs index 86bd213214..e1d26cca24 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs @@ -85,5 +85,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE "StartupProject" }; } + + internal SolutionConfiguration GetActiveConfiguration() + { + return new SolutionConfiguration(solution.Preferences); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionBuild.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionBuild.cs index e367c8abc4..0945fe684d 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionBuild.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionBuild.cs @@ -19,7 +19,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE } public global::EnvDTE.SolutionConfiguration ActiveConfiguration { - get { throw new NotImplementedException(); } + get { return solution.GetActiveConfiguration(); } } /// diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionConfiguration.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionConfiguration.cs index 6693543403..9d16e5ace4 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionConfiguration.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionConfiguration.cs @@ -2,17 +2,21 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using ICSharpCode.SharpDevelop.Project; namespace ICSharpCode.PackageManagement.EnvDTE { public class SolutionConfiguration : MarshalByRefObject, global::EnvDTE.SolutionConfiguration { - public SolutionConfiguration() + SolutionPreferences preferences; + + public SolutionConfiguration(SolutionPreferences preferences) { + this.preferences = preferences; } public string Name { - get { throw new NotImplementedException(); } + get { return preferences.ActiveConfiguration; } } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionBuildTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionBuildTests.cs index b66536db84..813fde117a 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionBuildTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionBuildTests.cs @@ -34,6 +34,11 @@ namespace PackageManagement.Tests.EnvDTE solutionHelper.SetStartupProject(project); } + void SetActiveConfiguration(string name) + { + solutionHelper.SetActiveConfiguration(name); + } + [Test] public void StartupProjects_SolutionHasNoProjects_ReturnsEmptyArray() { @@ -56,5 +61,17 @@ namespace PackageManagement.Tests.EnvDTE CollectionAssert.AreEqual(expectedProjects, projects); } + + [Test] + public void ActiveConfiguration_SolutionHasDebugAsActiveConfig_ReturnsDebugForActiveConfigName() + { + CreateSolutionBuild(); + SetActiveConfiguration("Debug"); + + global::EnvDTE.SolutionConfiguration config = solutionBuild.ActiveConfiguration; + string name = config.Name; + + Assert.AreEqual("Debug", name); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SolutionHelper.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SolutionHelper.cs index 92ca7e49db..c1abb20b65 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SolutionHelper.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SolutionHelper.cs @@ -115,5 +115,10 @@ namespace PackageManagement.Tests.Helpers { MSBuildSolution.Preferences.StartupProject = project; } + + public void SetActiveConfiguration(string name) + { + MSBuildSolution.Preferences.ActiveConfiguration = name; + } } }