Browse Source

Fix null path error when uninstalling jQuery NuGet package.

Run uninstall PowerShell scripts before the NuGet package is
removed so the jQuery uninstall.ps1 script can find the Scripts
folder in the project when uninstalling.
pull/61/merge
Matt Ward 13 years ago
parent
commit
86a171505b
  1. 8
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  2. 14
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs
  4. 6
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs
  5. 26
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs
  6. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs
  7. 4
      src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs
  8. 6
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs
  9. 12
      src/AddIns/Misc/PackageManagement/Test/Src/RunAllProjectPackageScriptsActionTests.cs
  10. 20
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs

8
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -183,12 +183,12 @@ namespace ICSharpCode.PackageManagement.Design
} }
} }
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved; public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving;
public void FirePackageReferenceRemovedEvent(PackageOperationEventArgs e) public void FirePackageReferenceRemovingEvent(PackageOperationEventArgs e)
{ {
if (PackageReferenceRemoved != null) { if (PackageReferenceRemoving != null) {
PackageReferenceRemoved(this, e); PackageReferenceRemoving(this, e);
} }
} }

14
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs

@ -35,18 +35,18 @@ namespace ICSharpCode.PackageManagement.Design
} }
} }
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved; public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving;
protected virtual void OnPackageReferenceRemoved(IPackage package) protected virtual void OnPackageReferenceRemoving(IPackage package)
{ {
if (PackageReferenceRemoved != null) { if (PackageReferenceRemoving != null) {
PackageReferenceRemoved(this, new PackageOperationEventArgs(package, null, String.Empty)); PackageReferenceRemoving(this, new PackageOperationEventArgs(package, null, String.Empty));
} }
} }
#pragma warning disable 67 #pragma warning disable 67
public event EventHandler<PackageOperationEventArgs> PackageReferenceAdding; public event EventHandler<PackageOperationEventArgs> PackageReferenceAdding;
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving; public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved;
#pragma warning restore 67 #pragma warning restore 67
public IPackageRepository LocalRepository { get; set; } public IPackageRepository LocalRepository { get; set; }
@ -87,9 +87,9 @@ namespace ICSharpCode.PackageManagement.Design
OnPackageReferenceAdded(package); OnPackageReferenceAdded(package);
} }
public void FirePackageReferenceRemoved(IPackage package) public void FirePackageReferenceRemoving(IPackage package)
{ {
OnPackageReferenceRemoved(package); OnPackageReferenceRemoving(package);
} }
public void AddPackageReference(IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions) public void AddPackageReference(IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions)

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

@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement
event EventHandler<PackageOperationEventArgs> PackageInstalled; event EventHandler<PackageOperationEventArgs> PackageInstalled;
event EventHandler<PackageOperationEventArgs> PackageUninstalled; event EventHandler<PackageOperationEventArgs> PackageUninstalled;
event EventHandler<PackageOperationEventArgs> PackageReferenceAdded; event EventHandler<PackageOperationEventArgs> PackageReferenceAdded;
event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved; event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving;
string Name { get; } string Name { get; }
ILogger Logger { get; set; } ILogger Logger { get; set; }

6
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs

@ -64,9 +64,9 @@ namespace ICSharpCode.PackageManagement
remove { projectManager.PackageReferenceAdded -= value; } remove { projectManager.PackageReferenceAdded -= value; }
} }
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved { public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving {
add { projectManager.PackageReferenceRemoved += value; } add { projectManager.PackageReferenceRemoving += value; }
remove { projectManager.PackageReferenceRemoved -= value; } remove { projectManager.PackageReferenceRemoving -= value; }
} }
public bool IsPackageInstalled(IPackage package) public bool IsPackageInstalled(IPackage package)

26
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.PackageManagement.Scripting
List<EventHandler<PackageOperationEventArgs>> packageReferenceAddedHandlers = List<EventHandler<PackageOperationEventArgs>> packageReferenceAddedHandlers =
new List<EventHandler<PackageOperationEventArgs>>(); new List<EventHandler<PackageOperationEventArgs>>();
List<EventHandler<PackageOperationEventArgs>> packageReferenceRemovedHandlers = List<EventHandler<PackageOperationEventArgs>> packageReferenceRemovingHandlers =
new List<EventHandler<PackageOperationEventArgs>>(); new List<EventHandler<PackageOperationEventArgs>>();
public RunAllProjectPackageScriptsAction( public RunAllProjectPackageScriptsAction(
@ -68,7 +68,7 @@ namespace ICSharpCode.PackageManagement.Scripting
foreach (IPackageManagementProject project in projects) { foreach (IPackageManagementProject project in projects) {
RegisterPackageInstalledEvent(project); RegisterPackageInstalledEvent(project);
RegisterPackageReferenceAddedEvent(project); RegisterPackageReferenceAddedEvent(project);
RegisterPackageReferenceRemovedEvent(project); RegisterPackageReferenceRemovingEvent(project);
} }
} }
@ -88,12 +88,12 @@ namespace ICSharpCode.PackageManagement.Scripting
project.PackageReferenceAdded += referenceAddedHandler; project.PackageReferenceAdded += referenceAddedHandler;
} }
void RegisterPackageReferenceRemovedEvent(IPackageManagementProject project) void RegisterPackageReferenceRemovingEvent(IPackageManagementProject project)
{ {
EventHandler<PackageOperationEventArgs> referenceRemovedHandler = EventHandler<PackageOperationEventArgs> referenceRemovingHandler =
(_, e) => PackageReferenceRemoved(project, e); (_, e) => PackageReferenceRemoving(project, e);
packageReferenceRemovedHandlers.Add(referenceRemovedHandler); packageReferenceRemovingHandlers.Add(referenceRemovingHandler);
project.PackageReferenceRemoved += referenceRemovedHandler; project.PackageReferenceRemoving += referenceRemovingHandler;
} }
void UnregisterEvents() void UnregisterEvents()
@ -101,7 +101,7 @@ namespace ICSharpCode.PackageManagement.Scripting
foreach (IPackageManagementProject project in projects) { foreach (IPackageManagementProject project in projects) {
UnregisterPackageInstalledEvent(project); UnregisterPackageInstalledEvent(project);
UnregisterPackageReferenceAddedEvent(project); UnregisterPackageReferenceAddedEvent(project);
UnregisterPackageReferenceRemovedEvent(project); UnregisterPackageReferenceRemovingEvent(project);
} }
} }
@ -119,11 +119,11 @@ namespace ICSharpCode.PackageManagement.Scripting
project.PackageReferenceAdded -= handler; project.PackageReferenceAdded -= handler;
} }
void UnregisterPackageReferenceRemovedEvent(IPackageManagementProject project) void UnregisterPackageReferenceRemovingEvent(IPackageManagementProject project)
{ {
EventHandler<PackageOperationEventArgs> handler = packageReferenceRemovedHandlers.First(); EventHandler<PackageOperationEventArgs> handler = packageReferenceRemovingHandlers.First();
packageReferenceRemovedHandlers.Remove(handler); packageReferenceRemovingHandlers.Remove(handler);
project.PackageReferenceRemoved -= handler; project.PackageReferenceRemoving -= handler;
} }
void PackageInstalled(IPackageManagementProject project, PackageOperationEventArgs e) void PackageInstalled(IPackageManagementProject project, PackageOperationEventArgs e)
@ -136,7 +136,7 @@ namespace ICSharpCode.PackageManagement.Scripting
RunInstallScript(project, e); RunInstallScript(project, e);
} }
void PackageReferenceRemoved(IPackageManagementProject project, PackageOperationEventArgs e) void PackageReferenceRemoving(IPackageManagementProject project, PackageOperationEventArgs e)
{ {
RunUninstallScript(project, e); RunUninstallScript(project, e);
} }

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

@ -39,14 +39,14 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
project.PackageInstalled += PackageInstalled; project.PackageInstalled += PackageInstalled;
project.PackageReferenceAdded += PackageReferenceAdded; project.PackageReferenceAdded += PackageReferenceAdded;
project.PackageReferenceRemoved += PackageReferenceRemoved; project.PackageReferenceRemoving += PackageReferenceRemoving;
} }
void UnregisterEvents() void UnregisterEvents()
{ {
project.PackageInstalled -= PackageInstalled; project.PackageInstalled -= PackageInstalled;
project.PackageReferenceAdded -= PackageReferenceAdded; project.PackageReferenceAdded -= PackageReferenceAdded;
project.PackageReferenceRemoved -= PackageReferenceRemoved; project.PackageReferenceRemoving -= PackageReferenceRemoving;
} }
void PackageInstalled(object sender, PackageOperationEventArgs e) void PackageInstalled(object sender, PackageOperationEventArgs e)
@ -54,7 +54,7 @@ namespace ICSharpCode.PackageManagement.Scripting
RunInitScript(e); RunInitScript(e);
} }
void PackageReferenceRemoved(object sender, PackageOperationEventArgs e) void PackageReferenceRemoving(object sender, PackageOperationEventArgs e)
{ {
RunUninstallScript(e); RunUninstallScript(e);
} }

4
src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs

@ -100,7 +100,7 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void PackageViewModels_PackageReferenceIsRemoved_PackageViewModelsIsUpdated() public void PackageViewModels_PackageReferenceIsBeingRemoved_PackageViewModelsIsUpdated()
{ {
CreateViewModel(); CreateViewModel();
FakePackage package = AddPackageToProjectLocalRepository(); FakePackage package = AddPackageToProjectLocalRepository();
@ -159,7 +159,7 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void PackageViewModels_PackageReferenceIsRemovedAfterViewModelIsDisposed_PackageViewModelsIsNotUpdated() public void PackageViewModels_PackageReferenceIsBeingRemovedAfterViewModelIsDisposed_PackageViewModelsIsNotUpdated()
{ {
CreateViewModel(); CreateViewModel();
FakePackage package = AddPackageToProjectLocalRepository(); FakePackage package = AddPackageToProjectLocalRepository();

6
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs

@ -486,14 +486,14 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void PackageReferenceRemoved_ProjectManagerPackageReferenceRemovedEventFired_EventFiresWithPackage() public void PackageReferenceRemoving_ProjectManagerPackageReferenceRemovingEventFired_EventFiresWithPackage()
{ {
CreateProject(); CreateProject();
PackageOperationEventArgs eventArgs = null; PackageOperationEventArgs eventArgs = null;
project.PackageReferenceRemoved += (sender, e) => eventArgs = e; project.PackageReferenceRemoving += (sender, e) => eventArgs = e;
var expectedPackage = new FakePackage(); var expectedPackage = new FakePackage();
fakeProjectManager.FirePackageReferenceRemoved(expectedPackage); fakeProjectManager.FirePackageReferenceRemoving(expectedPackage);
Assert.AreEqual(expectedPackage, eventArgs.Package); Assert.AreEqual(expectedPackage, eventArgs.Package);
} }

12
src/AddIns/Misc/PackageManagement/Test/Src/RunAllProjectPackageScriptsActionTests.cs

@ -80,9 +80,9 @@ namespace PackageManagement.Tests
project.Raise(p => p.PackageReferenceAdded += null, null, eventArgs); project.Raise(p => p.PackageReferenceAdded += null, null, eventArgs);
} }
void FirePackageReferenceRemovedEvent(IPackageManagementProject project, PackageOperationEventArgs eventArgs) void FirePackageReferenceRemovingEvent(IPackageManagementProject project, PackageOperationEventArgs eventArgs)
{ {
project.Raise(p => p.PackageReferenceRemoved += null, null, eventArgs); project.Raise(p => p.PackageReferenceRemoving += null, null, eventArgs);
} }
IPackageScript CreatePackageScript() IPackageScript CreatePackageScript()
@ -292,7 +292,7 @@ namespace PackageManagement.Tests
string installPath = @"d:\projects\MyProject\packages\foo"; string installPath = @"d:\projects\MyProject\packages\foo";
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(package, installPath); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(package, installPath);
FirePackageReferenceRemovedEvent(project, eventArgs); FirePackageReferenceRemovingEvent(project, eventArgs);
scriptFactory.AssertWasCalled(factory => factory.CreatePackageUninstallScript(package, installPath)); scriptFactory.AssertWasCalled(factory => factory.CreatePackageUninstallScript(package, installPath));
} }
@ -307,7 +307,7 @@ namespace PackageManagement.Tests
SetUninstallScriptToReturnFromScriptFactory(uninstallScript); SetUninstallScriptToReturnFromScriptFactory(uninstallScript);
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
FirePackageReferenceRemovedEvent(project2, eventArgs); FirePackageReferenceRemovingEvent(project2, eventArgs);
scriptRunner.AssertWasCalled(runner => runner.Run(uninstallScript)); scriptRunner.AssertWasCalled(runner => runner.Run(uninstallScript));
} }
@ -322,7 +322,7 @@ namespace PackageManagement.Tests
SetUninstallScriptToReturnFromScriptFactory(uninstallScript); SetUninstallScriptToReturnFromScriptFactory(uninstallScript);
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
FirePackageReferenceRemovedEvent(project2, eventArgs); FirePackageReferenceRemovingEvent(project2, eventArgs);
Assert.AreEqual(project2, uninstallScript.Project); Assert.AreEqual(project2, uninstallScript.Project);
} }
@ -337,7 +337,7 @@ namespace PackageManagement.Tests
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
action.Dispose(); action.Dispose();
FirePackageReferenceRemovedEvent(project, eventArgs); FirePackageReferenceRemovingEvent(project, eventArgs);
scriptRunner.AssertWasNotCalled(runner => runner.Run(uninstallScript)); scriptRunner.AssertWasNotCalled(runner => runner.Run(uninstallScript));
} }

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

@ -174,11 +174,11 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_PackageReferenceIsRemoved_PackageUninstallScriptIsRun() public void Constructor_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsRun()
{ {
CreateAction(); CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackageScript actualScript = fakeScriptRunner.FirstScriptRun; IPackageScript actualScript = fakeScriptRunner.FirstScriptRun;
FakePackageScript expectedScript = fakeScriptFactory.FirstPackageUninstallScriptCreated; FakePackageScript expectedScript = fakeScriptFactory.FirstPackageUninstallScriptCreated;
@ -187,11 +187,11 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_PackageReferenceIsRemoved_PackageUninstallScriptIsCreated() public void Constructor_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsCreated()
{ {
CreateAction(); CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test");
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed; string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed;
@ -199,13 +199,13 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Dispose_PackageReferenceIsRemoved_PackageUninstallScriptIsNotRun() public void Dispose_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsNotRun()
{ {
CreateAction(); CreateAction();
action.Dispose(); action.Dispose();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
int count = fakeScriptFactory.FakePackageUninstallScriptsCreated.Count; int count = fakeScriptFactory.FakePackageUninstallScriptsCreated.Count;
@ -213,11 +213,11 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_PackageReferenceIsRemoved_UninstallScriptIsPassedProject() public void Constructor_PackageReferenceIsBeingRemoved_UninstallScriptIsPassedProject()
{ {
CreateAction(); CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackageManagementProject project = fakeScriptFactory.FirstPackageUninstallScriptCreated.Project; IPackageManagementProject project = fakeScriptFactory.FirstPackageUninstallScriptCreated.Project;
@ -225,12 +225,12 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_PackageReferenceIsRemoved_UninstallScriptIsPassedPackageFromPackageOperationEventArgs() public void Constructor_PackageReferenceIsBeingRemoved_UninstallScriptIsPassedPackageFromPackageOperationEventArgs()
{ {
CreateAction(); CreateAction();
var expectedPackage = new FakePackage(); var expectedPackage = new FakePackage();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage);
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackage package = fakeScriptFactory.FirstPackageUninstallScriptCreated.Package; IPackage package = fakeScriptFactory.FirstPackageUninstallScriptCreated.Package;

Loading…
Cancel
Save