Browse Source

Do not open readme.txt if NuGet package fails to install.

The readme.txt file will no longer be opened if the NuGet package
fails to be added to a project.
pull/681/head
Matt Ward 10 years ago
parent
commit
27c8cac0ff
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 30
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  3. 27
      src/AddIns/Misc/PackageManagement/Project/Src/IOpenPackageReadMeMonitor.cs
  4. 3
      src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs
  5. 5
      src/AddIns/Misc/PackageManagement/Project/Src/OpenPackageReadmeMonitor.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  7. 3
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs
  8. 11
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableInstallPackageAction.cs
  9. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatePackageAction.cs
  10. 57
      src/AddIns/Misc/PackageManagement/Test/Src/InstallPackageActionTests.cs
  11. 43
      src/AddIns/Misc/PackageManagement/Test/Src/OpenPackageReadmeMonitorTests.cs
  12. 57
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageActionTests.cs

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

@ -153,6 +153,7 @@ @@ -153,6 +153,7 @@
<Compile Include="Src\ICodeGenerator.cs" />
<Compile Include="Src\IDocumentView.cs" />
<Compile Include="Src\InstalledPackagesViewModel.cs" />
<Compile Include="Src\IOpenPackageReadMeMonitor.cs" />
<Compile Include="Src\IPackageRepositoryFactoryEvents.cs" />
<Compile Include="Src\IPackageViewModelParent.cs" />
<Compile Include="Src\ISettingsProvider.cs" />

30
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -43,6 +43,21 @@ namespace ICSharpCode.PackageManagement.Design @@ -43,6 +43,21 @@ namespace ICSharpCode.PackageManagement.Design
ConstraintProvider = NullConstraintProvider.Instance;
TargetFramework = new FrameworkName(".NETFramework", new Version("4.0"));
InstallPackageAction = (package, installAction) => {
PackagePassedToInstallPackage = package;
PackageOperationsPassedToInstallPackage = installAction.Operations;
IgnoreDependenciesPassedToInstallPackage = installAction.IgnoreDependencies;
AllowPrereleaseVersionsPassedToInstallPackage = installAction.AllowPrereleaseVersions;
};
UpdatePackageAction = (package, updateAction) => {
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = updateAction.Operations;
UpdateDependenciesPassedToUpdatePackage = updateAction.UpdateDependencies;
AllowPrereleaseVersionsPassedToUpdatePackage = updateAction.AllowPrereleaseVersions;
IsUpdatePackageCalled = true;
};
}
private FakeInstallPackageAction FakeInstallPackageAction;
@ -99,12 +114,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -99,12 +114,11 @@ namespace ICSharpCode.PackageManagement.Design
public bool IgnoreDependenciesPassedToInstallPackage;
public bool AllowPrereleaseVersionsPassedToInstallPackage;
public Action<IPackage, InstallPackageAction> InstallPackageAction;
public void InstallPackage(IPackage package, InstallPackageAction installAction)
{
PackagePassedToInstallPackage = package;
PackageOperationsPassedToInstallPackage = installAction.Operations;
IgnoreDependenciesPassedToInstallPackage = installAction.IgnoreDependencies;
AllowPrereleaseVersionsPassedToInstallPackage = installAction.AllowPrereleaseVersions;
InstallPackageAction(package, installAction);
}
public FakePackageOperation AddFakeInstallOperation()
@ -148,13 +162,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -148,13 +162,11 @@ namespace ICSharpCode.PackageManagement.Design
public void UpdatePackage(IPackage package, UpdatePackageAction updateAction)
{
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = updateAction.Operations;
UpdateDependenciesPassedToUpdatePackage = updateAction.UpdateDependencies;
AllowPrereleaseVersionsPassedToUpdatePackage = updateAction.AllowPrereleaseVersions;
IsUpdatePackageCalled = true;
UpdatePackageAction(package, updateAction);
}
public Action<IPackage, UpdatePackageAction> UpdatePackageAction;
public FakeInstallPackageAction LastInstallPackageCreated;
public virtual InstallPackageAction CreateInstallPackageAction()

27
src/AddIns/Misc/PackageManagement/Project/Src/IOpenPackageReadMeMonitor.cs

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
// Copyright (c) 2015 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
namespace ICSharpCode.PackageManagement
{
public interface IOpenPackageReadMeMonitor : IDisposable
{
void OpenReadMeFile();
}
}

3
src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs

@ -42,8 +42,9 @@ namespace ICSharpCode.PackageManagement @@ -42,8 +42,9 @@ namespace ICSharpCode.PackageManagement
protected override void ExecuteCore()
{
using (IDisposable monitor = CreateOpenPackageReadMeMonitor(Package.Id)) {
using (IOpenPackageReadMeMonitor monitor = CreateOpenPackageReadMeMonitor(Package.Id)) {
Project.InstallPackage(Package, this);
monitor.OpenReadMeFile();
OnParentPackageInstalled();
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/OpenPackageReadmeMonitor.cs

@ -23,7 +23,7 @@ using NuGet; @@ -23,7 +23,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement
{
public class OpenPackageReadMeMonitor : IDisposable
public class OpenPackageReadMeMonitor : IOpenPackageReadMeMonitor
{
IPackageManagementProject project;
IPackageManagementFileService fileService;
@ -57,7 +57,6 @@ namespace ICSharpCode.PackageManagement @@ -57,7 +57,6 @@ namespace ICSharpCode.PackageManagement
IsDisposed = true;
project.PackageInstalled -= PackageInstalled;
OpenReadMeFile();
}
void PackageInstalled(object sender, PackageOperationEventArgs e)
@ -77,7 +76,7 @@ namespace ICSharpCode.PackageManagement @@ -77,7 +76,7 @@ namespace ICSharpCode.PackageManagement
.FirstOrDefault();
}
void OpenReadMeFile()
public void OpenReadMeFile()
{
if ((ReadMeFile != null) && fileService.FileExists(ReadMeFile)) {
fileService.OpenFile(ReadMeFile);

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

@ -162,7 +162,7 @@ namespace ICSharpCode.PackageManagement @@ -162,7 +162,7 @@ namespace ICSharpCode.PackageManagement
return PackageId;
}
protected virtual IDisposable CreateOpenPackageReadMeMonitor(string packageId)
protected virtual IOpenPackageReadMeMonitor CreateOpenPackageReadMeMonitor(string packageId)
{
return new OpenPackageReadMeMonitor(packageId, Project);
}

3
src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs

@ -47,8 +47,9 @@ namespace ICSharpCode.PackageManagement @@ -47,8 +47,9 @@ namespace ICSharpCode.PackageManagement
protected override void ExecuteCore()
{
if (ShouldUpdatePackage()) {
using (IDisposable monitor = CreateOpenPackageReadMeMonitor(Package.Id)) {
using (IOpenPackageReadMeMonitor monitor = CreateOpenPackageReadMeMonitor(Package.Id)) {
Project.UpdatePackage(Package, this);
monitor.OpenReadMeFile();
OnParentPackageInstalled();
}
}

11
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableInstallPackageAction.cs

@ -28,14 +28,19 @@ namespace PackageManagement.Tests.Helpers @@ -28,14 +28,19 @@ namespace PackageManagement.Tests.Helpers
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
CreateOpenPackageReadMeMonitorAction = packageId => {
IOpenPackageReadMeMonitor monitor = base.CreateOpenPackageReadMeMonitor(packageId);
OpenPackageReadMeMonitor = monitor as OpenPackageReadMeMonitor;
return monitor;
};
}
public OpenPackageReadMeMonitor OpenPackageReadMeMonitor;
public Func<string, IOpenPackageReadMeMonitor> CreateOpenPackageReadMeMonitorAction;
protected override IDisposable CreateOpenPackageReadMeMonitor(string packageId)
protected override IOpenPackageReadMeMonitor CreateOpenPackageReadMeMonitor(string packageId)
{
OpenPackageReadMeMonitor = base.CreateOpenPackageReadMeMonitor(packageId) as OpenPackageReadMeMonitor;
return OpenPackageReadMeMonitor;
return CreateOpenPackageReadMeMonitorAction(packageId);
}
}
}

10
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatePackageAction.cs

@ -28,14 +28,18 @@ namespace PackageManagement.Tests.Helpers @@ -28,14 +28,18 @@ namespace PackageManagement.Tests.Helpers
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
CreateOpenPackageReadMeMonitorAction = packageId => {
OpenPackageReadMeMonitor = base.CreateOpenPackageReadMeMonitor(packageId) as OpenPackageReadMeMonitor;
return OpenPackageReadMeMonitor;
};
}
public OpenPackageReadMeMonitor OpenPackageReadMeMonitor;
public Func<string, IOpenPackageReadMeMonitor> CreateOpenPackageReadMeMonitorAction;
protected override IDisposable CreateOpenPackageReadMeMonitor(string packageId)
protected override IOpenPackageReadMeMonitor CreateOpenPackageReadMeMonitor(string packageId)
{
OpenPackageReadMeMonitor = base.CreateOpenPackageReadMeMonitor(packageId) as OpenPackageReadMeMonitor;
return OpenPackageReadMeMonitor;
return CreateOpenPackageReadMeMonitorAction(packageId);
}
}
}

57
src/AddIns/Misc/PackageManagement/Test/Src/InstallPackageActionTests.cs

@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -33,6 +34,7 @@ namespace PackageManagement.Tests @@ -33,6 +34,7 @@ namespace PackageManagement.Tests
FakePackageManagementProject fakeProject;
TestableInstallPackageAction action;
InstallPackageHelper installPackageHelper;
FakeFileService fileService;
void CreateAction()
{
@ -53,6 +55,12 @@ namespace PackageManagement.Tests @@ -53,6 +55,12 @@ namespace PackageManagement.Tests
PackageOperationHelper.CreateListWithOneInstallOperationWithFile(fileName);
}
IOpenPackageReadMeMonitor CreateReadMeMonitor(string packageId)
{
fileService = new FakeFileService(null);
return new OpenPackageReadMeMonitor(packageId, fakeProject, fileService);
}
[Test]
public void Execute_PackageIsSet_InstallsPackageIntoProject()
{
@ -427,5 +435,54 @@ namespace PackageManagement.Tests @@ -427,5 +435,54 @@ namespace PackageManagement.Tests
Assert.AreEqual("Test", action.OpenPackageReadMeMonitor.PackageId);
Assert.IsTrue(action.OpenPackageReadMeMonitor.IsDisposed);
}
[Test]
public void Execute_PackageInstalledSuccessfullyWithReadmeTxt_ReadmeTxtFileIsOpened()
{
CreateAction();
installPackageHelper.TestPackage.Id = "Test";
installPackageHelper.TestPackage.AddFile("readme.txt");
action.CreateOpenPackageReadMeMonitorAction = packageId => {
return CreateReadMeMonitor(packageId);
};
string installPath = @"d:\projects\myproject\packages\Test.1.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
fakeProject.InstallPackageAction = (package, installAction) => {
var eventArgs = new PackageOperationEventArgs(package, null, installPath);
fakeProject.FirePackageInstalledEvent(eventArgs);
fileService.ExistingFileNames.Add(readmeFileName);
};
installPackageHelper.InstallTestPackage ();
Assert.IsTrue(fileService.IsOpenFileCalled);
Assert.AreEqual(readmeFileName, fileService.FileNamePassedToOpenFile);
}
[Test]
public void Execute_PackageWithReadmeTxtIsInstalledButExceptionThrownWhenAddingPackageToProject_ReadmeFileIsNotOpened()
{
CreateAction();
installPackageHelper.TestPackage.Id = "Test";
installPackageHelper.TestPackage.AddFile("readme.txt");
OpenPackageReadMeMonitor monitor = null;
action.CreateOpenPackageReadMeMonitorAction = packageId => {
monitor = CreateReadMeMonitor(packageId) as OpenPackageReadMeMonitor;
return monitor;
};
string installPath = @"d:\projects\myproject\packages\Test.1.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
fakeProject.InstallPackageAction = (package, installAction) => {
var eventArgs = new PackageOperationEventArgs(package, null, installPath);
fakeProject.FirePackageInstalledEvent(eventArgs);
fileService.ExistingFileNames.Add(readmeFileName);
throw new ApplicationException();
};
Assert.Throws<ApplicationException> (() => {
installPackageHelper.InstallTestPackage ();
});
Assert.IsFalse(fileService.IsOpenFileCalled);
Assert.IsTrue(monitor.IsDisposed);
}
}
}

43
src/AddIns/Misc/PackageManagement/Test/Src/OpenPackageReadmeMonitorTests.cs

@ -52,86 +52,107 @@ namespace PackageManagement.Tests @@ -52,86 +52,107 @@ namespace PackageManagement.Tests
}
[Test]
public void Dispose_PackageInstalledWithReadmeTxt_ReadmeTxtIsOpened()
public void OpenReadMeFile_PackageInstalledWithReadmeTxt_ReadmeTxtIsOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "readme.txt");
using (IDisposable monitor = CreateMonitor("Test")) {
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test", "readme.txt");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.AreEqual(expectedFileOpened, fileService.FileNamePassedToOpenFile);
}
[Test]
public void Dispose_PackageDependencyIsInstalledWithReadmeTxt_ReadmeTxtIsNotOpened()
public void Dispose_PackageInstalledWithReadmeTxtButOpenReadMeFileMethodIsNotCalled_ReadmeTxtIsNotOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "readme.txt");
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test", "readme.txt");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
}
Assert.IsFalse(fileService.IsOpenFileCalled);
}
[Test]
public void OpenReadMeFile_PackageDependencyIsInstalledWithReadmeTxt_ReadmeTxtIsNotOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.Dependency.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "readme.txt");
using (IDisposable monitor = CreateMonitor("Test")) {
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test.Dependency", "readme.txt");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.IsFalse(fileService.IsOpenFileCalled);
}
[Test]
public void Dispose_PackageInstalledWithoutReadmeTxt_ReadmeTxtIsNotOpened()
public void OpenReadMeFile_PackageInstalledWithoutReadmeTxt_ReadmeTxtIsNotOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "readme.txt");
using (IDisposable monitor = CreateMonitor("Test")) {
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
var package = new FakePackage("Test");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.IsFalse(fileService.IsOpenFileCalled);
}
[Test]
public void Dispose_PackageDependencyIsInstalledWithReadmeTxtWithDifferentCase_ReadmeTxtIsOpened()
public void OpenReadMeFile_PackageDependencyIsInstalledWithReadmeTxtWithDifferentCase_ReadmeTxtIsOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "ReadMe.TXT");
using (IDisposable monitor = CreateMonitor("Test")) {
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
fileService.ExistingFileNames.Add(expectedFileOpened);
FakePackage package = CreatePackageWithFile("Test", "ReadMe.TXT");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.AreEqual(expectedFileOpened, fileService.FileNamePassedToOpenFile);
}
[Test]
public void Dispose_PackageInstalledWithReadmeTxtButFileDoesNotExistOnFileSystem_ReadmeTxtIsNotOpened()
public void OpenReadMeFile_PackageInstalledWithReadmeTxtButFileDoesNotExistOnFileSystem_ReadmeTxtIsNotOpened()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
using (IDisposable monitor = CreateMonitor("Test")) {
using (OpenPackageReadMeMonitor monitor = CreateMonitor("Test")) {
FakePackage package = CreatePackageWithFile("Test", "readme.txt");
PackageOperationEventArgs e = CreatePackageInstallEventWithFile(installPath, package);
project.FirePackageInstalledEvent(e);
monitor.OpenReadMeFile();
}
Assert.IsFalse(fileService.IsOpenFileCalled);
}
[Test]
public void Constructor_PackageDependencyIsInstalledWithReadmeTxt_ReadmeTxtIsNotOpenedUntilDisposeIsCalled()
public void Constructor_PackageDependencyIsInstalledWithReadmeTxt_ReadmeTxtIsNotOpenedUntilOpenReadMeFileMethodIsCalled()
{
const string installPath = @"d:\projects\myproject\packages\Test.1.2.0";
string expectedFileOpened = Path.Combine(installPath, "ReadMe.TXT");

57
src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageActionTests.cs

@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -33,6 +34,7 @@ namespace PackageManagement.Tests @@ -33,6 +34,7 @@ namespace PackageManagement.Tests
FakePackageManagementEvents fakePackageManagementEvents;
FakePackageManagementProject fakeProject;
UpdatePackageHelper updatePackageHelper;
FakeFileService fileService;
void CreateSolution()
{
@ -54,6 +56,12 @@ namespace PackageManagement.Tests @@ -54,6 +56,12 @@ namespace PackageManagement.Tests
action.Operations = operations;
}
IOpenPackageReadMeMonitor CreateReadMeMonitor (string packageId)
{
fileService = new FakeFileService(null);
return new OpenPackageReadMeMonitor(packageId, fakeProject, fileService);
}
[Test]
public void Execute_PackageAndRepositoryPassed_PackageIsUpdated()
{
@ -389,5 +397,54 @@ namespace PackageManagement.Tests @@ -389,5 +397,54 @@ namespace PackageManagement.Tests
Assert.AreEqual("Test", action.OpenPackageReadMeMonitor.PackageId);
Assert.IsTrue(action.OpenPackageReadMeMonitor.IsDisposed);
}
[Test]
public void Execute_PackageInstalledSuccessfullyWithReadmeTxt_ReadmeTxtFileIsOpened()
{
CreateSolution();
updatePackageHelper.TestPackage.Id = "Test";
updatePackageHelper.TestPackage.AddFile("readme.txt");
action.CreateOpenPackageReadMeMonitorAction = packageId => {
return CreateReadMeMonitor(packageId);
};
string installPath = @"d:\projects\myproject\packages\Test.1.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
fakeProject.UpdatePackageAction = (package, updateAction) => {
var eventArgs = new PackageOperationEventArgs(package, null, installPath);
fakeProject.FirePackageInstalledEvent(eventArgs);
fileService.ExistingFileNames.Add(readmeFileName);
};
updatePackageHelper.UpdateTestPackage();
Assert.IsTrue(fileService.IsOpenFileCalled);
Assert.AreEqual(readmeFileName, fileService.FileNamePassedToOpenFile);
}
[Test]
public void Execute_PackageWithReadmeTxtIsInstalledButExceptionThrownWhenAddingPackageToProject_ReadmeFileIsNotOpened()
{
CreateSolution();
updatePackageHelper.TestPackage.Id = "Test";
updatePackageHelper.TestPackage.AddFile("readme.txt");
OpenPackageReadMeMonitor monitor = null;
action.CreateOpenPackageReadMeMonitorAction = packageId => {
monitor = CreateReadMeMonitor(packageId) as OpenPackageReadMeMonitor;
return monitor;
};
string installPath = @"d:\projects\myproject\packages\Test.1.0";
string readmeFileName = Path.Combine(installPath, "readme.txt");
fakeProject.UpdatePackageAction = (package, updateAction) => {
var eventArgs = new PackageOperationEventArgs(package, null, installPath);
fakeProject.FirePackageInstalledEvent(eventArgs);
fileService.ExistingFileNames.Add(readmeFileName);
throw new ApplicationException();
};
Assert.Throws<ApplicationException>(() => {
updatePackageHelper.UpdateTestPackage();
});
Assert.IsFalse(fileService.IsOpenFileCalled);
Assert.IsTrue(monitor.IsDisposed);
}
}
}

Loading…
Cancel
Save