Browse Source

Use script runner instead of running PowerShell scripts directly.

pull/15/head
Matt Ward 14 years ago
parent
commit
827bfdbcd1
  1. 2
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs
  2. 7
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/PackageManagementCmdlet.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs
  4. 2
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
  5. 6
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs
  6. 15
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/PackageManagementCmdletTests.cs
  7. 7
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UninstallPackageCmdletTests.cs
  8. 7
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs
  9. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  10. 14
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  11. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageScriptRunner.cs
  12. 16
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs
  13. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  14. 23
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScriptRunner.cs
  15. 8
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProcessPackageAction.cs
  16. 15
      src/AddIns/Misc/PackageManagement/Test/Src/ProcessPackageActionTests.cs
  17. 24
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs

2
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs

@ -65,7 +65,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -65,7 +65,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
action.PackageId = Id;
action.PackageVersion = Version;
action.IgnoreDependencies = IgnoreDependencies.IsPresent;
action.PackageScriptSession = this;
action.PackageScriptRunner = this;
return action;
}
}

7
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/PackageManagementCmdlet.cs

@ -9,7 +9,7 @@ using NuGet; @@ -9,7 +9,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement.Cmdlets
{
public abstract class PackageManagementCmdlet : PSCmdlet, ITerminatingCmdlet, IPackageScriptSession
public abstract class PackageManagementCmdlet : PSCmdlet, ITerminatingCmdlet, IPackageScriptSession, IPackageScriptRunner
{
IPackageManagementConsoleHost consoleHost;
ICmdletTerminatingError terminatingError;
@ -96,5 +96,10 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -96,5 +96,10 @@ namespace ICSharpCode.PackageManagement.Cmdlets
throw;
}
}
public void Run(IPackageScript script)
{
script.Execute(this);
}
}
}

2
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs

@ -67,7 +67,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -67,7 +67,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
action.PackageVersion = Version;
action.ForceRemove = Force.IsPresent;
action.RemoveDependencies = RemoveDependencies.IsPresent;
action.PackageScriptSession = this;
action.PackageScriptRunner = this;
return action;
}

2
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs

@ -65,7 +65,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -65,7 +65,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
action.PackageId = Id;
action.PackageVersion = Version;
action.UpdateDependencies = !IgnoreDependencies.IsPresent;
action.PackageScriptSession = this;
action.PackageScriptRunner = this;
return action;
}
}

6
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs

@ -216,7 +216,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -216,7 +216,7 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_PackageIdSpecified_CmdletUsedAsScriptSession()
public void ProcessRecord_PackageIdSpecified_CmdletUsedAsScriptRunner()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
@ -224,9 +224,9 @@ namespace PackageManagement.Cmdlets.Tests @@ -224,9 +224,9 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualSession = fakeInstallPackageAction.PackageScriptSession;
IPackageScriptRunner scriptRunner = fakeInstallPackageAction.PackageScriptRunner;
Assert.AreEqual(cmdlet, actualSession);
Assert.AreEqual(cmdlet, scriptRunner);
}
}
}

15
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/PackageManagementCmdletTests.cs

@ -2,8 +2,10 @@ @@ -2,8 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Scripting;
using NUnit.Framework;
using PackageManagement.Cmdlets.Tests.Helpers;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Cmdlets.Tests
{
@ -109,5 +111,18 @@ namespace PackageManagement.Cmdlets.Tests @@ -109,5 +111,18 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual("Test", name);
}
[Test]
public void Run_PackageScriptPassed_RunsScriptUsingCmdletAsSession()
{
CreateCmdlet();
var script = new FakePackageScript();
cmdlet.Run(script);
IPackageScriptSession session = script.SessionPassedToExecute;
Assert.AreEqual(cmdlet, session);
}
}
}

7
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UninstallPackageCmdletTests.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using System.Management.Automation;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using NUnit.Framework;
using PackageManagement.Cmdlets.Tests.Helpers;
using PackageManagement.Tests.Helpers;
@ -223,7 +224,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -223,7 +224,7 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_PackageIdSpecified_CmdletUsedAsScriptSession()
public void ProcessRecord_PackageIdSpecified_CmdletUsedAsScriptRunner()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
@ -231,9 +232,9 @@ namespace PackageManagement.Cmdlets.Tests @@ -231,9 +232,9 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualSession = uninstallPackageAction.PackageScriptSession;
IPackageScriptRunner scriptRunner = uninstallPackageAction.PackageScriptRunner;
Assert.AreEqual(cmdlet, actualSession);
Assert.AreEqual(cmdlet, scriptRunner);
}
}
}

7
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using System.Management.Automation;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using NUnit.Framework;
using PackageManagement.Cmdlets.Tests.Helpers;
using PackageManagement.Tests.Helpers;
@ -227,7 +228,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -227,7 +228,7 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_PackageIdSpecified_CmdletUsedAsScriptSession()
public void ProcessRecord_PackageIdSpecified_CmdletUsedAsScriptRunner()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
@ -235,9 +236,9 @@ namespace PackageManagement.Cmdlets.Tests @@ -235,9 +236,9 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualSession = fakeUpdatePackageAction.PackageScriptSession;
IPackageScriptRunner scriptRunner = fakeUpdatePackageAction.PackageScriptRunner;
Assert.AreEqual(cmdlet, actualSession);
Assert.AreEqual(cmdlet, scriptRunner);
}
}
}

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

@ -195,6 +195,7 @@ @@ -195,6 +195,7 @@
<Compile Include="Src\PackageManagementSolution.cs" />
<Compile Include="Src\PackageManagementTask.cs" />
<Compile Include="Src\PackageManagementTaskFactory.cs" />
<Compile Include="Src\Scripting\IPackageScriptRunner.cs" />
<Compile Include="Src\Scripting\ISolutionPackageRepository.cs" />
<Compile Include="Src\Scripting\PackageInitializationScripts.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsConsole.cs" />

14
src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.PackageManagement @@ -25,7 +25,7 @@ namespace ICSharpCode.PackageManagement
public IPackage Package { get; set; }
public Version PackageVersion { get; set; }
public string PackageId { get; set; }
public IPackageScriptSession PackageScriptSession { get; set; }
public IPackageScriptRunner PackageScriptRunner { get; set; }
protected void OnParentPackageInstalled()
{
@ -40,8 +40,8 @@ namespace ICSharpCode.PackageManagement @@ -40,8 +40,8 @@ namespace ICSharpCode.PackageManagement
public void Execute()
{
BeforeExecute();
if (PackageScriptSession != null) {
ExecuteWithSession();
if (PackageScriptRunner != null) {
ExecuteWithScriptRunner();
} else {
ExecuteCore();
}
@ -54,7 +54,7 @@ namespace ICSharpCode.PackageManagement @@ -54,7 +54,7 @@ namespace ICSharpCode.PackageManagement
GetPackageIfMissing();
}
void ExecuteWithSession()
void ExecuteWithScriptRunner()
{
using (RunPackageScriptsAction runScriptsAction = CreateRunPackageScriptsAction()) {
ExecuteCore();
@ -63,14 +63,14 @@ namespace ICSharpCode.PackageManagement @@ -63,14 +63,14 @@ namespace ICSharpCode.PackageManagement
RunPackageScriptsAction CreateRunPackageScriptsAction()
{
return CreateRunPackageScriptsAction(PackageScriptSession, Project);
return CreateRunPackageScriptsAction(PackageScriptRunner, Project);
}
protected virtual RunPackageScriptsAction CreateRunPackageScriptsAction(
IPackageScriptSession session,
IPackageScriptRunner scriptRunner,
IPackageManagementProject project)
{
return new RunPackageScriptsAction(session, project);
return new RunPackageScriptsAction(scriptRunner, project);
}
protected virtual void ExecuteCore()

12
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageScriptRunner.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// 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;
namespace ICSharpCode.PackageManagement.Scripting
{
public interface IPackageScriptRunner
{
void Run(IPackageScript script);
}
}

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

@ -10,22 +10,22 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -10,22 +10,22 @@ namespace ICSharpCode.PackageManagement.Scripting
{
IPackageManagementProject project;
IPackageScriptFactory scriptFactory;
IPackageScriptSession scriptSession;
IPackageScriptRunner scriptRunner;
public RunPackageScriptsAction(
IPackageScriptSession session,
IPackageScriptRunner scriptRunner,
IPackageManagementProject project)
: this(project, session, new PackageScriptFactory())
: this(project, scriptRunner, new PackageScriptFactory())
{
}
public RunPackageScriptsAction(
IPackageManagementProject project,
IPackageScriptSession session,
IPackageScriptRunner scriptRunner,
IPackageScriptFactory scriptFactory)
{
this.project = project;
this.scriptSession = session;
this.scriptRunner = scriptRunner;
this.scriptFactory = scriptFactory;
RegisterEvents();
@ -63,21 +63,21 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -63,21 +63,21 @@ namespace ICSharpCode.PackageManagement.Scripting
void RunInitScript(PackageOperationEventArgs e)
{
IPackageScript script = scriptFactory.CreatePackageInitializeScript(e.InstallPath);
script.Execute(scriptSession);
scriptRunner.Run(script);
}
void RunUninstallScript(PackageOperationEventArgs e)
{
IPackageScript script = scriptFactory.CreatePackageUninstallScript(e.InstallPath);
script.Project = project;
script.Execute(scriptSession);
scriptRunner.Run(script);
}
void RunInstallScript(PackageOperationEventArgs e)
{
IPackageScript script = scriptFactory.CreatePackageInstallScript(e.InstallPath);
script.Project = project;
script.Execute(scriptSession);
scriptRunner.Run(script);
}
public void Dispose()

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

@ -92,6 +92,7 @@ @@ -92,6 +92,7 @@
<Compile Include="Src\Helpers\FakePackageScriptFactory.cs" />
<Compile Include="Src\Helpers\FakePackageScriptFactoryWithPredefinedPackageScripts.cs" />
<Compile Include="Src\Helpers\FakePackageScriptFileName.cs" />
<Compile Include="Src\Helpers\FakePackageScriptRunner.cs" />
<Compile Include="Src\Helpers\FakePackageViewModelFactory.cs" />
<Compile Include="Src\Helpers\FakePowerShellSession.cs" />
<Compile Include="Src\Helpers\FakeSolutionPackageRepository.cs" />

23
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScriptRunner.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
// 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 System.Collections.Generic;
using ICSharpCode.PackageManagement.Scripting;
namespace PackageManagement.Tests.Helpers
{
public class FakePackageScriptRunner : IPackageScriptRunner
{
List<IPackageScript> ScriptsRun = new List<IPackageScript>();
public IPackageScript FirstScriptRun {
get { return ScriptsRun[0]; }
}
public void Run(IPackageScript script)
{
ScriptsRun.Add(script);
}
}
}

8
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProcessPackageAction.cs

@ -35,18 +35,18 @@ namespace PackageManagement.Tests.Helpers @@ -35,18 +35,18 @@ namespace PackageManagement.Tests.Helpers
}
public bool IsRunPackageScriptsActionCreated;
public IPackageScriptSession SessionPassedToCreateRunPackageScriptsAction;
public IPackageScriptRunner ScriptRunnerPassedToCreateRunPackageScriptsAction;
public IPackageManagementProject ProjectPassedToCreateRunPackageScriptsAction;
public RunPackageScriptsAction RunPackageScriptsAction;
protected override RunPackageScriptsAction CreateRunPackageScriptsAction(
IPackageScriptSession session,
IPackageScriptRunner scriptRunner,
IPackageManagementProject project)
{
IsRunPackageScriptsActionCreated = true;
SessionPassedToCreateRunPackageScriptsAction = session;
ScriptRunnerPassedToCreateRunPackageScriptsAction = scriptRunner;
ProjectPassedToCreateRunPackageScriptsAction = project;
RunPackageScriptsAction = base.CreateRunPackageScriptsAction(session, project);
RunPackageScriptsAction = base.CreateRunPackageScriptsAction(scriptRunner, project);
return RunPackageScriptsAction;
}

15
src/AddIns/Misc/PackageManagement/Test/Src/ProcessPackageActionTests.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
@ -66,16 +67,16 @@ namespace PackageManagement.Tests @@ -66,16 +67,16 @@ namespace PackageManagement.Tests
}
[Test]
public void Execute_MethodCalled_RunPackageScriptsActionCreatedUsingPackageScriptSession()
public void Execute_MethodCalled_RunPackageScriptsActionCreatedUsingPackageScriptRunner()
{
CreateAction();
var expectedSession = new FakePackageScriptSession();
action.PackageScriptSession = expectedSession;
var expectedRunner = new FakePackageScriptRunner();
action.PackageScriptRunner = expectedRunner;
action.Execute();
var actualSession = action.SessionPassedToCreateRunPackageScriptsAction;
IPackageScriptRunner actualRunner = action.ScriptRunnerPassedToCreateRunPackageScriptsAction;
Assert.AreEqual(expectedSession, actualSession);
Assert.AreEqual(expectedRunner, actualRunner);
}
[Test]
@ -84,7 +85,7 @@ namespace PackageManagement.Tests @@ -84,7 +85,7 @@ namespace PackageManagement.Tests
CreateAction();
var expectedProject = new FakePackageManagementProject();
action.Project = expectedProject;
action.PackageScriptSession = new FakePackageScriptSession();
action.PackageScriptRunner = new FakePackageScriptRunner();
action.Execute();
var actualProject = action.ProjectPassedToCreateRunPackageScriptsAction;
@ -96,7 +97,7 @@ namespace PackageManagement.Tests @@ -96,7 +97,7 @@ namespace PackageManagement.Tests
public void Execute_MethodCalled_RunPackageScriptsActionIsDisposed()
{
CreateAction();
action.PackageScriptSession = new FakePackageScriptSession();
action.PackageScriptRunner = new FakePackageScriptRunner();
action.Execute();
Assert.IsTrue(action.IsRunPackageScriptsActionDisposed);

24
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs

@ -16,14 +16,14 @@ namespace PackageManagement.Tests.Scripting @@ -16,14 +16,14 @@ namespace PackageManagement.Tests.Scripting
RunPackageScriptsAction action;
FakePackageManagementProject fakeProject;
FakePackageScriptFactory fakeScriptFactory;
FakePackageScriptSession fakeSession;
FakePackageScriptRunner fakeScriptRunner;
void CreateAction()
{
fakeProject = new FakePackageManagementProject();
fakeSession = new FakePackageScriptSession();
fakeScriptFactory = new FakePackageScriptFactory();
action = new RunPackageScriptsAction(fakeProject, fakeSession, fakeScriptFactory);
fakeScriptRunner = new FakePackageScriptRunner();
action = new RunPackageScriptsAction(fakeProject, fakeScriptRunner, fakeScriptFactory);
}
PackageOperationEventArgs CreatePackageOperationEventArgs()
@ -45,10 +45,10 @@ namespace PackageManagement.Tests.Scripting @@ -45,10 +45,10 @@ namespace PackageManagement.Tests.Scripting
var eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageInstalledEvent(eventArgs);
IPackageScriptSession session = fakeScriptFactory.FirstPackageInitializeScriptCreated.SessionPassedToExecute;
FakePackageScriptSession expectedSession = fakeSession;
IPackageScript actualScript = fakeScriptRunner.FirstScriptRun;
FakePackageScript expectedScript = fakeScriptFactory.FirstPackageInitializeScriptCreated;
Assert.AreEqual(expectedSession, session);
Assert.AreEqual(expectedScript, actualScript);
}
[Test]
@ -85,10 +85,10 @@ namespace PackageManagement.Tests.Scripting @@ -85,10 +85,10 @@ namespace PackageManagement.Tests.Scripting
var eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceAddedEvent(eventArgs);
IPackageScriptSession session = fakeScriptFactory.FirstPackageInstallScriptCreated.SessionPassedToExecute;
FakePackageScriptSession expectedSession = fakeSession;
IPackageScript actualScript = fakeScriptRunner.FirstScriptRun;
FakePackageScript expectedScript = fakeScriptFactory.FirstPackageInstallScriptCreated;
Assert.AreEqual(expectedSession, session);
Assert.AreEqual(expectedScript, actualScript);
}
[Test]
@ -136,10 +136,10 @@ namespace PackageManagement.Tests.Scripting @@ -136,10 +136,10 @@ namespace PackageManagement.Tests.Scripting
var eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovedEvent(eventArgs);
IPackageScriptSession session = fakeScriptFactory.FirstPackageUninstallScriptCreated.SessionPassedToExecute;
FakePackageScriptSession expectedSession = fakeSession;
IPackageScript actualScript = fakeScriptRunner.FirstScriptRun;
FakePackageScript expectedScript = fakeScriptFactory.FirstPackageUninstallScriptCreated;
Assert.AreEqual(expectedSession, session);
Assert.AreEqual(expectedScript, actualScript);
}
[Test]

Loading…
Cancel
Save