Browse Source

Handle error looking for init.ps1 in NuGet packages directory.

If there is an exception finding init.ps1 files when the solution is
opened then the unhandled exception dialog is shown. This can happen
if a NuGet package requires NuGet 3.0. This results in an
NuGetVersionNotSatisfiedException being thrown. Now when this happens
the error message is reported in the PowerShell console if it is open.
pull/729/merge
Matt Ward 9 years ago
parent
commit
336b10583e
  1. 11
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageInitializationScriptsConsole.cs
  2. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageInitializationScriptsOnSolutionOpen.cs
  3. 5
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageInitializationScriptsInSolutionFactory.cs
  4. 29
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageInitializationScriptsOnSolutionOpenTests.cs

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

@ -17,12 +17,13 @@ @@ -17,12 +17,13 @@
// DEALINGS IN THE SOFTWARE.
using System;
using ICSharpCode.Scripting;
namespace ICSharpCode.PackageManagement.Scripting
{
public class PackageInitializationScriptsConsole
{
IPackageManagementConsoleHost consoleHost;
readonly IPackageManagementConsoleHost consoleHost;
public PackageInitializationScriptsConsole(
IPackageManagementConsoleHost consoleHost)
@ -36,5 +37,13 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -36,5 +37,13 @@ namespace ICSharpCode.PackageManagement.Scripting
consoleHost.ExecuteCommand(command);
}
}
public void WriteError(string message)
{
if (consoleHost.IsRunning) {
consoleHost.ScriptingConsole.WriteLine(message, ScriptingStyle.Error);
consoleHost.WritePrompt();
}
}
}
}

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

@ -47,7 +47,11 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -47,7 +47,11 @@ namespace ICSharpCode.PackageManagement.Scripting
void SolutionOpened(object sender, SolutionEventArgs e)
{
RunPackageInitializationScripts(e.Solution);
try {
RunPackageInitializationScripts(e.Solution);
} catch (Exception ex) {
scriptsConsole.WriteError(ex.Message);
}
}
void RunPackageInitializationScripts(ISolution solution)

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

@ -28,10 +28,15 @@ namespace PackageManagement.Tests.Helpers @@ -28,10 +28,15 @@ namespace PackageManagement.Tests.Helpers
new FakePackageInitializationScripts();
public ISolution SolutionPassedToCreatePackageInitializationScripts;
public Exception ExceptionToThrow;
public IPackageInitializationScripts CreatePackageInitializationScripts(
ISolution solution)
{
if (ExceptionToThrow != null)
throw ExceptionToThrow;
SolutionPassedToCreatePackageInitializationScripts = solution;
return FakePackageInitializationScripts;
}

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

@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
using System;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
@ -102,5 +103,33 @@ namespace PackageManagement.Tests.Scripting @@ -102,5 +103,33 @@ namespace PackageManagement.Tests.Scripting
Assert.IsFalse(contains);
}
[Test]
public void Instance_ExceptionThrownByScriptsFactory_ErrorMessageLoggedToConsole()
{
CreateRunner();
SolutionHasPackageInitializationScripts();
fakeConsoleHost.IsRunning = true;
fakeScriptsFactory.ExceptionToThrow = new Exception("Error");
OpenSolution();
Assert.AreEqual("Error", fakeScriptingConsole.TextPassedToWriteLine);
Assert.AreEqual(ScriptingStyle.Error, fakeScriptingConsole.ScriptingStylePassedToWriteLine);
Assert.IsTrue(fakeConsoleHost.IsWritePromptCalled);
}
[Test]
public void Instance_ExceptionThrownByScriptsFactoryButConsoleIsNotRunning_NoErrorMessageLoggedToConsole()
{
CreateRunner();
SolutionHasPackageInitializationScripts();
fakeConsoleHost.IsRunning = false;
fakeScriptsFactory.ExceptionToThrow = new Exception("Error");
OpenSolution();
Assert.IsNull(fakeScriptingConsole.TextPassedToWriteLine);
}
}
}

Loading…
Cancel
Save