From e5774908605f5aa28abd0e75ce6dd2f43c4ebf53 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Wed, 25 May 2011 21:42:06 +0100 Subject: [PATCH] NuGet package now being passed to PowerShell scripts. --- .../Project/Src/Scripting/IPackageScript.cs | 4 +- .../Scripting/PackageInitializationScripts.cs | 4 +- .../Src/Scripting/RunPackageScriptsAction.cs | 13 +++- .../Test/Src/Helpers/FakePackageScript.cs | 2 + .../PackageInitializationScriptsTests.cs | 12 +++ .../Scripting/RunPackageScriptsActionTests.cs | 77 +++++++++++++++---- 6 files changed, 93 insertions(+), 19 deletions(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageScript.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageScript.cs index ea0ed7e2f5..284d22198a 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageScript.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageScript.cs @@ -2,13 +2,15 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using NuGet; namespace ICSharpCode.PackageManagement.Scripting { public interface IPackageScript { IPackageManagementProject Project { get; set; } - + IPackage Package { get; set; } + bool Exists(); void Run(IPackageScriptSession session); } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScripts.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScripts.cs index 7ec286c078..d4f94b465b 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScripts.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScripts.cs @@ -56,7 +56,9 @@ namespace ICSharpCode.PackageManagement.Scripting IPackageScript CreateInitializeScript(IPackage package) { string packageInstallDirectory = solutionPackageRepository.GetInstallPath(package); - return scriptFactory.CreatePackageInitializeScript(packageInstallDirectory); + IPackageScript script = scriptFactory.CreatePackageInitializeScript(packageInstallDirectory); + script.Package = package; + return script; } public bool Any() diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs index fcb5538f7f..ba4c93acf3 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs @@ -63,21 +63,26 @@ namespace ICSharpCode.PackageManagement.Scripting void RunInitScript(PackageOperationEventArgs e) { IPackageScript script = scriptFactory.CreatePackageInitializeScript(e.InstallPath); + RunScript(script, e.Package); + } + + void RunScript(IPackageScript script, IPackage package) + { + script.Project = project; + script.Package = package; scriptRunner.Run(script); } void RunUninstallScript(PackageOperationEventArgs e) { IPackageScript script = scriptFactory.CreatePackageUninstallScript(e.InstallPath); - script.Project = project; - scriptRunner.Run(script); + RunScript(script, e.Package); } void RunInstallScript(PackageOperationEventArgs e) { IPackageScript script = scriptFactory.CreatePackageInstallScript(e.InstallPath); - script.Project = project; - scriptRunner.Run(script); + RunScript(script, e.Package); } public void Dispose() diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScript.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScript.cs index 4de7ac413a..649c1b174e 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScript.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScript.cs @@ -4,12 +4,14 @@ using System; using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement.Scripting; +using NuGet; namespace PackageManagement.Tests.Helpers { public class FakePackageScript : IPackageScript { public IPackageManagementProject Project { get; set; } + public IPackage Package { get; set; } public bool IsRun; public IPackageScriptSession SessionPassedToRun; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsTests.cs index 5c5672d8ee..06c9385d4c 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsTests.cs @@ -157,5 +157,17 @@ namespace PackageManagement.Tests.Scripting Assert.IsFalse(run); } + + [Test] + public void Run_OnePackageInRepository_PackageScriptSetsPackageInSession() + { + CreateScripts(); + FakePackage expectedPackage = AddPackageToRepository("Test"); + scripts.Run(fakeSession); + + var package = fakeScriptFactory.FirstPackageInitializeScriptCreated.Package; + + Assert.AreEqual(expectedPackage, package); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs index 4880f93782..b0a2a81f33 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs @@ -2,6 +2,7 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement.Design; using ICSharpCode.PackageManagement.Scripting; using NuGet; @@ -34,6 +35,17 @@ namespace PackageManagement.Tests.Scripting PackageOperationEventArgs CreatePackageOperationEventArgs(string installPath) { var package = new FakePackage("Test"); + return CreatePackageOperationEventArgs(package, installPath); + } + + PackageOperationEventArgs CreatePackageOperationEventArgs(FakePackage package) + { + string installPath = @"d:\projects\myproject\packages\test"; + return CreatePackageOperationEventArgs(package, installPath); + } + + PackageOperationEventArgs CreatePackageOperationEventArgs(FakePackage package, string installPath) + { string targetPath = @"d:\projects\myproject\packages\target"; return new PackageOperationEventArgs(package, targetPath, installPath); } @@ -42,7 +54,7 @@ namespace PackageManagement.Tests.Scripting public void Constructor_PackageIsInstalled_PackageInitScriptIsRun() { CreateAction(); - var eventArgs = CreatePackageOperationEventArgs(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); fakeProject.FirePackageInstalledEvent(eventArgs); IPackageScript actualScript = fakeScriptRunner.FirstScriptRun; @@ -55,7 +67,7 @@ namespace PackageManagement.Tests.Scripting public void Constructor_PackageIsInstalled_PackageInitScriptIsCreated() { CreateAction(); - var eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); fakeProject.FirePackageInstalledEvent(eventArgs); @@ -70,7 +82,7 @@ namespace PackageManagement.Tests.Scripting CreateAction(); action.Dispose(); - var eventArgs = CreatePackageOperationEventArgs(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); fakeProject.FirePackageInstalledEvent(eventArgs); int count = fakeScriptFactory.FakePackageInstallScriptsCreated.Count; @@ -78,11 +90,24 @@ namespace PackageManagement.Tests.Scripting Assert.AreEqual(0, count); } + [Test] + public void Constructor_PackageIsInstalled_PackageInitScriptIsPassedPackage() + { + CreateAction(); + var expectedPackage = new FakePackage(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage); + fakeProject.FirePackageInstalledEvent(eventArgs); + + IPackage package = fakeScriptFactory.FirstPackageInitializeScriptCreated.Package; + + Assert.AreEqual(expectedPackage, package); + } + [Test] public void Constructor_PackageReferenceIsAdded_PackageInstallScriptIsRun() { CreateAction(); - var eventArgs = CreatePackageOperationEventArgs(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); fakeProject.FirePackageReferenceAddedEvent(eventArgs); IPackageScript actualScript = fakeScriptRunner.FirstScriptRun; @@ -95,7 +120,7 @@ namespace PackageManagement.Tests.Scripting public void Constructor_PackageReferenceIsAdded_PackageInstallScriptIsCreated() { CreateAction(); - var eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); fakeProject.FirePackageReferenceAddedEvent(eventArgs); string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed; @@ -109,7 +134,7 @@ namespace PackageManagement.Tests.Scripting CreateAction(); action.Dispose(); - var eventArgs = CreatePackageOperationEventArgs(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); fakeProject.FirePackageReferenceAddedEvent(eventArgs); int count = fakeScriptFactory.FakePackageInstallScriptsCreated.Count; @@ -121,19 +146,32 @@ namespace PackageManagement.Tests.Scripting public void Constructor_PackageReferenceIsAdded_InstallScriptIsPassedProject() { CreateAction(); - var eventArgs = CreatePackageOperationEventArgs(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); fakeProject.FirePackageReferenceAddedEvent(eventArgs); - var project = fakeScriptFactory.FirstPackageInstallScriptCreated.Project; + IPackageManagementProject project = fakeScriptFactory.FirstPackageInstallScriptCreated.Project; Assert.AreEqual(fakeProject, project); } + [Test] + public void Constructor_PackageReferenceIsAdded_InstallScriptIsPassedPackageFromPackageOperationEventArgs() + { + CreateAction(); + var expectedPackage = new FakePackage(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage); + fakeProject.FirePackageReferenceAddedEvent(eventArgs); + + IPackage package = fakeScriptFactory.FirstPackageInstallScriptCreated.Package; + + Assert.AreEqual(expectedPackage, package); + } + [Test] public void Constructor_PackageReferenceIsRemoved_PackageUninstallScriptIsRun() { CreateAction(); - var eventArgs = CreatePackageOperationEventArgs(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); fakeProject.FirePackageReferenceRemovedEvent(eventArgs); IPackageScript actualScript = fakeScriptRunner.FirstScriptRun; @@ -146,7 +184,7 @@ namespace PackageManagement.Tests.Scripting public void Constructor_PackageReferenceIsRemoved_PackageUninstallScriptIsCreated() { CreateAction(); - var eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); fakeProject.FirePackageReferenceRemovedEvent(eventArgs); string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed; @@ -160,7 +198,7 @@ namespace PackageManagement.Tests.Scripting CreateAction(); action.Dispose(); - var eventArgs = CreatePackageOperationEventArgs(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); fakeProject.FirePackageReferenceRemovedEvent(eventArgs); int count = fakeScriptFactory.FakePackageUninstallScriptsCreated.Count; @@ -172,12 +210,25 @@ namespace PackageManagement.Tests.Scripting public void Constructor_PackageReferenceIsRemoved_UninstallScriptIsPassedProject() { CreateAction(); - var eventArgs = CreatePackageOperationEventArgs(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); fakeProject.FirePackageReferenceRemovedEvent(eventArgs); - var project = fakeScriptFactory.FirstPackageUninstallScriptCreated.Project; + IPackageManagementProject project = fakeScriptFactory.FirstPackageUninstallScriptCreated.Project; Assert.AreEqual(fakeProject, project); } + + [Test] + public void Constructor_PackageReferenceIsRemoved_UninstallScriptIsPassedPackageFromPackageOperationEventArgs() + { + CreateAction(); + var expectedPackage = new FakePackage(); + PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage); + fakeProject.FirePackageReferenceRemovedEvent(eventArgs); + + IPackage package = fakeScriptFactory.FirstPackageUninstallScriptCreated.Package; + + Assert.AreEqual(expectedPackage, package); + } } }