Browse Source

Run Invoke-InitializePackages cmdlet instead of directly running package initialization scripts when a solution is opened.

pull/15/head
Matt Ward 14 years ago
parent
commit
ecf9561079
  1. 2
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InvokeInitializePackagesCmdlet.cs
  2. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  3. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsFactory.cs
  4. 24
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolution.cs
  5. 47
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PowerShellPackageScriptSession.cs
  6. 29
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs

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

@ -17,7 +17,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -17,7 +17,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
public InvokeInitializePackagesCmdlet()
: this(
PackageManagementServices.ProjectService,
new PackageInitializationScriptsFactory(PackageManagementServices.ConsoleHost),
new PackageInitializationScriptsFactory(),
PackageManagementServices.ConsoleHost,
null)
{

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

@ -198,7 +198,6 @@ @@ -198,7 +198,6 @@
<Compile Include="Src\Scripting\ISolutionPackageRepository.cs" />
<Compile Include="Src\Scripting\PackageInitializationScripts.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsFactory.cs" />
<Compile Include="Src\Scripting\PowerShellPackageScriptSession.cs" />
<Compile Include="Src\SolutionPackageRepositoryPath.cs" />
<Compile Include="Src\PackageSourceConverter.cs" />
<Compile Include="Src\PackageSourceViewModel.cs" />

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

@ -8,18 +8,6 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -8,18 +8,6 @@ namespace ICSharpCode.PackageManagement.Scripting
{
public class PackageInitializationScriptsFactory : IPackageInitializationScriptsFactory
{
IPackageManagementConsoleHost consoleHost;
public PackageInitializationScriptsFactory()
: this(PackageManagementServices.ConsoleHost)
{
}
public PackageInitializationScriptsFactory(IPackageManagementConsoleHost consoleHost)
{
this.consoleHost = consoleHost;
}
public IPackageInitializationScripts CreatePackageInitializationScripts(
Solution solution,
IPackageScriptSession scriptSession)

24
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolution.cs

@ -30,25 +30,31 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -30,25 +30,31 @@ namespace ICSharpCode.PackageManagement.Scripting
void SolutionLoaded(object sender, SolutionEventArgs e)
{
RunScripts(e.Solution);
RunPackageInitializationScripts(e.Solution);
}
void RunScripts(Solution solution)
void RunPackageInitializationScripts(Solution solution)
{
if (SolutionHasPackageInitializationScripts(solution)) {
RunInitializePackagesCmdlet();
}
}
bool SolutionHasPackageInitializationScripts(Solution solution)
{
IPackageInitializationScripts scripts = CreatePackageInitializationScripts(solution);
scripts.Run();
return scripts.Any();
}
IPackageInitializationScripts CreatePackageInitializationScripts(Solution solution)
void RunInitializePackagesCmdlet()
{
PowerShellPackageScriptSession session = CreateScriptSession();
return scriptsFactory.CreatePackageInitializationScripts(solution, session);
string command = "Invoke-InitializePackages";
consoleHost.ScriptingConsole.SendLine(command);
}
PowerShellPackageScriptSession CreateScriptSession()
IPackageInitializationScripts CreatePackageInitializationScripts(Solution solution)
{
IPowerShellHost powerShellHost = consoleHost.PowerShellHost;
return new PowerShellPackageScriptSession(powerShellHost, consoleHost.ScriptingConsole);
return scriptsFactory.CreatePackageInitializationScripts(solution, null);
}
}
}

47
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PowerShellPackageScriptSession.cs

@ -1,47 +0,0 @@ @@ -1,47 +0,0 @@
// 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 ICSharpCode.Scripting;
namespace ICSharpCode.PackageManagement.Scripting
{
public class PowerShellPackageScriptSession : IPackageScriptSession
{
IPowerShellHost powerShellHost;
IScriptingConsole console;
public PowerShellPackageScriptSession(
IPowerShellHost powerShellHost,
IScriptingConsole console)
{
this.powerShellHost = powerShellHost;
this.console = console;
}
public void SetEnvironmentPath(string path)
{
powerShellHost.SetEnvironmentPath(path);
}
public string GetEnvironmentPath()
{
return powerShellHost.GetEnvironmentPath();
}
public void AddVariable(string name, object value)
{
powerShellHost.AddVariable(name, value);
}
public void RemoveVariable(string name)
{
powerShellHost.RemoveVariable(name);
}
public void InvokeScript(string script)
{
console.SendLine(script);
}
}
}

29
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInitializationScriptsRunnerForOpenedSolutionTests.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
@ -17,11 +18,14 @@ namespace PackageManagement.Tests.Scripting @@ -17,11 +18,14 @@ namespace PackageManagement.Tests.Scripting
FakePackageManagementProjectService fakeProjectService;
PackageInitializationScriptsRunnerForOpenedSolution runner;
FakePackageManagementConsoleHost fakeConsoleHost;
FakeScriptingConsole fakeScriptingConsole;
void CreateRunner()
{
fakeProjectService = new FakePackageManagementProjectService();
fakeConsoleHost = new FakePackageManagementConsoleHost();
fakeScriptingConsole = new FakeScriptingConsole();
fakeConsoleHost.ScriptingConsole = fakeScriptingConsole;
fakeScriptsFactory = new FakePackageInitializationScriptsFactory();
runner = new PackageInitializationScriptsRunnerForOpenedSolution(fakeProjectService, fakeConsoleHost, fakeScriptsFactory);
}
@ -35,36 +39,39 @@ namespace PackageManagement.Tests.Scripting @@ -35,36 +39,39 @@ namespace PackageManagement.Tests.Scripting
}
[Test]
public void Instance_SolutionIsOpened_PackageInitializationScriptsAreExecuted()
public void Instance_SolutionIsOpened_PackageInitializationScriptsCreatedUsingSolution()
{
CreateRunner();
OpenSolution();
Solution expectedSolution = OpenSolution();
bool run = fakeScriptsFactory.FakePackageInitializationScripts.IsRunCalled;
Solution actualSolution = fakeScriptsFactory.SolutionPassedToCreatePackageInitializationScripts;
Assert.IsTrue(run);
Assert.AreEqual(expectedSolution, actualSolution);
}
[Test]
public void Instance_SolutionIsOpened_PackageInitializationScriptsCreatedUsingSolution()
public void Instance_SolutionOpenedAndHasPackageInitializationScripts_InvokeInitializePackagesCmdletIsRun()
{
CreateRunner();
Solution expectedSolution = OpenSolution();
fakeScriptsFactory.FakePackageInitializationScripts.AnyReturnValue = true;
OpenSolution();
Solution actualSolution = fakeScriptsFactory.SolutionPassedToCreatePackageInitializationScripts;
string command = fakeScriptingConsole.TextPassedToSendLine;
string expectedCommand = "Invoke-InitializePackages";
Assert.AreEqual(expectedSolution, actualSolution);
Assert.AreEqual(expectedCommand, command);
}
[Test]
public void Instance_SolutionIsOpened_PowerShellPackageScriptSessionIsUsedToCreatePackageInitializationScripts()
public void Instance_SolutionOpenedAndHasNoPackageInitializationScripts_InvokeInitializePackagesCmdletIsNotRun()
{
CreateRunner();
fakeScriptsFactory.FakePackageInitializationScripts.AnyReturnValue = false;
OpenSolution();
PowerShellPackageScriptSession session = fakeScriptsFactory.ScriptSessionPassedToCreatePackageInitializationScripts as PowerShellPackageScriptSession;
string command = fakeScriptingConsole.TextPassedToSendLine;
Assert.IsNotNull(session);
Assert.IsNull(command);
}
}
}

Loading…
Cancel
Save