Browse Source

Refactor package script classes to no longer require the PowerShell session to be available when they are created.

pull/15/head
Matt Ward 15 years ago
parent
commit
32f20ce0f7
  1. 4
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InvokeInitializePackagesCmdlet.cs
  2. 20
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InvokeInitializePackagesCmdletTests.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageInitializationScripts.cs
  4. 3
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageInitializationScriptsFactory.cs
  5. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageScript.cs
  6. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScripts.cs
  7. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsFactory.cs
  8. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializeScript.cs
  9. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInstallScript.cs
  10. 13
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageScript.cs
  11. 13
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageScriptFactory.cs
  12. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageUninstallScript.cs
  13. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageInitializationScriptsOnSolutionOpen.cs
  14. 11
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs
  15. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageInitializationScriptsInSolution.cs
  16. 5
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageInitializationScriptsInSolutionFactory.cs
  17. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageScript.cs
  18. 22
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsTests.cs
  19. 35
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializeScriptTests.cs
  20. 13
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInstallScriptTests.cs
  21. 19
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs

4
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InvokeInitializePackagesCmdlet.cs

@ -50,14 +50,14 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{ {
IPackageInitializationScripts scripts = GetPackageInitializationScripts(); IPackageInitializationScripts scripts = GetPackageInitializationScripts();
if (scripts.Any()) { if (scripts.Any()) {
scripts.Run(); scripts.Run(this);
} }
} }
IPackageInitializationScripts GetPackageInitializationScripts() IPackageInitializationScripts GetPackageInitializationScripts()
{ {
Solution solution = projectService.OpenSolution; Solution solution = projectService.OpenSolution;
return scriptsFactory.CreatePackageInitializationScripts(solution, this); return scriptsFactory.CreatePackageInitializationScripts(solution);
} }
} }
} }

20
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InvokeInitializePackagesCmdletTests.cs

@ -49,9 +49,9 @@ namespace PackageManagement.Cmdlets.Tests
SolutionHasPackageInitializationScripts(); SolutionHasPackageInitializationScripts();
RunCmdlet(); RunCmdlet();
bool run = scriptsFactory.FakePackageInitializationScripts.IsRunCalled; IPackageScriptSession session = scriptsFactory.FakePackageInitializationScripts.SessionPassedToRun;
Assert.IsTrue(run); Assert.AreEqual(cmdlet, session);
} }
[Test] [Test]
@ -61,9 +61,9 @@ namespace PackageManagement.Cmdlets.Tests
SolutionHasNoPackageInitializationScripts(); SolutionHasNoPackageInitializationScripts();
RunCmdlet(); RunCmdlet();
bool run = scriptsFactory.FakePackageInitializationScripts.IsRunCalled; IPackageScriptSession session = scriptsFactory.FakePackageInitializationScripts.SessionPassedToRun;
Assert.IsFalse(run); Assert.IsNull(session);
} }
[Test] [Test]
@ -78,18 +78,6 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(expectedSolution, actualSolution); Assert.AreEqual(expectedSolution, actualSolution);
} }
[Test]
public void ProcessRecord_SolutionHasPackageInitializationScripts_PackageScriptSessionIsCmdlet()
{
CreateCmdlet();
SolutionHasPackageInitializationScripts();
RunCmdlet();
IPackageScriptSession session = scriptsFactory.ScriptSessionPassedToCreatePackageInitializationScripts;
Assert.AreEqual(cmdlet, session);
}
[Test] [Test]
public void ProcessRecord_SolutionHasPackageInitializationScripts_PowerShellWorkingDirectoryIsUpdated() public void ProcessRecord_SolutionHasPackageInitializationScripts_PowerShellWorkingDirectoryIsUpdated()
{ {

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

@ -8,6 +8,6 @@ namespace ICSharpCode.PackageManagement.Scripting
public interface IPackageInitializationScripts public interface IPackageInitializationScripts
{ {
bool Any(); bool Any();
void Run(); void Run(IPackageScriptSession session);
} }
} }

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

@ -9,7 +9,6 @@ namespace ICSharpCode.PackageManagement.Scripting
public interface IPackageInitializationScriptsFactory public interface IPackageInitializationScriptsFactory
{ {
IPackageInitializationScripts CreatePackageInitializationScripts( IPackageInitializationScripts CreatePackageInitializationScripts(
Solution solution, Solution solution);
IPackageScriptSession scriptSession);
} }
} }

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

@ -10,6 +10,6 @@ namespace ICSharpCode.PackageManagement.Scripting
IPackageManagementProject Project { get; set; } IPackageManagementProject Project { get; set; }
bool Exists(); bool Exists();
void Execute(); void Execute(IPackageScriptSession session);
} }
} }

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

@ -22,11 +22,11 @@ namespace ICSharpCode.PackageManagement.Scripting
this.scriptFactory = scriptFactory; this.scriptFactory = scriptFactory;
} }
public void Run() public void Run(IPackageScriptSession session)
{ {
foreach (IPackageScript script in GetScripts()) { foreach (IPackageScript script in GetScripts()) {
script.Execute(); script.Execute(session);
} }
} }
List<IPackageScript> GetScripts() List<IPackageScript> GetScripts()

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

@ -9,11 +9,10 @@ namespace ICSharpCode.PackageManagement.Scripting
public class PackageInitializationScriptsFactory : IPackageInitializationScriptsFactory public class PackageInitializationScriptsFactory : IPackageInitializationScriptsFactory
{ {
public IPackageInitializationScripts CreatePackageInitializationScripts( public IPackageInitializationScripts CreatePackageInitializationScripts(
Solution solution, Solution solution)
IPackageScriptSession scriptSession)
{ {
var repository = new SolutionPackageRepository(solution); var repository = new SolutionPackageRepository(solution);
var scriptFactory = new PackageScriptFactory(scriptSession); var scriptFactory = new PackageScriptFactory();
return new PackageInitializationScripts(repository, scriptFactory); return new PackageInitializationScripts(repository, scriptFactory);
} }
} }

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

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

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

@ -7,10 +7,8 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageInstallScript : PackageScript public class PackageInstallScript : PackageScript
{ {
public PackageInstallScript( public PackageInstallScript(IPackageScriptFileName fileName)
IPackageScriptFileName fileName, : base(fileName)
IPackageScriptSession session)
: base(fileName, session)
{ {
} }
} }

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

@ -9,12 +9,9 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageScript : IPackageScript public class PackageScript : IPackageScript
{ {
public PackageScript( public PackageScript(IPackageScriptFileName fileName)
IPackageScriptFileName fileName,
IPackageScriptSession session)
{ {
this.ScriptFileName = fileName; this.ScriptFileName = fileName;
this.Session = session;
} }
protected IPackageScriptFileName ScriptFileName { get; private set; } protected IPackageScriptFileName ScriptFileName { get; private set; }
@ -28,7 +25,13 @@ namespace ICSharpCode.PackageManagement.Scripting
return ScriptFileName.FileExists(); return ScriptFileName.FileExists();
} }
public void Execute() public void Execute(IPackageScriptSession session)
{
this.Session = session;
Execute();
}
void Execute()
{ {
BeforeExecute(); BeforeExecute();
if (Exists()) { if (Exists()) {

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

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

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

@ -7,10 +7,8 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
public class PackageUninstallScript : PackageScript public class PackageUninstallScript : PackageScript
{ {
public PackageUninstallScript( public PackageUninstallScript(IPackageScriptFileName fileName)
IPackageScriptFileName fileName, : base(fileName)
IPackageScriptSession session)
: base(fileName, session)
{ {
} }
} }

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

@ -56,7 +56,7 @@ namespace ICSharpCode.PackageManagement.Scripting
IPackageInitializationScripts CreatePackageInitializationScripts(Solution solution) IPackageInitializationScripts CreatePackageInitializationScripts(Solution solution)
{ {
return scriptsFactory.CreatePackageInitializationScripts(solution, null); return scriptsFactory.CreatePackageInitializationScripts(solution);
} }
} }
} }

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

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

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

@ -8,11 +8,11 @@ namespace PackageManagement.Tests.Helpers
{ {
public class FakePackageInitializationScripts : IPackageInitializationScripts public class FakePackageInitializationScripts : IPackageInitializationScripts
{ {
public bool IsRunCalled; public IPackageScriptSession SessionPassedToRun;
public void Run() public void Run(IPackageScriptSession session)
{ {
IsRunCalled = true; SessionPassedToRun = session;
} }
public bool AnyReturnValue = true; public bool AnyReturnValue = true;

5
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageInitializationScriptsInSolutionFactory.cs

@ -13,14 +13,11 @@ namespace PackageManagement.Tests.Helpers
new FakePackageInitializationScripts(); new FakePackageInitializationScripts();
public Solution SolutionPassedToCreatePackageInitializationScripts; public Solution SolutionPassedToCreatePackageInitializationScripts;
public IPackageScriptSession ScriptSessionPassedToCreatePackageInitializationScripts;
public IPackageInitializationScripts CreatePackageInitializationScripts( public IPackageInitializationScripts CreatePackageInitializationScripts(
Solution solution, Solution solution)
IPackageScriptSession scriptSession)
{ {
SolutionPassedToCreatePackageInitializationScripts = solution; SolutionPassedToCreatePackageInitializationScripts = solution;
ScriptSessionPassedToCreatePackageInitializationScripts = scriptSession;
return FakePackageInitializationScripts; return FakePackageInitializationScripts;
} }
} }

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

@ -11,11 +11,13 @@ namespace PackageManagement.Tests.Helpers
{ {
public IPackageManagementProject Project { get; set; } public IPackageManagementProject Project { get; set; }
public bool IsExecuted; public bool IsExecuted;
public IPackageScriptSession SessionPassedToExecute;
public void Execute() public void Execute(IPackageScriptSession session)
{ {
IsExecuted = true; IsExecuted = true;
SessionPassedToExecute = session;
} }
public bool ExistsReturnValue = true; public bool ExistsReturnValue = true;

22
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsTests.cs

@ -16,6 +16,7 @@ namespace PackageManagement.Tests.Scripting
PackageInitializationScripts scripts; PackageInitializationScripts scripts;
FakePackageScriptFactory fakeScriptFactory; FakePackageScriptFactory fakeScriptFactory;
FakeSolutionPackageRepository fakeSolutionPackageRepository; FakeSolutionPackageRepository fakeSolutionPackageRepository;
FakePackageScriptSession fakeSession;
FakePackageScriptFactoryWithPredefinedPackageScripts fakeScriptFactoryWithPredefinedPackageScripts; FakePackageScriptFactoryWithPredefinedPackageScripts fakeScriptFactoryWithPredefinedPackageScripts;
void CreateScripts() void CreateScripts()
@ -27,6 +28,7 @@ namespace PackageManagement.Tests.Scripting
void CreateScripts(IPackageScriptFactory scriptFactory) void CreateScripts(IPackageScriptFactory scriptFactory)
{ {
fakeSolutionPackageRepository = new FakeSolutionPackageRepository(); fakeSolutionPackageRepository = new FakeSolutionPackageRepository();
fakeSession = new FakePackageScriptSession();
scripts = new PackageInitializationScripts(fakeSolutionPackageRepository, scriptFactory); scripts = new PackageInitializationScripts(fakeSolutionPackageRepository, scriptFactory);
} }
@ -61,11 +63,12 @@ namespace PackageManagement.Tests.Scripting
{ {
CreateScripts(); CreateScripts();
AddPackageToRepository("Test"); AddPackageToRepository("Test");
scripts.Run(); scripts.Run(fakeSession);
bool executed = fakeScriptFactory.FirstPackageInitializeScriptCreated.IsExecuted; IPackageScriptSession session = fakeScriptFactory.FirstPackageInitializeScriptCreated.SessionPassedToExecute;
FakePackageScriptSession expectedSession = fakeSession;
Assert.IsTrue(executed); Assert.AreEqual(expectedSession, session);
} }
[Test] [Test]
@ -76,7 +79,7 @@ namespace PackageManagement.Tests.Scripting
string expectedDirectory = @"d:\projects\myproject\packages\Test.1.0"; string expectedDirectory = @"d:\projects\myproject\packages\Test.1.0";
fakeSolutionPackageRepository.InstallPathToReturn = expectedDirectory; fakeSolutionPackageRepository.InstallPathToReturn = expectedDirectory;
scripts.Run(); scripts.Run(fakeSession);
string actualDirectory = fakeScriptFactory.FirstPackageInstallDirectoryPassed; string actualDirectory = fakeScriptFactory.FirstPackageInstallDirectoryPassed;
@ -88,7 +91,7 @@ namespace PackageManagement.Tests.Scripting
{ {
CreateScripts(); CreateScripts();
FakePackage package = AddPackageToRepository("Test"); FakePackage package = AddPackageToRepository("Test");
scripts.Run(); scripts.Run(fakeSession);
IPackage actualPackage = fakeSolutionPackageRepository.PackagePassedToGetInstallPath; IPackage actualPackage = fakeSolutionPackageRepository.PackagePassedToGetInstallPath;
@ -101,11 +104,12 @@ namespace PackageManagement.Tests.Scripting
CreateScripts(); CreateScripts();
AddPackageToRepository("A"); AddPackageToRepository("A");
AddPackageToRepository("B"); AddPackageToRepository("B");
scripts.Run(); scripts.Run(fakeSession);
bool executed = fakeScriptFactory.FakePackageInitializeScriptsCreated[1].IsExecuted; IPackageScriptSession session = fakeScriptFactory.FakePackageInitializeScriptsCreated[1].SessionPassedToExecute;
FakePackageScriptSession expectedSession = fakeSession;
Assert.IsTrue(executed); Assert.AreEqual(expectedSession, session);
} }
[Test] [Test]
@ -147,7 +151,7 @@ namespace PackageManagement.Tests.Scripting
{ {
CreateScriptsWithTwoPackagesInRepositoryAndLastPackageScriptFileExistsButNotFirst(); CreateScriptsWithTwoPackagesInRepositoryAndLastPackageScriptFileExistsButNotFirst();
FakePackageScript firstScript = fakeScriptFactoryWithPredefinedPackageScripts.FakeInitializeScripts[0]; FakePackageScript firstScript = fakeScriptFactoryWithPredefinedPackageScripts.FakeInitializeScripts[0];
scripts.Run(); scripts.Run(fakeSession);
bool executed = firstScript.IsExecuted; bool executed = firstScript.IsExecuted;

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

@ -20,7 +20,7 @@ namespace PackageManagement.Tests.Scripting
{ {
fakeScriptFileName = new FakePackageScriptFileName(); fakeScriptFileName = new FakePackageScriptFileName();
fakeSession = new FakePackageScriptSession(); fakeSession = new FakePackageScriptSession();
script = new PackageInitializeScript(fakeScriptFileName, fakeSession); script = new PackageInitializeScript(fakeScriptFileName);
} }
void AssertSessionVariableIsRemoved(string variableName) void AssertSessionVariableIsRemoved(string variableName)
@ -29,6 +29,11 @@ namespace PackageManagement.Tests.Scripting
Assert.IsTrue(removed); Assert.IsTrue(removed);
} }
void ExecuteScript()
{
script.Execute(fakeSession);
}
[Test] [Test]
public void Execute_ExistingEnvironmentPathIsEmptyString_PathToScriptAddedToEnvironmentPath() public void Execute_ExistingEnvironmentPathIsEmptyString_PathToScriptAddedToEnvironmentPath()
{ {
@ -36,7 +41,7 @@ namespace PackageManagement.Tests.Scripting
fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools"; fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools";
fakeSession.SetEnvironmentPath(String.Empty); fakeSession.SetEnvironmentPath(String.Empty);
script.Execute(); ExecuteScript();
string actualEnvironmentPath = fakeSession.GetEnvironmentPath(); string actualEnvironmentPath = fakeSession.GetEnvironmentPath();
string expectedEnvironmentPath = @"d:\projects\myproject\packages\test\tools"; string expectedEnvironmentPath = @"d:\projects\myproject\packages\test\tools";
@ -51,7 +56,7 @@ namespace PackageManagement.Tests.Scripting
fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools"; fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools";
fakeSession.SetEnvironmentPath(@"c:\users\sharpdevelop\ps;"); fakeSession.SetEnvironmentPath(@"c:\users\sharpdevelop\ps;");
script.Execute(); ExecuteScript();
string actualEnvironmentPath = fakeSession.GetEnvironmentPath(); string actualEnvironmentPath = fakeSession.GetEnvironmentPath();
string expectedEnvironmentPath = @"c:\users\sharpdevelop\ps;d:\projects\myproject\packages\test\tools"; string expectedEnvironmentPath = @"c:\users\sharpdevelop\ps;d:\projects\myproject\packages\test\tools";
@ -66,7 +71,7 @@ namespace PackageManagement.Tests.Scripting
fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools"; fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools";
fakeSession.SetEnvironmentPath(@"c:\users\sharpdevelop\ps"); fakeSession.SetEnvironmentPath(@"c:\users\sharpdevelop\ps");
script.Execute(); ExecuteScript();
string actualEnvironmentPath = fakeSession.GetEnvironmentPath(); string actualEnvironmentPath = fakeSession.GetEnvironmentPath();
string expectedEnvironmentPath = @"c:\users\sharpdevelop\ps;d:\projects\myproject\packages\test\tools"; string expectedEnvironmentPath = @"c:\users\sharpdevelop\ps;d:\projects\myproject\packages\test\tools";
@ -81,7 +86,7 @@ namespace PackageManagement.Tests.Scripting
fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools"; fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools";
fakeSession.SetEnvironmentPath(null); fakeSession.SetEnvironmentPath(null);
script.Execute(); ExecuteScript();
string actualEnvironmentPath = fakeSession.GetEnvironmentPath(); string actualEnvironmentPath = fakeSession.GetEnvironmentPath();
string expectedEnvironmentPath = @"d:\projects\myproject\packages\test\tools"; string expectedEnvironmentPath = @"d:\projects\myproject\packages\test\tools";
@ -97,7 +102,7 @@ namespace PackageManagement.Tests.Scripting
fakeScriptFileName.ScriptDirectoryExistsReturnValue = false; fakeScriptFileName.ScriptDirectoryExistsReturnValue = false;
fakeSession.SetEnvironmentPath(String.Empty); fakeSession.SetEnvironmentPath(String.Empty);
script.Execute(); ExecuteScript();
string actualEnvironmentPath = fakeSession.GetEnvironmentPath(); string actualEnvironmentPath = fakeSession.GetEnvironmentPath();
string expectedEnvironmentPath = String.Empty; string expectedEnvironmentPath = String.Empty;
@ -111,7 +116,7 @@ namespace PackageManagement.Tests.Scripting
CreateScript(); CreateScript();
var expectedPackage = new FakePackage("Test"); var expectedPackage = new FakePackage("Test");
script.Package = expectedPackage; script.Package = expectedPackage;
script.Execute(); ExecuteScript();
var actualPackage = fakeSession.VariablesAdded["__package"]; var actualPackage = fakeSession.VariablesAdded["__package"];
@ -124,7 +129,7 @@ namespace PackageManagement.Tests.Scripting
CreateScript(); CreateScript();
string expectedRootPath = @"d:\projects\myproject\packages\test"; string expectedRootPath = @"d:\projects\myproject\packages\test";
fakeScriptFileName.PackageInstallDirectory = expectedRootPath; fakeScriptFileName.PackageInstallDirectory = expectedRootPath;
script.Execute(); ExecuteScript();
var rootPath = fakeSession.VariablesAdded["__rootPath"]; var rootPath = fakeSession.VariablesAdded["__rootPath"];
@ -136,7 +141,7 @@ namespace PackageManagement.Tests.Scripting
{ {
CreateScript(); CreateScript();
fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools"; fakeScriptFileName.GetScriptDirectoryReturnValue = @"d:\projects\myproject\packages\test\tools";
script.Execute(); ExecuteScript();
var toolsPath = fakeSession.VariablesAdded["__toolsPath"]; var toolsPath = fakeSession.VariablesAdded["__toolsPath"];
string expectedToolsPath = @"d:\projects\myproject\packages\test\tools"; string expectedToolsPath = @"d:\projects\myproject\packages\test\tools";
@ -148,7 +153,7 @@ namespace PackageManagement.Tests.Scripting
public void Execute_PackageInstallDirectoryIsSet_ProjectSessionVariableIsSet() public void Execute_PackageInstallDirectoryIsSet_ProjectSessionVariableIsSet()
{ {
CreateScript(); CreateScript();
script.Execute(); ExecuteScript();
var project = fakeSession.VariablesAdded["__project"]; var project = fakeSession.VariablesAdded["__project"];
@ -160,7 +165,7 @@ namespace PackageManagement.Tests.Scripting
{ {
CreateScript(); CreateScript();
fakeScriptFileName.ToStringReturnValue = @"d:\projects\myproject\packages\test\tools\init.ps1"; fakeScriptFileName.ToStringReturnValue = @"d:\projects\myproject\packages\test\tools\init.ps1";
script.Execute(); ExecuteScript();
string actualScript = fakeSession.ScriptPassedToInvokeScript; string actualScript = fakeSession.ScriptPassedToInvokeScript;
@ -174,7 +179,7 @@ namespace PackageManagement.Tests.Scripting
public void Execute_PackageInstallDirectoryIsSet_PackageSessionVariableIsRemoved() public void Execute_PackageInstallDirectoryIsSet_PackageSessionVariableIsRemoved()
{ {
CreateScript(); CreateScript();
script.Execute(); ExecuteScript();
AssertSessionVariableIsRemoved("__package"); AssertSessionVariableIsRemoved("__package");
} }
@ -183,7 +188,7 @@ namespace PackageManagement.Tests.Scripting
public void Execute_PackageInstallDirectoryIsSet_RootPathSessionVariableIsRemoved() public void Execute_PackageInstallDirectoryIsSet_RootPathSessionVariableIsRemoved()
{ {
CreateScript(); CreateScript();
script.Execute(); ExecuteScript();
AssertSessionVariableIsRemoved("__rootPath"); AssertSessionVariableIsRemoved("__rootPath");
} }
@ -192,7 +197,7 @@ namespace PackageManagement.Tests.Scripting
public void Execute_PackageInstallDirectoryIsSet_ToolsPathSessionVariableIsRemoved() public void Execute_PackageInstallDirectoryIsSet_ToolsPathSessionVariableIsRemoved()
{ {
CreateScript(); CreateScript();
script.Execute(); ExecuteScript();
AssertSessionVariableIsRemoved("__toolsPath"); AssertSessionVariableIsRemoved("__toolsPath");
} }
@ -201,7 +206,7 @@ namespace PackageManagement.Tests.Scripting
public void Execute_PackageInstallDirectoryIsSet_ProjectSessionVariableIsRemoved() public void Execute_PackageInstallDirectoryIsSet_ProjectSessionVariableIsRemoved()
{ {
CreateScript(); CreateScript();
script.Execute(); ExecuteScript();
AssertSessionVariableIsRemoved("__project"); AssertSessionVariableIsRemoved("__project");
} }

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

@ -27,7 +27,12 @@ namespace PackageManagement.Tests.Scripting
fakeSession = new FakePackageScriptSession(); fakeSession = new FakePackageScriptSession();
script = new PackageInstallScript(scriptFileName, fakeSession); script = new PackageInstallScript(scriptFileName);
}
void ExecuteScript()
{
script.Execute(fakeSession);
} }
[Test] [Test]
@ -38,7 +43,7 @@ namespace PackageManagement.Tests.Scripting
var project = new FakePackageManagementProject(); var project = new FakePackageManagementProject();
project.DTEProject = expectedProject; project.DTEProject = expectedProject;
script.Project = project; script.Project = project;
script.Execute(); ExecuteScript();
var projectVariable = fakeSession.VariablesAdded["__project"]; var projectVariable = fakeSession.VariablesAdded["__project"];
@ -50,7 +55,7 @@ namespace PackageManagement.Tests.Scripting
{ {
CreateScript(); CreateScript();
fakeFileSystem.FileExistsReturnValue = false; fakeFileSystem.FileExistsReturnValue = false;
script.Execute(); ExecuteScript();
bool executed = fakeSession.IsScriptExecuted; bool executed = fakeSession.IsScriptExecuted;
@ -84,7 +89,7 @@ namespace PackageManagement.Tests.Scripting
{ {
CreateScript(); CreateScript();
fakeFileSystem.FileExistsReturnValue = false; fakeFileSystem.FileExistsReturnValue = false;
script.Execute(); ExecuteScript();
string fileChecked = fakeFileSystem.PathPassedToFileExists; string fileChecked = fakeFileSystem.PathPassedToFileExists;

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

@ -16,12 +16,14 @@ namespace PackageManagement.Tests.Scripting
RunPackageScriptsAction action; RunPackageScriptsAction action;
FakePackageManagementProject fakeProject; FakePackageManagementProject fakeProject;
FakePackageScriptFactory fakeScriptFactory; FakePackageScriptFactory fakeScriptFactory;
FakePackageScriptSession fakeSession;
void CreateAction() void CreateAction()
{ {
fakeProject = new FakePackageManagementProject(); fakeProject = new FakePackageManagementProject();
fakeSession = new FakePackageScriptSession();
fakeScriptFactory = new FakePackageScriptFactory(); fakeScriptFactory = new FakePackageScriptFactory();
action = new RunPackageScriptsAction(fakeProject, fakeScriptFactory); action = new RunPackageScriptsAction(fakeProject, fakeSession, fakeScriptFactory);
} }
PackageOperationEventArgs CreatePackageOperationEventArgs() PackageOperationEventArgs CreatePackageOperationEventArgs()
@ -43,9 +45,10 @@ namespace PackageManagement.Tests.Scripting
var eventArgs = CreatePackageOperationEventArgs(); var eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageInstalledEvent(eventArgs); fakeProject.FirePackageInstalledEvent(eventArgs);
bool executed = fakeScriptFactory.FirstPackageInitializeScriptCreated.IsExecuted; IPackageScriptSession session = fakeScriptFactory.FirstPackageInitializeScriptCreated.SessionPassedToExecute;
FakePackageScriptSession expectedSession = fakeSession;
Assert.IsTrue(executed); Assert.AreEqual(expectedSession, session);
} }
[Test] [Test]
@ -82,9 +85,10 @@ namespace PackageManagement.Tests.Scripting
var eventArgs = CreatePackageOperationEventArgs(); var eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceAddedEvent(eventArgs); fakeProject.FirePackageReferenceAddedEvent(eventArgs);
bool executed = fakeScriptFactory.FirstPackageInstallScriptCreated.IsExecuted; IPackageScriptSession session = fakeScriptFactory.FirstPackageInstallScriptCreated.SessionPassedToExecute;
FakePackageScriptSession expectedSession = fakeSession;
Assert.IsTrue(executed); Assert.AreEqual(expectedSession, session);
} }
[Test] [Test]
@ -132,9 +136,10 @@ namespace PackageManagement.Tests.Scripting
var eventArgs = CreatePackageOperationEventArgs(); var eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovedEvent(eventArgs);
bool executed = fakeScriptFactory.FirstPackageUninstallScriptCreated.IsExecuted; IPackageScriptSession session = fakeScriptFactory.FirstPackageUninstallScriptCreated.SessionPassedToExecute;
FakePackageScriptSession expectedSession = fakeSession;
Assert.IsTrue(executed); Assert.AreEqual(expectedSession, session);
} }
[Test] [Test]

Loading…
Cancel
Save