Browse Source

Refactor package script creation code.

pull/15/head
Matt Ward 14 years ago
parent
commit
6cd00943dc
  1. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageScriptFactory.cs
  2. 4
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScripts.cs
  3. 4
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializeScript.cs
  4. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInstallScript.cs
  5. 3
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageScript.cs
  6. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageScriptFactory.cs
  7. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageUninstallScript.cs
  8. 15
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs
  9. 9
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScriptFactory.cs
  10. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScriptFactoryWithPredefinedPackageScripts.cs
  11. 15
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializeScriptTests.cs
  12. 15
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInstallScriptTests.cs

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

@ -8,8 +8,8 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
public interface IPackageScriptFactory public interface IPackageScriptFactory
{ {
IPackageScript CreatePackageInitializeScript(string packageInstallDirectory); IPackageScript CreatePackageInitializeScript(IPackage package, string packageInstallDirectory);
IPackageScript CreatePackageUninstallScript(string packageInstallDirectory); IPackageScript CreatePackageUninstallScript(IPackage package, string packageInstallDirectory);
IPackageScript CreatePackageInstallScript(string packageInstallDirectory); IPackageScript CreatePackageInstallScript(IPackage package, string packageInstallDirectory);
} }
} }

4
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScripts.cs

@ -56,9 +56,7 @@ namespace ICSharpCode.PackageManagement.Scripting
IPackageScript CreateInitializeScript(IPackage package) IPackageScript CreateInitializeScript(IPackage package)
{ {
string packageInstallDirectory = solutionPackageRepository.GetInstallPath(package); string packageInstallDirectory = solutionPackageRepository.GetInstallPath(package);
IPackageScript script = scriptFactory.CreatePackageInitializeScript(packageInstallDirectory); return scriptFactory.CreatePackageInitializeScript(package, packageInstallDirectory);
script.Package = package;
return script;
} }
public bool Any() public bool Any()

4
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializeScript.cs

@ -8,8 +8,8 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageInitializeScript : PackageScript public class PackageInitializeScript : PackageScript
{ {
public PackageInitializeScript(IPackageScriptFileName fileName) public PackageInitializeScript(IPackage package, IPackageScriptFileName fileName)
: base(fileName) : base(package, fileName)
{ {
} }

5
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInstallScript.cs

@ -2,13 +2,14 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using NuGet;
namespace ICSharpCode.PackageManagement.Scripting namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageInstallScript : PackageScript public class PackageInstallScript : PackageScript
{ {
public PackageInstallScript(IPackageScriptFileName fileName) public PackageInstallScript(IPackage package, IPackageScriptFileName fileName)
: base(fileName) : base(package, fileName)
{ {
} }
} }

3
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageScript.cs

@ -9,8 +9,9 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageScript : IPackageScript public class PackageScript : IPackageScript
{ {
public PackageScript(IPackageScriptFileName fileName) public PackageScript(IPackage package, IPackageScriptFileName fileName)
{ {
this.Package = package;
this.ScriptFileName = fileName; this.ScriptFileName = fileName;
} }

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

@ -8,22 +8,22 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageScriptFactory : IPackageScriptFactory public class PackageScriptFactory : IPackageScriptFactory
{ {
public IPackageScript CreatePackageInitializeScript(string packageInstallDirectory) public IPackageScript CreatePackageInitializeScript(IPackage package, string packageInstallDirectory)
{ {
var scriptFileName = new PackageInitializeScriptFileName(packageInstallDirectory); var scriptFileName = new PackageInitializeScriptFileName(packageInstallDirectory);
return new PackageInitializeScript(scriptFileName); return new PackageInitializeScript(package, scriptFileName);
} }
public IPackageScript CreatePackageUninstallScript(string packageInstallDirectory) public IPackageScript CreatePackageUninstallScript(IPackage package, string packageInstallDirectory)
{ {
var scriptFileName = new PackageUninstallScriptFileName(packageInstallDirectory); var scriptFileName = new PackageUninstallScriptFileName(packageInstallDirectory);
return new PackageUninstallScript(scriptFileName); return new PackageUninstallScript(package, scriptFileName);
} }
public IPackageScript CreatePackageInstallScript(string packageInstallDirectory) public IPackageScript CreatePackageInstallScript(IPackage package, string packageInstallDirectory)
{ {
var scriptFileName = new PackageInstallScriptFileName(packageInstallDirectory); var scriptFileName = new PackageInstallScriptFileName(packageInstallDirectory);
return new PackageInstallScript(scriptFileName); return new PackageInstallScript(package, scriptFileName);
} }
} }
} }

5
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageUninstallScript.cs

@ -2,13 +2,14 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using NuGet;
namespace ICSharpCode.PackageManagement.Scripting namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageUninstallScript : PackageScript public class PackageUninstallScript : PackageScript
{ {
public PackageUninstallScript(IPackageScriptFileName fileName) public PackageUninstallScript(IPackage package, IPackageScriptFileName fileName)
: base(fileName) : base(package, fileName)
{ {
} }
} }

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

@ -62,27 +62,26 @@ namespace ICSharpCode.PackageManagement.Scripting
void RunInitScript(PackageOperationEventArgs e) void RunInitScript(PackageOperationEventArgs e)
{ {
IPackageScript script = scriptFactory.CreatePackageInitializeScript(e.InstallPath); IPackageScript script = scriptFactory.CreatePackageInitializeScript(e.Package, e.InstallPath);
RunScript(script, e.Package); RunScript(script);
} }
void RunScript(IPackageScript script, IPackage package) void RunScript(IPackageScript script)
{ {
script.Project = project; script.Project = project;
script.Package = package;
scriptRunner.Run(script); scriptRunner.Run(script);
} }
void RunUninstallScript(PackageOperationEventArgs e) void RunUninstallScript(PackageOperationEventArgs e)
{ {
IPackageScript script = scriptFactory.CreatePackageUninstallScript(e.InstallPath); IPackageScript script = scriptFactory.CreatePackageUninstallScript(e.Package, e.InstallPath);
RunScript(script, e.Package); RunScript(script);
} }
void RunInstallScript(PackageOperationEventArgs e) void RunInstallScript(PackageOperationEventArgs e)
{ {
IPackageScript script = scriptFactory.CreatePackageInstallScript(e.InstallPath); IPackageScript script = scriptFactory.CreatePackageInstallScript(e.Package, e.InstallPath);
RunScript(script, e.Package); RunScript(script);
} }
public void Dispose() public void Dispose()

9
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScriptFactory.cs

@ -36,28 +36,31 @@ namespace PackageManagement.Tests.Helpers
get { return FakePackageUninstallScriptsCreated[0]; } get { return FakePackageUninstallScriptsCreated[0]; }
} }
public IPackageScript CreatePackageInitializeScript(string packageInstallDirectory) public IPackageScript CreatePackageInitializeScript(IPackage package, string packageInstallDirectory)
{ {
PackageInstallDirectoriesPassed.Add(packageInstallDirectory); PackageInstallDirectoriesPassed.Add(packageInstallDirectory);
var script = new FakePackageScript(); var script = new FakePackageScript();
script.Package = package;
script.ExistsReturnValue = ScriptFileExistsReturnValue; script.ExistsReturnValue = ScriptFileExistsReturnValue;
FakePackageInitializeScriptsCreated.Add(script); FakePackageInitializeScriptsCreated.Add(script);
return script; return script;
} }
public IPackageScript CreatePackageUninstallScript(string packageInstallDirectory) public IPackageScript CreatePackageUninstallScript(IPackage package, string packageInstallDirectory)
{ {
PackageInstallDirectoriesPassed.Add(packageInstallDirectory); PackageInstallDirectoriesPassed.Add(packageInstallDirectory);
var script = new FakePackageScript(); var script = new FakePackageScript();
script.Package = package;
script.ExistsReturnValue = ScriptFileExistsReturnValue; script.ExistsReturnValue = ScriptFileExistsReturnValue;
FakePackageUninstallScriptsCreated.Add(script); FakePackageUninstallScriptsCreated.Add(script);
return script; return script;
} }
public IPackageScript CreatePackageInstallScript(string packageInstallDirectory) public IPackageScript CreatePackageInstallScript(IPackage package, string packageInstallDirectory)
{ {
PackageInstallDirectoriesPassed.Add(packageInstallDirectory); PackageInstallDirectoriesPassed.Add(packageInstallDirectory);
var script = new FakePackageScript(); var script = new FakePackageScript();
script.Package = package;
script.ExistsReturnValue = ScriptFileExistsReturnValue; script.ExistsReturnValue = ScriptFileExistsReturnValue;
FakePackageInstallScriptsCreated.Add(script); FakePackageInstallScriptsCreated.Add(script);
return script; return script;

7
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScriptFactoryWithPredefinedPackageScripts.cs

@ -4,6 +4,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.PackageManagement.Scripting; using ICSharpCode.PackageManagement.Scripting;
using NuGet;
namespace PackageManagement.Tests.Helpers namespace PackageManagement.Tests.Helpers
{ {
@ -18,19 +19,19 @@ namespace PackageManagement.Tests.Helpers
return script; return script;
} }
public IPackageScript CreatePackageInitializeScript(string packageInstallDirectory) public IPackageScript CreatePackageInitializeScript(IPackage package, string packageInstallDirectory)
{ {
FakePackageScript script = FakeInitializeScripts[0]; FakePackageScript script = FakeInitializeScripts[0];
FakeInitializeScripts.RemoveAt(0); FakeInitializeScripts.RemoveAt(0);
return script; return script;
} }
public IPackageScript CreatePackageUninstallScript(string packageInstallDirectory) public IPackageScript CreatePackageUninstallScript(IPackage package, string packageInstallDirectory)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public IPackageScript CreatePackageInstallScript(string packageInstallDirectory) public IPackageScript CreatePackageInstallScript(IPackage package, string packageInstallDirectory)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

15
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializeScriptTests.cs

@ -4,6 +4,7 @@
using System; using System;
using ICSharpCode.PackageManagement.Design; using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting; using ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
@ -15,12 +16,14 @@ namespace PackageManagement.Tests.Scripting
PackageInitializeScript script; PackageInitializeScript script;
FakePackageScriptSession fakeSession; FakePackageScriptSession fakeSession;
FakePackageScriptFileName fakeScriptFileName; FakePackageScriptFileName fakeScriptFileName;
FakePackage fakePackage;
void CreateScript() void CreateScript()
{ {
fakeScriptFileName = new FakePackageScriptFileName(); fakeScriptFileName = new FakePackageScriptFileName();
fakeSession = new FakePackageScriptSession(); fakeSession = new FakePackageScriptSession();
script = new PackageInitializeScript(fakeScriptFileName); fakePackage = new FakePackage();
script = new PackageInitializeScript(fakePackage, fakeScriptFileName);
} }
void AssertSessionVariableIsRemoved(string variableName) void AssertSessionVariableIsRemoved(string variableName)
@ -210,5 +213,15 @@ namespace PackageManagement.Tests.Scripting
AssertSessionVariableIsRemoved("__project"); AssertSessionVariableIsRemoved("__project");
} }
[Test]
public void Package_PackagePassedToConstructor_ReturnsPackagePassedToConstructor()
{
CreateScript();
IPackage package = script.Package;
Assert.AreEqual(fakePackage, package);
}
} }
} }

15
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInstallScriptTests.cs

@ -5,6 +5,7 @@ using System;
using ICSharpCode.PackageManagement.Design; using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.PackageManagement.Scripting; using ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
@ -17,6 +18,7 @@ namespace PackageManagement.Tests.Scripting
FakePackageScriptSession fakeSession; FakePackageScriptSession fakeSession;
PackageInstallScript script; PackageInstallScript script;
FakeFileSystem fakeFileSystem; FakeFileSystem fakeFileSystem;
FakePackage fakePackage;
void CreateScript() void CreateScript()
{ {
@ -26,8 +28,9 @@ namespace PackageManagement.Tests.Scripting
scriptFileName = new PackageInstallScriptFileName(fakeFileSystem); scriptFileName = new PackageInstallScriptFileName(fakeFileSystem);
fakeSession = new FakePackageScriptSession(); fakeSession = new FakePackageScriptSession();
fakePackage = new FakePackage();
script = new PackageInstallScript(scriptFileName); script = new PackageInstallScript(fakePackage, scriptFileName);
} }
void ExecuteScript() void ExecuteScript()
@ -95,5 +98,15 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual(@"tools\install.ps1", fileChecked); Assert.AreEqual(@"tools\install.ps1", fileChecked);
} }
[Test]
public void Package_PackagePassedToConstructor_ReturnsPackagePassedToConstructor()
{
CreateScript();
IPackage package = script.Package;
Assert.AreEqual(fakePackage, package);
}
} }
} }

Loading…
Cancel
Save