Browse Source

Report PowerShell script errors in Manage Packages dialog.

pull/44/head
Matt Ward 12 years ago
parent
commit
5b441b46ab
  1. 22
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  2. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  3. 18
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingProcessPackageAction.cs
  4. 31
      src/AddIns/Misc/PackageManagement/Test/Src/ProcessPackageActionTests.cs

22
src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs

@ -45,11 +45,23 @@ namespace ICSharpCode.PackageManagement @@ -45,11 +45,23 @@ namespace ICSharpCode.PackageManagement
public void Execute()
{
BeforeExecute();
if (PackageScriptRunner != null) {
ExecuteWithScriptRunner();
} else {
ExecuteCore();
RunWithExceptionReporting(() => {
BeforeExecute();
if (PackageScriptRunner != null) {
ExecuteWithScriptRunner();
} else {
ExecuteCore();
}
});
}
void RunWithExceptionReporting(Action action)
{
try {
action();
} catch (Exception ex) {
packageManagementEvents.OnPackageOperationError(ex);
throw;
}
}

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -113,6 +113,7 @@ @@ -113,6 +113,7 @@
<Compile Include="Src\Helpers\CodeElementsExtensions.cs" />
<Compile Include="Src\Helpers\CompilationUnitHelper.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingPackageActionRunner.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingProcessPackageAction.cs" />
<Compile Include="Src\Helpers\FakeCodeGenerator.cs" />
<Compile Include="Src\Helpers\FieldHelper.cs" />
<Compile Include="Src\Helpers\FakeSelectProjectsService.cs" />

18
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingProcessPackageAction.cs

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
// 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;
namespace PackageManagement.Tests.Helpers
{
public class ExceptionThrowingProcessPackageAction : TestableProcessPackageAction
{
public Exception ExceptionToThrowInExecuteCore =
new Exception("Error");
protected override void ExecuteCore()
{
throw ExceptionToThrowInExecuteCore;
}
}
}

31
src/AddIns/Misc/PackageManagement/Test/Src/ProcessPackageActionTests.cs

@ -16,6 +16,7 @@ namespace PackageManagement.Tests @@ -16,6 +16,7 @@ namespace PackageManagement.Tests
{
TestableProcessPackageAction action;
FakePackageManagementProject fakeProject;
ExceptionThrowingProcessPackageAction exceptionThrowingAction;
void CreateAction()
{
@ -30,6 +31,11 @@ namespace PackageManagement.Tests @@ -30,6 +31,11 @@ namespace PackageManagement.Tests
return logger;
}
void CreateActionWithExceptionThrownInExecuteCore()
{
exceptionThrowingAction = new ExceptionThrowingProcessPackageAction();
}
[Test]
public void Execute_LoggerIsNull_LoggerUsedByProjectIsPackageManagementLogger()
{
@ -124,5 +130,30 @@ namespace PackageManagement.Tests @@ -124,5 +130,30 @@ namespace PackageManagement.Tests
Assert.IsTrue(action.IsExecuteCoreCalled);
}
[Test]
public void Execute_ExceptionThrownInExecuteCore_ErrorEventFired()
{
CreateActionWithExceptionThrownInExecuteCore();
var expectedException = new Exception("ExecuteCore error");
exceptionThrowingAction.ExceptionToThrowInExecuteCore = expectedException;
Exception exception = Assert.Throws<Exception>(() => exceptionThrowingAction.Execute());
Exception exceptionReported = exceptionThrowingAction.FakePackageManagementEvents.ExceptionPassedToOnPackageOperationError;
Assert.AreEqual(expectedException, exceptionReported);
}
[Test]
public void Execute_ExceptionThrownInExecuteCore_ExceptionThrownByExecuteMethod()
{
CreateActionWithExceptionThrownInExecuteCore();
var expectedException = new Exception("Error");
exceptionThrowingAction.ExceptionToThrowInExecuteCore = expectedException;
Exception exception = Assert.Throws<Exception>(() => exceptionThrowingAction.Execute());
Assert.AreEqual(expectedException, exception);
}
}
}

Loading…
Cancel
Save