From 1a5797697a5a50147b16888ad8d6c560d8b11152 Mon Sep 17 00:00:00 2001 From: Chris Blyth Date: Tue, 18 Feb 2014 09:31:16 +0000 Subject: [PATCH] Only go to the mirror server if there is only mirrored versions of the package. Previously, this would keep going as long as you had 1 version that was a mirror. --- .../Models/MirroringPackageRepositoryTests.cs | 17 +++++++++++++++++ .../Models/MirroringPackageRepository.cs | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/source/NuGet.Lucene.Web.Tests/Models/MirroringPackageRepositoryTests.cs b/source/NuGet.Lucene.Web.Tests/Models/MirroringPackageRepositoryTests.cs index 6874cbf..73d881f 100644 --- a/source/NuGet.Lucene.Web.Tests/Models/MirroringPackageRepositoryTests.cs +++ b/source/NuGet.Lucene.Web.Tests/Models/MirroringPackageRepositoryTests.cs @@ -13,6 +13,7 @@ public class MirroringPackageRepositoryTests { private IPackage package1; private IPackage package2; + private IPackage package3; private Mock cache; private Mock mirror; private Mock origin; @@ -29,6 +30,7 @@ public void SetUp() package1 = new LucenePackage(_ => null) { Id = "FuTools", Version = new StrictSemanticVersion("1.0"), IsMirrored = true }; package2 = new LucenePackage(_ => null) { Id = "FuTools", Version = new StrictSemanticVersion("2.0") }; + package3 = new LucenePackage(_ => null) { Id = "FuTools", Version = new StrictSemanticVersion("3.0") }; } [Test] @@ -76,6 +78,21 @@ public void FindPackagesSkipsOriginOnLocalPackage() origin.Verify(r => r.FindPackagesById("FuTools"), Times.Never); } + [Test] + public void FindPackagesSkipsOriginWhenANonMirroredPackageIsPresent() + { + mirror.Setup(r => r.FindPackagesById("FuTools")).Returns(new[] { package1, package2 }).Verifiable(); + origin.Setup(r => r.FindPackagesById("FuTools")).Returns(new[] { package3 }).Verifiable(); + + var result = repo.FindPackagesById("FuTools"); + + mirror.VerifyAll(); + + Assert.That(result.ToList(), Is.EqualTo(new[] { package1, package2 })); + + origin.Verify(r => r.FindPackagesById("FuTools"), Times.Never); + } + [Test] public void FindPackagesHandlesOriginException() { diff --git a/source/NuGet.Lucene.Web/Models/MirroringPackageRepository.cs b/source/NuGet.Lucene.Web/Models/MirroringPackageRepository.cs index 88cdb3b..9005f13 100644 --- a/source/NuGet.Lucene.Web/Models/MirroringPackageRepository.cs +++ b/source/NuGet.Lucene.Web/Models/MirroringPackageRepository.cs @@ -74,7 +74,7 @@ public override IEnumerable FindPackagesById(string id) /// protected virtual bool ShouldLookInOrigin(string id, List localPackages) { - return localPackages.IsEmpty() || localPackages.OfType().Any(p => p.IsMirrored); + return localPackages.IsEmpty() || localPackages.OfType().All(p => p.IsMirrored); } public override IPackage FindPackage(string packageId, SemanticVersion version)