Browse Source

Run the package initialize PowerShell scripts for the open solution when the package management console is opened for the first time.

pull/15/head
Matt Ward 15 years ago
parent
commit
80ddd955f2
  1. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs
  3. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs
  4. 16
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsConsole.cs
  5. 9
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  6. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  7. 35
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageInitializationScriptsConsole.cs
  8. 22
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs
  9. 27
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsConsoleTests.cs
  10. 11
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs
  11. 28
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs

@ -68,5 +68,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -68,5 +68,7 @@ namespace ICSharpCode.PackageManagement.Design
{
return FakeMSBuildProjects;
}
public bool IsOpen { get; set; }
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs

@ -15,5 +15,7 @@ namespace ICSharpCode.PackageManagement @@ -15,5 +15,7 @@ namespace ICSharpCode.PackageManagement
IPackageManagementProject GetProject(PackageSource source, string projectName);
IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName);
IEnumerable<IProject> GetMSBuildProjects();
bool IsOpen { get; }
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs

@ -108,9 +108,8 @@ namespace ICSharpCode.PackageManagement @@ -108,9 +108,8 @@ namespace ICSharpCode.PackageManagement
return projectService.GetOpenProjects();
}
public void RunPackageInitializationScripts()
{
public bool IsOpen {
get { return projectService.OpenSolution != null; }
}
}
}

16
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsConsole.cs

@ -2,8 +2,6 @@ @@ -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 @@ -19,21 +17,9 @@ namespace ICSharpCode.PackageManagement.Scripting
public void ExecuteCommand(string command)
{
CreateConsolePadIfConsoleHostNotRunning();
if (consoleHost.IsRunning) {
consoleHost.ScriptingConsole.SendLine(command);
}
void CreateConsolePadIfConsoleHostNotRunning()
{
if (!consoleHost.IsRunning) {
CreateConsolePad();
}
}
protected virtual void CreateConsolePad()
{
PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(PackageManagementConsolePad));
PackageManagementConsolePad consolePad = pad.PadContent.Control as PackageManagementConsolePad;
}
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs

@ -94,6 +94,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -94,6 +94,7 @@ namespace ICSharpCode.PackageManagement.Scripting
{
InitPowerShell();
WriteInfoBeforeFirstPrompt();
InitializePackageScriptsForOpenSolution();
WritePrompt();
ProcessUserCommands();
}
@ -131,6 +132,14 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -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();

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -98,7 +98,6 @@ @@ -98,7 +98,6 @@
<Compile Include="Src\Helpers\ProjectItemCollectionAssert.cs" />
<Compile Include="Src\Helpers\TestableAddPackageReferenceCommand.cs" />
<Compile Include="Src\Helpers\TestableDTEProject.cs" />
<Compile Include="Src\Helpers\TestablePackageInitializationScriptsConsole.cs" />
<Compile Include="Src\PackageFromRepositoryTests.cs" />
<Compile Include="Src\PackageManagementEventsTests.cs" />
<Compile Include="Src\PackageManagementLoggerTests.cs" />

35
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageInitializationScriptsConsole.cs

@ -1,35 +0,0 @@ @@ -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;
}
}
}

22
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs

@ -255,5 +255,27 @@ namespace PackageManagement.Tests @@ -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);
}
}
}

27
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsConsoleTests.cs

@ -12,15 +12,16 @@ namespace PackageManagement.Tests.Scripting @@ -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 @@ -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);
}
}
}

11
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs

@ -19,14 +19,15 @@ namespace PackageManagement.Tests.Scripting @@ -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 @@ -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 @@ -68,6 +70,7 @@ namespace PackageManagement.Tests.Scripting
{
CreateRunner();
fakeScriptsFactory.FakePackageInitializationScripts.AnyReturnValue = false;
fakeConsoleHost.IsRunning = true;
OpenSolution();
string command = fakeScriptingConsole.TextPassedToSendLine;

28
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

@ -469,5 +469,33 @@ namespace PackageManagement.Tests.Scripting @@ -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);
}
}
}

Loading…
Cancel
Save