Browse Source

Create package management console pad before running package initialization PowerShell scripts.

pull/15/head
Matt Ward 14 years ago
parent
commit
625c7568a8
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 3
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs
  4. 39
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsConsole.cs
  5. 16
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolution.cs
  6. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  8. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs
  9. 35
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageInitializationScriptsConsole.cs
  10. 62
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsConsoleTests.cs
  11. 9
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs
  12. 19
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

1
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -197,6 +197,7 @@ @@ -197,6 +197,7 @@
<Compile Include="Src\PackageManagementTaskFactory.cs" />
<Compile Include="Src\Scripting\ISolutionPackageRepository.cs" />
<Compile Include="Src\Scripting\PackageInitializationScripts.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsConsole.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsFactory.cs" />
<Compile Include="Src\SolutionPackageRepositoryPath.cs" />
<Compile Include="Src\PackageSourceConverter.cs" />

3
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs

@ -26,8 +26,7 @@ namespace ICSharpCode.PackageManagement @@ -26,8 +26,7 @@ namespace ICSharpCode.PackageManagement
solution = new PackageManagementSolution(registeredPackageRepositories, packageManagementEvents);
consoleHost = new PackageManagementConsoleHost(solution, registeredPackageRepositories);
projectBrowserRefresher = new ProjectBrowserRefresher(projectService, packageManagementEvents);
packageInitializationScriptsRunner =
new PackageInitializationScriptsRunnerForOpenedSolution(projectService, consoleHost);
packageInitializationScriptsRunner = new PackageInitializationScriptsRunnerForOpenedSolution(projectService);
}
public static PackageManagementOptions Options {

2
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs

@ -16,7 +16,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -16,7 +16,7 @@ namespace ICSharpCode.PackageManagement.Scripting
PackageSource ActivePackageSource { get; set; }
IScriptingConsole ScriptingConsole { get; set; }
IPackageManagementSolution Solution { get; }
IPowerShellHost PowerShellHost { get; }
bool IsRunning { get; }
void Clear();
void WritePrompt();

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

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
// 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.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement.Scripting
{
public class PackageInitializationScriptsConsole
{
IPackageManagementConsoleHost consoleHost;
public PackageInitializationScriptsConsole(
IPackageManagementConsoleHost consoleHost)
{
this.consoleHost = consoleHost;
}
public void ExecuteCommand(string command)
{
CreateConsolePadIfConsoleHostNotRunning();
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;
}
}
}

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

@ -9,22 +9,24 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -9,22 +9,24 @@ namespace ICSharpCode.PackageManagement.Scripting
public class PackageInitializationScriptsRunnerForOpenedSolution
{
IPackageInitializationScriptsFactory scriptsFactory;
IPackageManagementConsoleHost consoleHost;
PackageInitializationScriptsConsole scriptsConsole;
public PackageInitializationScriptsRunnerForOpenedSolution(
IPackageManagementProjectService projectService,
IPackageManagementConsoleHost consoleHost)
: this(projectService, consoleHost, new PackageInitializationScriptsFactory())
IPackageManagementProjectService projectService)
: this(
projectService,
new PackageInitializationScriptsConsole(PackageManagementServices.ConsoleHost),
new PackageInitializationScriptsFactory())
{
}
public PackageInitializationScriptsRunnerForOpenedSolution(
IPackageManagementProjectService projectService,
IPackageManagementConsoleHost consoleHost,
PackageInitializationScriptsConsole scriptsConsole,
IPackageInitializationScriptsFactory scriptsFactory)
{
projectService.SolutionLoaded += SolutionLoaded;
this.consoleHost = consoleHost;
this.scriptsConsole = scriptsConsole;
this.scriptsFactory = scriptsFactory;
}
@ -49,7 +51,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -49,7 +51,7 @@ namespace ICSharpCode.PackageManagement.Scripting
void RunInitializePackagesCmdlet()
{
string command = "Invoke-InitializePackages";
consoleHost.ScriptingConsole.SendLine(command);
scriptsConsole.ExecuteCommand(command);
}
IPackageInitializationScripts CreatePackageInitializationScripts(Solution solution)

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

@ -45,6 +45,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -45,6 +45,7 @@ namespace ICSharpCode.PackageManagement.Scripting
{
}
public bool IsRunning { get; private set; }
public IProject DefaultProject { get; set; }
public PackageSource ActivePackageSource {
@ -55,10 +56,6 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -55,10 +56,6 @@ namespace ICSharpCode.PackageManagement.Scripting
public IScriptingConsole ScriptingConsole { get; set; }
public IPackageManagementSolution Solution { get; private set; }
public IPowerShellHost PowerShellHost {
get { return powerShellHost; }
}
public void Dispose()
{
if (ScriptingConsole != null) {
@ -85,6 +82,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -85,6 +82,7 @@ namespace ICSharpCode.PackageManagement.Scripting
{
thread = CreateThread(RunSynchronous);
thread.Start();
IsRunning = true;
}
protected virtual IThread CreateThread(ThreadStart threadStart)

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

@ -98,6 +98,7 @@ @@ -98,6 +98,7 @@
<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" />
@ -175,6 +176,7 @@ @@ -175,6 +176,7 @@
<Compile Include="Src\PackageManagementOutputMessagesViewTests.cs" />
<Compile Include="Src\PackageManagementSolutionTests.cs" />
<Compile Include="Src\PackageRepositoryCacheTests.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsConsoleTests.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsTests.cs" />
<Compile Include="Src\SolutionPackageRepositoryPathTests.cs" />
<Compile Include="Src\PackageSourceViewModelTests.cs" />

6
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs

@ -95,10 +95,6 @@ namespace PackageManagement.Tests.Helpers @@ -95,10 +95,6 @@ namespace PackageManagement.Tests.Helpers
return PackageSourceToReturnFromGetActivePackageSource;
}
public FakePowerShellHost FakePowerShellHost = new FakePowerShellHost();
public IPowerShellHost PowerShellHost {
get { return FakePowerShellHost; }
}
public bool IsRunning { get; set; }
}
}

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

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

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

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
// 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;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.Scripting
{
[TestFixture]
public class PackageInitializationScriptsConsoleTests
{
TestablePackageInitializationScriptsConsole console;
FakePackageManagementConsoleHost fakeConsoleHost;
FakeScriptingConsole fakeScriptingConsole;
void CreateConsole()
{
console = new TestablePackageInitializationScriptsConsole();
fakeConsoleHost = console.FakeConsoleHost;
fakeScriptingConsole = console.FakeScriptingConsole;
}
[Test]
public void ExecuteCommand_ConsoleHostAlreadyRunning_CommandSentToScriptingConsole()
{
CreateConsole();
fakeConsoleHost.IsRunning = true;
console.ExecuteCommand("Test");
string command = fakeScriptingConsole.TextPassedToSendLine;
Assert.AreEqual("Test", command);
}
[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()
{
CreateConsole();
fakeConsoleHost.IsRunning = false;
console.ExecuteCommand("Test");
bool created = console.IsCreateConsolePadCalled;
Assert.IsTrue(created);
}
}
}

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

@ -19,15 +19,16 @@ namespace PackageManagement.Tests.Scripting @@ -19,15 +19,16 @@ namespace PackageManagement.Tests.Scripting
PackageInitializationScriptsRunnerForOpenedSolution runner;
FakePackageManagementConsoleHost fakeConsoleHost;
FakeScriptingConsole fakeScriptingConsole;
TestablePackageInitializationScriptsConsole scriptsConsole;
void CreateRunner()
{
fakeProjectService = new FakePackageManagementProjectService();
fakeConsoleHost = new FakePackageManagementConsoleHost();
fakeScriptingConsole = new FakeScriptingConsole();
fakeConsoleHost.ScriptingConsole = fakeScriptingConsole;
scriptsConsole = new TestablePackageInitializationScriptsConsole();
fakeConsoleHost = scriptsConsole.FakeConsoleHost;
fakeScriptingConsole = scriptsConsole.FakeScriptingConsole;
fakeScriptsFactory = new FakePackageInitializationScriptsFactory();
runner = new PackageInitializationScriptsRunnerForOpenedSolution(fakeProjectService, fakeConsoleHost, fakeScriptsFactory);
runner = new PackageInitializationScriptsRunnerForOpenedSolution(fakeProjectService, scriptsConsole, fakeScriptsFactory);
}
Solution OpenSolution()

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

@ -450,5 +450,24 @@ namespace PackageManagement.Tests.Scripting @@ -450,5 +450,24 @@ namespace PackageManagement.Tests.Scripting
CollectionAssert.AreEqual(expectedTextPassedToWrite, actualTextPassedToWrite);
}
[Test]
public void IsRunning_BeforeRunCalled_ReturnsFalse()
{
CreateHost();
bool running = host.IsRunning;
Assert.IsFalse(running);
}
[Test]
public void IsRunning_AfterRunCalled_ReturnsFalse()
{
CreateHost();
RunHost();
bool running = host.IsRunning;
Assert.IsTrue(running);
}
}
}

Loading…
Cancel
Save