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 @@
<Compile Include="Src\PackageManagementTaskFactory.cs" /> <Compile Include="Src\PackageManagementTaskFactory.cs" />
<Compile Include="Src\Scripting\ISolutionPackageRepository.cs" /> <Compile Include="Src\Scripting\ISolutionPackageRepository.cs" />
<Compile Include="Src\Scripting\PackageInitializationScripts.cs" /> <Compile Include="Src\Scripting\PackageInitializationScripts.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsConsole.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsFactory.cs" /> <Compile Include="Src\Scripting\PackageInitializationScriptsFactory.cs" />
<Compile Include="Src\SolutionPackageRepositoryPath.cs" /> <Compile Include="Src\SolutionPackageRepositoryPath.cs" />
<Compile Include="Src\PackageSourceConverter.cs" /> <Compile Include="Src\PackageSourceConverter.cs" />

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

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

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

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

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

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

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

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

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

@ -98,6 +98,7 @@
<Compile Include="Src\Helpers\ProjectItemCollectionAssert.cs" /> <Compile Include="Src\Helpers\ProjectItemCollectionAssert.cs" />
<Compile Include="Src\Helpers\TestableAddPackageReferenceCommand.cs" /> <Compile Include="Src\Helpers\TestableAddPackageReferenceCommand.cs" />
<Compile Include="Src\Helpers\TestableDTEProject.cs" /> <Compile Include="Src\Helpers\TestableDTEProject.cs" />
<Compile Include="Src\Helpers\TestablePackageInitializationScriptsConsole.cs" />
<Compile Include="Src\PackageFromRepositoryTests.cs" /> <Compile Include="Src\PackageFromRepositoryTests.cs" />
<Compile Include="Src\PackageManagementEventsTests.cs" /> <Compile Include="Src\PackageManagementEventsTests.cs" />
<Compile Include="Src\PackageManagementLoggerTests.cs" /> <Compile Include="Src\PackageManagementLoggerTests.cs" />
@ -175,6 +176,7 @@
<Compile Include="Src\PackageManagementOutputMessagesViewTests.cs" /> <Compile Include="Src\PackageManagementOutputMessagesViewTests.cs" />
<Compile Include="Src\PackageManagementSolutionTests.cs" /> <Compile Include="Src\PackageManagementSolutionTests.cs" />
<Compile Include="Src\PackageRepositoryCacheTests.cs" /> <Compile Include="Src\PackageRepositoryCacheTests.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsConsoleTests.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsTests.cs" /> <Compile Include="Src\Scripting\PackageInitializationScriptsTests.cs" />
<Compile Include="Src\SolutionPackageRepositoryPathTests.cs" /> <Compile Include="Src\SolutionPackageRepositoryPathTests.cs" />
<Compile Include="Src\PackageSourceViewModelTests.cs" /> <Compile Include="Src\PackageSourceViewModelTests.cs" />

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

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

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

@ -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 @@
// 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
PackageInitializationScriptsRunnerForOpenedSolution runner; PackageInitializationScriptsRunnerForOpenedSolution runner;
FakePackageManagementConsoleHost fakeConsoleHost; FakePackageManagementConsoleHost fakeConsoleHost;
FakeScriptingConsole fakeScriptingConsole; FakeScriptingConsole fakeScriptingConsole;
TestablePackageInitializationScriptsConsole scriptsConsole;
void CreateRunner() void CreateRunner()
{ {
fakeProjectService = new FakePackageManagementProjectService(); fakeProjectService = new FakePackageManagementProjectService();
fakeConsoleHost = new FakePackageManagementConsoleHost(); scriptsConsole = new TestablePackageInitializationScriptsConsole();
fakeScriptingConsole = new FakeScriptingConsole(); fakeConsoleHost = scriptsConsole.FakeConsoleHost;
fakeConsoleHost.ScriptingConsole = fakeScriptingConsole; fakeScriptingConsole = scriptsConsole.FakeScriptingConsole;
fakeScriptsFactory = new FakePackageInitializationScriptsFactory(); fakeScriptsFactory = new FakePackageInitializationScriptsFactory();
runner = new PackageInitializationScriptsRunnerForOpenedSolution(fakeProjectService, fakeConsoleHost, fakeScriptsFactory); runner = new PackageInitializationScriptsRunnerForOpenedSolution(fakeProjectService, scriptsConsole, fakeScriptsFactory);
} }
Solution OpenSolution() Solution OpenSolution()

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

@ -450,5 +450,24 @@ namespace PackageManagement.Tests.Scripting
CollectionAssert.AreEqual(expectedTextPassedToWrite, actualTextPassedToWrite); 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