public void PackageOverridesContainsCorrectEntries()
        {
            if (!_isTargetingPackBuilding)
            {
                return;
            }

            var packageOverridePath = Path.Combine(_targetingPackRoot, "data", "PackageOverrides.txt");

            AssertEx.FileExists(packageOverridePath);

            var packageOverrideFileLines = File.ReadAllLines(packageOverridePath);
            var runtimeDependencies      = TestData.GetRuntimeTargetingPackDependencies()
                                           .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                           .ToHashSet();
            var aspnetcoreDependencies = TestData.GetAspNetCoreTargetingPackDependencies()
                                         .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                         .ToHashSet();

            Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count);

            foreach (var entry in packageOverrideFileLines)
            {
                var packageOverrideParts = entry.Split("|");
                var packageName          = packageOverrideParts[0];
                var packageVersion       = packageOverrideParts[1];

                if (runtimeDependencies.Contains(packageName))
                {
                    Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), packageVersion);
                }
                else if (aspnetcoreDependencies.Contains(packageName))
                {
                    Assert.Equal(TestData.GetReferencePackSharedFxVersion(), packageVersion);
                }
                else
                {
                    Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency");
                }
            }
        }
        public void PackageOverridesContainsCorrectEntries()
        {
            if (!_isTargetingPackBuilding)
            {
                return;
            }

            var packageOverridePath = Path.Combine(_targetingPackRoot, "data", "PackageOverrides.txt");

            AssertEx.FileExists(packageOverridePath);

            var packageOverrideFileLines = File.ReadAllLines(packageOverridePath);
            var runtimeDependencies      = TestData.GetRuntimeTargetingPackDependencies()
                                           .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                           .ToHashSet();
            var aspnetcoreDependencies = TestData.GetAspNetCoreTargetingPackDependencies()
                                         .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                         .ToHashSet();

            Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count);

            // PackageOverrides versions should remain at Major.Minor.0 while servicing.
            var netCoreAppPackageVersion = TestData.GetMicrosoftNETCoreAppPackageVersion();

            Assert.True(
                NuGetVersion.TryParse(netCoreAppPackageVersion, out var parsedVersion),
                "MicrosoftNETCoreAppPackageVersion must be convertable to a NuGetVersion.");
            if (parsedVersion.Patch != 0 && !parsedVersion.IsPrerelease)
            {
                netCoreAppPackageVersion = $"{parsedVersion.Major}.{parsedVersion.Minor}.0";
            }

            var aspNetCoreAppPackageVersion = TestData.GetReferencePackSharedFxVersion();

            Assert.True(
                NuGetVersion.TryParse(aspNetCoreAppPackageVersion, out parsedVersion),
                "ReferencePackSharedFxVersion must be convertable to a NuGetVersion.");
            if (parsedVersion.Patch != 0 && !parsedVersion.IsPrerelease)
            {
                aspNetCoreAppPackageVersion = $"{parsedVersion.Major}.{parsedVersion.Minor}.0";
            }

            Assert.All(packageOverrideFileLines, entry =>
            {
                var packageOverrideParts = entry.Split("|");
                Assert.Equal(2, packageOverrideParts.Length);

                var packageName    = packageOverrideParts[0];
                var packageVersion = packageOverrideParts[1];

                if (runtimeDependencies.Contains(packageName))
                {
                    Assert.Equal(netCoreAppPackageVersion, packageVersion);
                }
                else if (aspnetcoreDependencies.Contains(packageName))
                {
                    Assert.Equal(aspNetCoreAppPackageVersion, packageVersion);
                }
                else
                {
                    Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency");
                }
            });
        }