public void GetParents_WhenEveryLeafNodeIsDirty_ReturnsAllProjectsInTheSolution() { var projectA = GetPackageSpec("A"); var projectB = GetPackageSpec("B"); var projectC = GetPackageSpec("C"); var projectD = GetPackageSpec("D"); var projectE = GetPackageSpec("E"); // A => B & C projectA = projectA.WithTestProjectReference(projectB).WithTestProjectReference(projectC); // B => D projectB = projectB.WithTestProjectReference(projectD); // C => E projectC = projectC.WithTestProjectReference(projectE); var dgSpec = new DependencyGraphSpec(); dgSpec.AddProject(projectA); dgSpec.AddRestore(projectA.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectB); dgSpec.AddRestore(projectB.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectC); dgSpec.AddRestore(projectC.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectD); dgSpec.AddRestore(projectD.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectE); dgSpec.AddRestore(projectE.RestoreMetadata.ProjectUniqueName); var expected = GetUniqueNames(projectA, projectB, projectC, projectD, projectE); var actual = SolutionUpToDateChecker.GetParents(GetUniqueNames(projectD, projectE), dgSpec); actual.Should().BeEquivalentTo(expected); }
public void GetParents_WhenDirtySpecsListIsEmpty_ReturnsEmpty() { var projectA = GetPackageSpec("A"); var projectB = GetPackageSpec("B"); var projectC = GetPackageSpec("C"); // A => B => C projectA = projectA.WithTestProjectReference(projectB); projectB = projectB.WithTestProjectReference(projectC); var dgSpec = new DependencyGraphSpec(); dgSpec.AddProject(projectA); dgSpec.AddRestore(projectA.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectB); dgSpec.AddRestore(projectB.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectC); dgSpec.AddRestore(projectC.RestoreMetadata.ProjectUniqueName); Assert.Empty(SolutionUpToDateChecker.GetParents(new List <string>(), dgSpec)); }
public void GetParents_WithMultiLevelGraph_WhenALeafIsDirty_ReturnsProjectsFromEveryLevelAsDirty() { var projectA = GetPackageSpec("A"); var projectB = GetPackageSpec("B"); var projectC = GetPackageSpec("C"); var projectD = GetPackageSpec("D"); var projectE = GetPackageSpec("E"); var projectF = GetPackageSpec("F"); var projectG = GetPackageSpec("G"); var projectH = GetPackageSpec("H"); var projectI = GetPackageSpec("I"); var projectJ = GetPackageSpec("J"); var projectK = GetPackageSpec("K"); var projectL = GetPackageSpec("L"); var projectM = GetPackageSpec("M"); // A => B & C projectA = projectA.WithTestProjectReference(projectB).WithTestProjectReference(projectC); // B => D projectB = projectB.WithTestProjectReference(projectD); // D => F projectD = projectD.WithTestProjectReference(projectF); // C => E projectC = projectC.WithTestProjectReference(projectE); // G => D projectG = projectG.WithTestProjectReference(projectD); // H => C projectH = projectH.WithTestProjectReference(projectC); // I => F projectI = projectI.WithTestProjectReference(projectF); // H => I projectH = projectH.WithTestProjectReference(projectI); // K => L projectK = projectK.WithTestProjectReference(projectL); // J => K projectJ = projectJ.WithTestProjectReference(projectK); // H => J projectH = projectH.WithTestProjectReference(projectJ); // M => L projectM = projectM.WithTestProjectReference(projectL); var dgSpec = new DependencyGraphSpec(); dgSpec.AddProject(projectA); dgSpec.AddRestore(projectA.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectB); dgSpec.AddRestore(projectB.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectC); dgSpec.AddRestore(projectC.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectD); dgSpec.AddRestore(projectD.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectE); dgSpec.AddRestore(projectE.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectF); dgSpec.AddRestore(projectF.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectG); dgSpec.AddRestore(projectG.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectH); dgSpec.AddRestore(projectH.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectI); dgSpec.AddRestore(projectI.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectJ); dgSpec.AddRestore(projectJ.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectK); dgSpec.AddRestore(projectK.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectL); dgSpec.AddRestore(projectL.RestoreMetadata.ProjectUniqueName); dgSpec.AddProject(projectM); dgSpec.AddRestore(projectM.RestoreMetadata.ProjectUniqueName); var expected = GetUniqueNames(projectA, projectC, projectE, projectH, projectJ, projectK, projectL, projectM); var actual = SolutionUpToDateChecker.GetParents(GetUniqueNames(projectE, projectL), dgSpec); actual.Should().BeEquivalentTo(expected); }