Browse Source

Fix pre-release NuGet packages always being installed.

Pre-release NuGet packages can now only be installed with the Package Management
console when the -IncludePrerelease argument is specified.
pull/30/merge
Matt Ward 14 years ago
parent
commit
2b3edb2784
  1. 1
      src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs
  2. 10
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  3. 1
      src/AddIns/Misc/PackageManagement/Project/Src/UninstallPackageAction.cs
  4. 1
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs
  5. 41
      src/AddIns/Misc/PackageManagement/Test/Src/InstallPackageActionTests.cs
  6. 9
      src/AddIns/Misc/PackageManagement/Test/Src/UninstallPackageActionTests.cs

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

@ -19,7 +19,6 @@ namespace ICSharpCode.PackageManagement @@ -19,7 +19,6 @@ namespace ICSharpCode.PackageManagement
}
public bool IgnoreDependencies { get; set; }
public bool AllowPrereleaseVersions { get; set; }
protected override IEnumerable<PackageOperation> GetPackageOperations()
{

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

@ -26,6 +26,7 @@ namespace ICSharpCode.PackageManagement @@ -26,6 +26,7 @@ namespace ICSharpCode.PackageManagement
public SemanticVersion PackageVersion { get; set; }
public string PackageId { get; set; }
public IPackageScriptRunner PackageScriptRunner { get; set; }
public bool AllowPrereleaseVersions { get; set; }
public virtual bool HasPackageScriptsToRun()
{
@ -97,13 +98,20 @@ namespace ICSharpCode.PackageManagement @@ -97,13 +98,20 @@ namespace ICSharpCode.PackageManagement
void GetPackageIfMissing()
{
if (Package == null) {
Package = Project.SourceRepository.FindPackage(PackageId, PackageVersion);
FindPackage();
}
if (Package == null) {
ThrowPackageNotFoundError(PackageId);
}
}
void FindPackage()
{
Package =Project
.SourceRepository
.FindPackage(PackageId, PackageVersion, AllowPrereleaseVersions, allowUnlisted: true);
}
void ThrowPackageNotFoundError(string packageId)
{
string message = String.Format("Unable to find package '{0}'.", packageId);

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

@ -15,6 +15,7 @@ namespace ICSharpCode.PackageManagement @@ -15,6 +15,7 @@ namespace ICSharpCode.PackageManagement
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
this.AllowPrereleaseVersions = true;
}
public bool ForceRemove { get; set; }

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

@ -20,7 +20,6 @@ namespace ICSharpCode.PackageManagement @@ -20,7 +20,6 @@ namespace ICSharpCode.PackageManagement
public bool UpdateDependencies { get; set; }
public bool UpdateIfPackageDoesNotExistInProject { get; set; }
public bool AllowPrereleaseVersions { get; set; }
protected override IEnumerable<PackageOperation> GetPackageOperations()
{

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

@ -342,6 +342,47 @@ namespace PackageManagement.Tests @@ -342,6 +342,47 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void Execute_InstallPrereleasePackageAndAllowPreleasePackagesIsFalse_DoesNotFindPreleasePackage()
{
CreateAction();
FakePackage package = fakeProject.FakeSourceRepository.AddFakePackageWithVersion("Prerelease", "1.0-beta");
action.PackageId = "Prerelease";
action.AllowPrereleaseVersions = false;
Exception ex = Assert.Throws(typeof(ApplicationException), () => action.Execute());
Assert.AreEqual("Unable to find package 'Prerelease'.", ex.Message);
}
[Test]
public void Execute_InstallPrereleasePackageAndAllowPreleasePackagesIsTrue_InstallsPackageIntoProject()
{
CreateAction();
FakePackage expectedPackage = fakeProject.FakeSourceRepository.AddFakePackageWithVersion("Prerelease", "1.0-beta");
action.PackageId = "Prerelease";
action.AllowPrereleaseVersions = true;
action.Execute();
IPackage actualPackage = fakeProject.PackagePassedToInstallPackage;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void Execute_InstallUnlistedPackage_InstallsPackageIntoProject()
{
CreateAction();
FakePackage expectedPackage = fakeProject.FakeSourceRepository.AddFakePackageWithVersion("test", "1.0");
expectedPackage.Listed = false;
action.PackageId = "test";
action.Execute();
IPackage actualPackage = fakeProject.PackagePassedToInstallPackage;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void Execute_PackageIdSpecifiedButDoesNotExistInRepository_ExceptionThrown()
{

9
src/AddIns/Misc/PackageManagement/Test/Src/UninstallPackageActionTests.cs

@ -212,5 +212,14 @@ namespace PackageManagement.Tests @@ -212,5 +212,14 @@ namespace PackageManagement.Tests
Assert.IsTrue(hasPackageScripts);
}
[Test]
public void AllowPreleasePackages_DefaultValue_IsTrue()
{
CreateAction();
Assert.IsTrue(action.AllowPrereleaseVersions);
}
}
}

Loading…
Cancel
Save