public void MetadataReferenceCache_ReturnsCachedVersion() { // Arrange var version1 = "3.2.1"; var version2 = "3.2.1"; var cache = new MetadataReferenceCache(); // Act var cachedVersion1 = cache.GetVersion(version1); var cachedVersion2 = cache.GetVersion(version2); // Assert Assert.Equal(version1, version2); Assert.Same(cachedVersion1, cachedVersion2); }
public void MetadataReferenceCache_ReturnsCachedParsedVersion() { // Arrange var version = new NuGetVersion(3, 2, 1); var versionString1 = version.ToString(); var versionString2 = version.ToString(); var cache = new MetadataReferenceCache(); // Act var cachedVersion1 = cache.GetVersion(versionString1); var cachedVersion2 = cache.GetVersion(versionString2); // Assert Assert.Equal(versionString1, versionString2); Assert.NotSame(versionString1, versionString2); Assert.Same(cachedVersion1, cachedVersion2); }
public void MetadataReferenceCache_ReturnsNonNormalizedVersion() { // Arrange var version1 = "1.0"; var version2 = "1.0.0"; var version3 = "1.0.0.0"; var cache = new MetadataReferenceCache(); // Act var cachedVersion1 = cache.GetVersion(version1); var cachedVersion2 = cache.GetVersion(version2); var cachedVersion3 = cache.GetVersion(version3); // Assert Assert.Equal("1.0", cachedVersion1.ToString()); Assert.Equal("1.0.0", cachedVersion2.ToString()); Assert.Equal("1.0.0.0", cachedVersion3.ToString()); }
public void MetadataReferenceCache_ParsesVersion() { // Arrange var version = new NuGetVersion(3, 2, 1); var cache = new MetadataReferenceCache(); // Act var cachedVersion = cache.GetVersion(version.ToString()); // Assert Assert.Equal(version, cachedVersion); }
private static V2FeedPackageInfo ParsePackage(XElement element, MetadataReferenceCache metadataCache) { var properties = element.Element(_xnameProperties); var idElement = properties.Element(_xnameId); var titleElement = element.Element(_xnameTitle); // If 'Id' element exist, use its value as accurate package Id // Otherwise, use the value of 'title' if it exist // Use the given Id as final fallback if all elements above don't exist string identityId = metadataCache.GetString(idElement?.Value ?? titleElement?.Value); string versionString = properties.Element(_xnameVersion).Value; NuGetVersion version = metadataCache.GetVersion(metadataCache.GetString(versionString)); string downloadUrl = metadataCache.GetString(element.Element(_xnameContent).Attribute("src").Value); string title = metadataCache.GetString(titleElement?.Value); string summary = metadataCache.GetString(GetString(element, _xnameSummary)); string description = metadataCache.GetString(GetString(properties, _xnameDescription)); string iconUrl = metadataCache.GetString(GetString(properties, _xnameIconUrl)); string licenseUrl = metadataCache.GetString(GetString(properties, _xnameLicenseUrl)); string projectUrl = metadataCache.GetString(GetString(properties, _xnameProjectUrl)); string reportAbuseUrl = metadataCache.GetString(GetString(properties, _xnameReportAbuseUrl)); string tags = metadataCache.GetString(GetString(properties, _xnameTags)); string dependencies = metadataCache.GetString(GetString(properties, _xnameDependencies)); string downloadCount = metadataCache.GetString(GetString(properties, _xnameDownloadCount)); bool requireLicenseAcceptance = StringComparer.OrdinalIgnoreCase.Equals(bool.TrueString, GetString(properties, _xnameRequireLicenseAcceptance)); string packageHash = metadataCache.GetString(GetString(properties, _xnamePackageHash)); string packageHashAlgorithm = metadataCache.GetString(GetString(properties, _xnamePackageHashAlgorithm)); NuGetVersion minClientVersion = null; var minClientVersionString = GetString(properties, _xnameMinClientVersion); if (!string.IsNullOrEmpty(minClientVersionString)) { if (NuGetVersion.TryParse(minClientVersionString, out minClientVersion)) { minClientVersion = metadataCache.GetVersion(minClientVersionString); } } DateTimeOffset?created = GetDate(properties, _xnameCreated); DateTimeOffset?lastEdited = GetDate(properties, _xnameLastEdited); DateTimeOffset?published = GetDate(properties, _xnamePublished); IEnumerable <string> owners = null; IEnumerable <string> authors = null; var authorNode = element.Element(_xnameAuthor); if (authorNode != null) { authors = authorNode.Elements(_xnameName).Select(e => metadataCache.GetString(e.Value)); } return(new V2FeedPackageInfo(new PackageIdentity(identityId, version), title, summary, description, authors, owners, iconUrl, licenseUrl, projectUrl, reportAbuseUrl, tags, created, lastEdited, published, dependencies, requireLicenseAcceptance, downloadUrl, downloadCount, packageHash, packageHashAlgorithm, minClientVersion)); }