Skip to content

Commit

Permalink
[TFM Display][Bug] Any framework fix as supported framework. (#8996)
Browse files Browse the repository at this point in the history
* Any framework is accepted as supported framework.

* Normalize file paths for the backfill job.
  • Loading branch information
dannyjdev committed Feb 10, 2022
1 parent 276c658 commit 04ace5f
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 44 deletions.
2 changes: 1 addition & 1 deletion src/GalleryTools/Commands/BackfillCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,7 @@ private async Task<TMetadata> FetchMetadataAsync(
var zipDirectory = await zipDirectoryReader.ReadAsync();
var files = zipDirectory
.Entries
.Select(x => x.GetName())
.Select(x => FileNameHelper.GetZipEntryPath(x.GetName()))
.ToList();

return ReadMetadata(files, nuspecReader);
Expand Down
2 changes: 1 addition & 1 deletion src/GalleryTools/Commands/BackfillTfmMetadataCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ protected override List<string> ReadMetadata(IList<string> files, NuspecReader n
// See https://github.com/NuGet/NuGet.Client/blob/ba008e14611f4fa518c2d02ed78dfe5969e4a003/src/NuGet.Core/NuGet.Frameworks/FrameworkNameProvider.cs#L487 }
try
{
var tfmToAdd = tfm.ToShortNameOrNull();
var tfmToAdd = tfm.GetShortFolderName();
if (!string.IsNullOrEmpty(tfmToAdd))
{
supportedTFMs.Add(tfmToAdd);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public PackageFrameworkCompatibility Create(ICollection<PackageFramework> packag

var filteredPackageFrameworks = packageFrameworks
.Select(pf => pf.FrameworkName)
.Where(f => !f.IsUnsupported && !f.IsPCL)
.Where(f => !f.IsUnsupported && !f.IsPCL && !f.IsAny)
.ToHashSet();

var table = CreateFrameworkCompatibilityTable(filteredPackageFrameworks);
Expand Down
30 changes: 12 additions & 18 deletions src/NuGetGallery.Services/PackageManagement/PackageService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ public PackageDependents GetPackageDependents(string id)
{
throw new ArgumentNullException(nameof(id));
}

PackageDependents result = new PackageDependents();

// We use OPTIMIZE FOR UNKNOWN by default here because there are distinct 2-3 query plans that may be
Expand Down Expand Up @@ -321,7 +321,7 @@ IEnumerable<Package> GetSortedFiltered(IEnumerable<Package> localPackages, bool
var semvered = localPackages
.Select(package => new {package, semVer= NuGetVersion.Parse(package.NormalizedVersion)})
.ToList();

return semvered
.Where(d => d.semVer.IsPrerelease == prerelease || !applyPrereleaseFilter)
.OrderByDescending(d => d.semVer)
Expand All @@ -342,13 +342,13 @@ Package GetPrereleaseByVersion()
.FirstOrDefault();
}
}

Package GetLatestPrerelease()
{
return GetSortedFiltered(packages)
.FirstOrDefault();
}

Package GetLatestStable()
{
return GetSortedFiltered(packages, false)
Expand Down Expand Up @@ -663,23 +663,17 @@ public virtual Package EnrichPackageFromNuGetPackage(
package.Authors.Add(new PackageAuthor { Name = author });
}
#pragma warning restore 618

var supportedFrameworks = GetSupportedFrameworks(packageArchive)

var supportedFrameworkNames = GetSupportedFrameworks(packageArchive)
.Select(fn => fn.GetShortFolderName())
.Where(fn => fn != null)
.ToArray();

if (!supportedFrameworks.Any(fx => fx != null && fx.IsAny))
{
var supportedFrameworkNames = supportedFrameworks
.Select(fn => fn.ToShortNameOrNull())
.Where(fn => fn != null)
.ToArray();

ValidateSupportedFrameworks(supportedFrameworkNames);
ValidateSupportedFrameworks(supportedFrameworkNames);

foreach (var supportedFramework in supportedFrameworkNames)
{
package.SupportedFrameworks.Add(new PackageFramework { TargetFramework = supportedFramework });
}
foreach (var supportedFramework in supportedFrameworkNames)
{
package.SupportedFrameworks.Add(new PackageFramework { TargetFramework = supportedFramework });
}

package.Dependencies = packageMetadata
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,23 @@ public void PortableClassLibrariesFrameworksShouldBeIgnored()
Assert.Null(result.Badges.NetFramework);
}

[Fact]
public void AnyFrameworksShouldBeIgnored()
{
var packageFrameworks = new HashSet<PackageFramework>()
{
new PackageFramework() { TargetFramework = "any" },
};

var result = _factory.Create(packageFrameworks.ToList());

Assert.Empty(result.Table);
Assert.Null(result.Badges.Net);
Assert.Null(result.Badges.NetCore);
Assert.Null(result.Badges.NetStandard);
Assert.Null(result.Badges.NetFramework);
}

[Theory]
[InlineData(FrameworkProductNames.Net, "net5.0", "net6.0", "net6.0-android")]
[InlineData(FrameworkProductNames.NetCore, "netcoreapp1.0", "netcoreapp3.1")]
Expand Down
26 changes: 3 additions & 23 deletions tests/NuGetGallery.Facts/Services/PackageServiceFacts.cs
Original file line number Diff line number Diff line change
Expand Up @@ -944,7 +944,8 @@ public async Task WillSaveSupportedFrameworks()
new[]
{
NuGetFramework.Parse("net40"),
NuGetFramework.Parse("net35")
NuGetFramework.Parse("net35"),
NuGetFramework.Parse("any")
});
});
var nugetPackage = PackageServiceUtility.CreateNuGetPackage();
Expand All @@ -954,28 +955,7 @@ public async Task WillSaveSupportedFrameworks()

Assert.Equal("net40", package.SupportedFrameworks.First().TargetFramework);
Assert.Equal("net35", package.SupportedFrameworks.ElementAt(1).TargetFramework);
}

[Fact]
public async Task WillNotSaveAnySupportedFrameworksWhenThereIsAnAnyTargetFramework()
{
var packageRegistrationRepository = new Mock<IEntityRepository<PackageRegistration>>();
var service = CreateService(packageRegistrationRepository: packageRegistrationRepository, setup: mockPackageService =>
{
mockPackageService.Setup(p => p.FindPackageRegistrationById(It.IsAny<string>())).Returns((PackageRegistration)null);
mockPackageService.Setup(p => p.GetSupportedFrameworks(It.IsAny<PackageArchiveReader>())).Returns(
new[]
{
NuGetFramework.Parse("any"),
NuGetFramework.Parse("net35")
});
});
var nugetPackage = PackageServiceUtility.CreateNuGetPackage();
var currentUser = new User();

var package = await service.CreatePackageAsync(nugetPackage.Object, new PackageStreamMetadata(), currentUser, currentUser, isVerified: false);

Assert.Empty(package.SupportedFrameworks);
Assert.Equal("any", package.SupportedFrameworks.ElementAt(2).TargetFramework);
}

[Theory]
Expand Down

0 comments on commit 04ace5f

Please sign in to comment.