public void IsLockFileStillValid_WithProjectToProjectPackagesConfig_WithIncompatibleFrameworks_IgnoresCompatiblityChecksAndSucceeds()
        {
            // Arrange
            var framework             = CommonFrameworks.NetStandard;
            var frameworkShortName    = framework.GetShortFolderName();
            var incompatibleFramework = CommonFrameworks.Net46;
            var projectA = ProjectJsonTestHelpers.GetPackageSpec("A", framework: frameworkShortName);
            var projectB = ProjectJsonTestHelpers.GetPackagesConfigPackageSpec("B", framework: incompatibleFramework.GetShortFolderName());

            // A -> B
            projectA = projectA.WithTestProjectReference(projectB);

            var dgSpec = ProjectJsonTestHelpers.GetDGSpec(projectA, projectB);

            var lockFile = new PackagesLockFileBuilder()
                           .WithTarget(target => target
                                       .WithFramework(framework)
                                       .WithDependency(dep => dep
                                                       .WithId("B")
                                                       .WithType(PackageDependencyType.Project)
                                                       .WithRequestedVersion(VersionRange.Parse("1.0.0"))
                                                       ))
                           .Build();

            PackagesLockFileUtilities.IsLockFileStillValid(dgSpec, lockFile).Should().BeTrue();
        }
        public void IsLockFileStillValid_WithProjectToProjectPackagesConfig_IncludesAllDependencies()
        {
            // Arrange
            var framework          = CommonFrameworks.Net50;
            var frameworkShortName = framework.GetShortFolderName();
            var projectA           = ProjectJsonTestHelpers.GetPackageSpec("A", framework: frameworkShortName);
            var projectB           = ProjectJsonTestHelpers.GetPackagesConfigPackageSpec("B");
            var projectC           = ProjectJsonTestHelpers.GetPackageSpec("C", framework: frameworkShortName);

            var packageC = new LibraryDependency(
                new LibraryRange("packageC", versionRange: VersionRange.Parse("2.0.0"), LibraryDependencyTarget.Package),
                type: LibraryDependencyType.Default,
                includeType: LibraryIncludeFlags.All,
                suppressParent: LibraryIncludeFlagUtils.DefaultSuppressParent,
                noWarn: new List <Common.NuGetLogCode>(),
                autoReferenced: false,
                generatePathProperty: true,
                versionCentrallyManaged: false,
                libraryDependencyReferenceType: LibraryDependencyReferenceType.Direct,
                aliases: null);

            // B -> C
            projectB = projectB.WithTestProjectReference(projectC);

            // A -> B
            projectA = projectA.WithTestProjectReference(projectB);

            // C -> PackageC
            projectC.TargetFrameworks.First().Dependencies.Add(packageC);

            var dgSpec = ProjectJsonTestHelpers.GetDGSpec(projectA, projectB, projectC);

            var lockFile = new PackagesLockFileBuilder()
                           .WithTarget(target => target
                                       .WithFramework(framework)
                                       .WithDependency(dep => dep
                                                       .WithId("B")
                                                       .WithType(PackageDependencyType.Project)
                                                       .WithRequestedVersion(VersionRange.Parse("1.0.0"))
                                                       .WithDependency(new PackageDependency("C", VersionRange.Parse("1.0.0"))))
                                       .WithDependency(dep => dep
                                                       .WithId("C")
                                                       .WithType(PackageDependencyType.Project)
                                                       .WithRequestedVersion(VersionRange.Parse("1.0.0"))
                                                       .WithDependency(new PackageDependency("packageC", VersionRange.Parse("2.0.0"))))
                                       .WithDependency(dep => dep
                                                       .WithId("packageC")
                                                       .WithType(PackageDependencyType.Transitive)
                                                       .WithRequestedVersion(VersionRange.Parse("2.0.0"))
                                                       .WithResolvedVersion(NuGetVersion.Parse("2.0.0"))
                                                       ))
                           .Build();

            PackagesLockFileUtilities.IsLockFileStillValid(dgSpec, lockFile).Should().BeTrue();
        }