diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs index eb69cb2eb2..a96687ca0b 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs @@ -68,5 +68,7 @@ namespace ICSharpCode.PackageManagement.Design { return FakeMSBuildProjects; } + + public bool IsOpen { get; set; } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs index 92db4256a7..2d7d75ee5c 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs @@ -15,5 +15,7 @@ namespace ICSharpCode.PackageManagement IPackageManagementProject GetProject(PackageSource source, string projectName); IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName); IEnumerable GetMSBuildProjects(); + + bool IsOpen { get; } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs index 60b329f8df..d56fbcdb40 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs @@ -108,9 +108,8 @@ namespace ICSharpCode.PackageManagement return projectService.GetOpenProjects(); } - public void RunPackageInitializationScripts() - { - + public bool IsOpen { + get { return projectService.OpenSolution != null; } } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsConsole.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsConsole.cs index f546abde0d..11eba8b0d4 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsConsole.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsConsole.cs @@ -2,8 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; -using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Gui; namespace ICSharpCode.PackageManagement.Scripting { @@ -19,21 +17,9 @@ namespace ICSharpCode.PackageManagement.Scripting public void ExecuteCommand(string command) { - CreateConsolePadIfConsoleHostNotRunning(); - consoleHost.ScriptingConsole.SendLine(command); - } - - void CreateConsolePadIfConsoleHostNotRunning() - { - if (!consoleHost.IsRunning) { - CreateConsolePad(); + if (consoleHost.IsRunning) { + consoleHost.ScriptingConsole.SendLine(command); } } - - protected virtual void CreateConsolePad() - { - PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(PackageManagementConsolePad)); - PackageManagementConsolePad consolePad = pad.PadContent.Control as PackageManagementConsolePad; - } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs index 898a181c99..a9b52de56e 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs @@ -94,6 +94,7 @@ namespace ICSharpCode.PackageManagement.Scripting { InitPowerShell(); WriteInfoBeforeFirstPrompt(); + InitializePackageScriptsForOpenSolution(); WritePrompt(); ProcessUserCommands(); } @@ -131,6 +132,14 @@ namespace ICSharpCode.PackageManagement.Scripting powerShellHost.ExecuteCommand(command); } + void InitializePackageScriptsForOpenSolution() + { + if (Solution.IsOpen) { + string command = "Invoke-InitializePackages"; + powerShellHost.ExecuteCommand(command); + } + } + void WriteInfoBeforeFirstPrompt() { WriteNuGetVersionInfo(); diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj index febc8f97ab..30648f6c98 100644 --- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj +++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj @@ -98,7 +98,6 @@ - diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageInitializationScriptsConsole.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageInitializationScriptsConsole.cs deleted file mode 100644 index 3471136e46..0000000000 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageInitializationScriptsConsole.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) -// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) - -using System; -using ICSharpCode.PackageManagement.Scripting; -using ICSharpCode.Scripting.Tests.Utils; - -namespace PackageManagement.Tests.Helpers -{ - public class TestablePackageInitializationScriptsConsole : PackageInitializationScriptsConsole - { - public FakePackageManagementConsoleHost FakeConsoleHost; - public FakeScriptingConsole FakeScriptingConsole; - - public TestablePackageInitializationScriptsConsole() - : this(new FakePackageManagementConsoleHost()) - { - } - - public TestablePackageInitializationScriptsConsole(FakePackageManagementConsoleHost consoleHost) - : base(consoleHost) - { - FakeConsoleHost = consoleHost; - FakeScriptingConsole = new FakeScriptingConsole(); - FakeConsoleHost.ScriptingConsole = FakeScriptingConsole; - } - - public bool IsCreateConsolePadCalled; - - protected override void CreateConsolePad() - { - IsCreateConsolePadCalled = true; - } - } -} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs index 06e606f1b2..8ab5cfbdfb 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs @@ -255,5 +255,27 @@ namespace PackageManagement.Tests CollectionAssert.AreEqual(expectedProjects, projects); } + + [Test] + public void IsOpen_NoSolutionOpen_ReturnsFalse() + { + CreateSolution(); + fakeProjectService.OpenSolution = null; + + bool open = solution.IsOpen; + + Assert.IsFalse(open); + } + + [Test] + public void IsOpen_SolutionIsOpen_ReturnsTrue() + { + CreateSolution(); + fakeProjectService.OpenSolution = new Solution(); + + bool open = solution.IsOpen; + + Assert.IsTrue(open); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsConsoleTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsConsoleTests.cs index c495eefc11..c20a977a9d 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsConsoleTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsConsoleTests.cs @@ -12,15 +12,16 @@ namespace PackageManagement.Tests.Scripting [TestFixture] public class PackageInitializationScriptsConsoleTests { - TestablePackageInitializationScriptsConsole console; + PackageInitializationScriptsConsole console; FakePackageManagementConsoleHost fakeConsoleHost; FakeScriptingConsole fakeScriptingConsole; void CreateConsole() { - console = new TestablePackageInitializationScriptsConsole(); - fakeConsoleHost = console.FakeConsoleHost; - fakeScriptingConsole = console.FakeScriptingConsole; + fakeConsoleHost = new FakePackageManagementConsoleHost(); + fakeScriptingConsole = new FakeScriptingConsole(); + fakeConsoleHost.ScriptingConsole = fakeScriptingConsole; + console = new PackageInitializationScriptsConsole(fakeConsoleHost); } [Test] @@ -36,27 +37,15 @@ namespace PackageManagement.Tests.Scripting } [Test] - public void ExecuteCommand_ConsoleHostAlreadyRunning_ConsolePadIsNotCreated() - { - CreateConsole(); - fakeConsoleHost.IsRunning = true; - console.ExecuteCommand("Test"); - - bool created = console.IsCreateConsolePadCalled; - - Assert.IsFalse(created); - } - - [Test] - public void ExecuteCommand_ConsoleHostNotRunning_ConsolePadIsCreated() + public void ExecuteCommand_ConsoleHostNotRunning_CommandNotSentToScriptingConsole() { CreateConsole(); fakeConsoleHost.IsRunning = false; console.ExecuteCommand("Test"); - bool created = console.IsCreateConsolePadCalled; + string command = fakeScriptingConsole.TextPassedToSendLine; - Assert.IsTrue(created); + Assert.IsNull(command); } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs index ef40eeb225..412cd04769 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs @@ -19,14 +19,15 @@ namespace PackageManagement.Tests.Scripting PackageInitializationScriptsRunnerForOpenedSolution runner; FakePackageManagementConsoleHost fakeConsoleHost; FakeScriptingConsole fakeScriptingConsole; - TestablePackageInitializationScriptsConsole scriptsConsole; + PackageInitializationScriptsConsole scriptsConsole; void CreateRunner() { fakeProjectService = new FakePackageManagementProjectService(); - scriptsConsole = new TestablePackageInitializationScriptsConsole(); - fakeConsoleHost = scriptsConsole.FakeConsoleHost; - fakeScriptingConsole = scriptsConsole.FakeScriptingConsole; + fakeConsoleHost = new FakePackageManagementConsoleHost(); + fakeScriptingConsole = new FakeScriptingConsole(); + fakeConsoleHost.ScriptingConsole = fakeScriptingConsole; + scriptsConsole = new PackageInitializationScriptsConsole(fakeConsoleHost); fakeScriptsFactory = new FakePackageInitializationScriptsFactory(); runner = new PackageInitializationScriptsRunnerForOpenedSolution(fakeProjectService, scriptsConsole, fakeScriptsFactory); } @@ -55,6 +56,7 @@ namespace PackageManagement.Tests.Scripting { CreateRunner(); fakeScriptsFactory.FakePackageInitializationScripts.AnyReturnValue = true; + fakeConsoleHost.IsRunning = true; OpenSolution(); string command = fakeScriptingConsole.TextPassedToSendLine; @@ -68,6 +70,7 @@ namespace PackageManagement.Tests.Scripting { CreateRunner(); fakeScriptsFactory.FakePackageInitializationScripts.AnyReturnValue = false; + fakeConsoleHost.IsRunning = true; OpenSolution(); string command = fakeScriptingConsole.TextPassedToSendLine; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs index 7ae130a5fc..b79f31a514 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs @@ -469,5 +469,33 @@ namespace PackageManagement.Tests.Scripting Assert.IsTrue(running); } + + [Test] + public void Run_SolutionOpenWhenConsoleRun_InvokeInitializePackagesCmdletIsRun() + { + CreateHost(); + fakeSolution.IsOpen = true; + RunHost(); + + string expectedExecutedCommand = "Invoke-InitializePackages"; + + bool executed = powerShellHost.AllCommandsPassedToExecuteCommand.Contains(expectedExecutedCommand); + + Assert.IsTrue(executed); + } + + [Test] + public void Run_SolutionIsNotOpenWhenConsoleRun_InvokeInitializePackagesCmdletIsNotRun() + { + CreateHost(); + fakeSolution.IsOpen = false; + RunHost(); + + string command = "Invoke-InitializePackages"; + + bool executed = powerShellHost.AllCommandsPassedToExecuteCommand.Contains(command); + + Assert.IsFalse(executed); + } } }