public async Task LocalPackageFileCache_GetShaTwiceVerifyMissingFilesAreNotCached() { using (var pathContext = new SimpleTestPathContext()) { var cache = new LocalPackageFileCache(); var pathResolver = new VersionFolderPathResolver(pathContext.PackageSource); var identity = new PackageIdentity("X", NuGetVersion.Parse("1.0.0")); var shaPath = pathResolver.GetNupkgMetadataPath(identity.Id, identity.Version); var exists1 = cache.Sha512Exists(shaPath); await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, identity); var exists2 = cache.Sha512Exists(shaPath); var sha512 = cache.GetOrAddSha512(shaPath); var sha512B = cache.GetOrAddSha512(shaPath); // Verify original value was not found exists1.Should().BeFalse(); // Verify false was not cached exists2.Should().BeTrue(); // Verify both hashes are the exact same instance Assert.Same(sha512.Value, sha512B.Value); } }
public LocalPackageInfo FindPackage(string packageId, NuGetVersion version) { LocalPackageInfo package = null; var packages = FindPackagesByIdImpl(packageId); var count = packages.Count; for (var i = 0; i < count; i++) { var candidatePackage = packages[i]; if (candidatePackage.Version == version) { package = candidatePackage; break; } } if (package == null) { return(null); } // Check for an exact match on casing if (StringComparer.Ordinal.Equals(packageId, package.Id) && EqualityUtility.SequenceEqualWithNullCheck(version.ReleaseLabels, package.Version.ReleaseLabels, StringComparer.Ordinal)) { return(package); } // nuspec var nuspec = _packageFileCache.GetOrAddNuspec(package.ManifestPath, package.ExpandedPath); // files var files = _packageFileCache.GetOrAddFiles(package.ExpandedPath); // sha512 var sha512 = _packageFileCache.GetOrAddSha512(package.Sha512Path); // Create a new info to match the given id/version return(new LocalPackageInfo( packageId, version, package.ExpandedPath, package.ManifestPath, package.ZipPath, package.Sha512Path, nuspec, files, sha512)); }
public LocalPackageInfo FindPackage(string packageId, NuGetVersion version) { var package = FindPackageImpl(packageId, version); if (package == null) { return(null); } // Check for an exact match on casing if (StringComparer.Ordinal.Equals(packageId, package.Id) && EqualityUtility.SequenceEqualWithNullCheck(version.ReleaseLabels, package.Version.ReleaseLabels, StringComparer.Ordinal)) { return(package); } // nuspec var nuspec = _packageFileCache.GetOrAddNuspec(package.ManifestPath, package.ExpandedPath); // files var files = _packageFileCache.GetOrAddFiles(package.ExpandedPath); // sha512 var sha512 = _packageFileCache.GetOrAddSha512(package.Sha512Path); // runtime.json var runtimeGraph = _packageFileCache.GetOrAddRuntimeGraph(package.ExpandedPath); // Create a new info to match the given id/version return(new LocalPackageInfo( packageId, version, package.ExpandedPath, package.ManifestPath, package.ZipPath, package.Sha512Path, nuspec, files, sha512, runtimeGraph)); }