Browse Source

Do not open readme.txt when reinstalling a NuGet package.

Update-Package -reinstall was opening the NuGet package's readme.txt
as though the NuGet package was being installed for the first time.
pull/701/head
Matt Ward 10 years ago
parent
commit
3b1222bca3
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 10
      src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs
  3. 43
      src/AddIns/Misc/PackageManagement/Project/Src/NullOpenPackageReadmeMonitor.cs
  4. 1
      src/AddIns/Misc/PackageManagement/Project/Src/ReinstallPackageAction.cs
  5. 3
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableInstallPackageAction.cs
  6. 18
      src/AddIns/Misc/PackageManagement/Test/Src/InstallPackageActionTests.cs
  7. 22
      src/AddIns/Misc/PackageManagement/Test/Src/ReinstallPackageActionTests.cs

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

@ -232,6 +232,7 @@ @@ -232,6 +232,7 @@
<Compile Include="Src\NoPackageSourcesConfiguredException.cs" />
<Compile Include="Src\NuGetExePath.cs" />
<Compile Include="Src\NuGetPackageRestoreCommandLine.cs" />
<Compile Include="Src\NullOpenPackageReadmeMonitor.cs" />
<Compile Include="Src\OpenPackageReadMeMonitor.cs" />
<Compile Include="Src\PackageLicenseViewModel.cs" />
<Compile Include="Src\PackageManagementServiceProvider.cs" />

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

@ -32,10 +32,12 @@ namespace ICSharpCode.PackageManagement @@ -32,10 +32,12 @@ namespace ICSharpCode.PackageManagement
: base(project, packageManagementEvents)
{
DependencyVersion = DependencyVersion.Lowest;
OpenReadMeText = true;
}
public bool IgnoreDependencies { get; set; }
public DependencyVersion DependencyVersion { get; set; }
public bool OpenReadMeText { get; set; }
protected override IEnumerable<PackageOperation> GetPackageOperations()
{
@ -50,5 +52,13 @@ namespace ICSharpCode.PackageManagement @@ -50,5 +52,13 @@ namespace ICSharpCode.PackageManagement
OnParentPackageInstalled();
}
}
protected override IOpenPackageReadMeMonitor CreateOpenPackageReadMeMonitor(string packageId)
{
if (OpenReadMeText) {
return base.CreateOpenPackageReadMeMonitor(packageId);
}
return NullOpenPackageReadMeMonitor.Null;
}
}
}

43
src/AddIns/Misc/PackageManagement/Project/Src/NullOpenPackageReadmeMonitor.cs

@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
//
// NullOpenPackageReadMeMonitor.cs
//
// Author:
// Matt Ward <matt.ward@xamarin.com>
//
// Copyright (c) 2015 Xamarin Inc. (http://xamarin.com)
//
// 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 class NullOpenPackageReadMeMonitor : IOpenPackageReadMeMonitor
{
public static readonly IOpenPackageReadMeMonitor Null = new NullOpenPackageReadMeMonitor();
public void Dispose()
{
}
public void OpenReadMeFile()
{
}
}
}

1
src/AddIns/Misc/PackageManagement/Project/Src/ReinstallPackageAction.cs

@ -60,6 +60,7 @@ namespace ICSharpCode.PackageManagement @@ -60,6 +60,7 @@ namespace ICSharpCode.PackageManagement
{
InstallPackageAction action = Project.CreateInstallPackageAction();
action.Package = Package;
action.OpenReadMeText = false;
action.IgnoreDependencies = !UpdateDependencies;
action.AllowPrereleaseVersions = !Package.IsReleaseVersion();
action.Execute();

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

@ -31,6 +31,7 @@ namespace PackageManagement.Tests.Helpers @@ -31,6 +31,7 @@ namespace PackageManagement.Tests.Helpers
CreateOpenPackageReadMeMonitorAction = packageId => {
IOpenPackageReadMeMonitor monitor = base.CreateOpenPackageReadMeMonitor(packageId);
OpenPackageReadMeMonitor = monitor as OpenPackageReadMeMonitor;
NullOpenPackageReadMeMonitorIsCreated = monitor is NullOpenPackageReadMeMonitor;
return monitor;
};
}
@ -42,5 +43,7 @@ namespace PackageManagement.Tests.Helpers @@ -42,5 +43,7 @@ namespace PackageManagement.Tests.Helpers
{
return CreateOpenPackageReadMeMonitorAction(packageId);
}
public bool NullOpenPackageReadMeMonitorIsCreated;
}
}

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

@ -491,5 +491,23 @@ namespace PackageManagement.Tests @@ -491,5 +491,23 @@ namespace PackageManagement.Tests
CreateAction();
Assert.AreEqual(DependencyVersion.Lowest, action.DependencyVersion);
}
[Test]
public void OpenReadMeText_DefaultValue_IsTrue()
{
CreateAction();
Assert.IsTrue(action.OpenReadMeText);
}
[Test]
public void Execute_OpenReadMeTextSetToFalse_NullOpenPackageReadmeMonitorCreated()
{
CreateAction();
action.OpenReadMeText = false;
installPackageHelper.TestPackage.Id = "Test";
installPackageHelper.InstallTestPackage();
Assert.IsTrue(action.NullOpenPackageReadMeMonitorIsCreated);
}
}
}

22
src/AddIns/Misc/PackageManagement/Test/Src/ReinstallPackageActionTests.cs

@ -132,17 +132,17 @@ namespace ICSharpCode.PackageManagement.Tests @@ -132,17 +132,17 @@ namespace ICSharpCode.PackageManagement.Tests
Assert.IsTrue(project.LastInstallPackageCreated.AllowPrereleaseVersions);
}
// [Test]
// public void Execute_PackageExistsInSourceRepository_PackageIsInstalledWithoutOpeningReadmeTxt ()
// {
// CreateAction("MyPackage", "1.2.3.4");
// FakePackage package = AddPackageToSourceRepository("MyPackage", "1.2.3.4");
//
// action.Execute();
//
// Assert.IsTrue(project.LastInstallPackageCreated.IsExecuteCalled);
// Assert.IsFalse(project.LastInstallPackageCreated.OpenReadMeText);
// }
[Test]
public void Execute_PackageExistsInSourceRepository_PackageIsInstalledWithoutOpeningReadmeTxt ()
{
CreateAction("MyPackage", "1.2.3.4");
FakePackage package = AddPackageToSourceRepository("MyPackage", "1.2.3.4");
action.Execute();
Assert.IsTrue(project.LastInstallPackageCreated.IsExecuteCalled);
Assert.IsFalse(project.LastInstallPackageCreated.OpenReadMeText);
}
}
}

Loading…
Cancel
Save