public void HashCode_WithCaseInsensitiveDependencies_IsEqual() { var leftSide = new ProjectFileDependencyGroup("frameworkName", new string[] { "a", "c", "b" }); var rightSide = new ProjectFileDependencyGroup("frameworkName", new string[] { "B", "a", "C" }); leftSide.GetHashCode().Should().Be(rightSide.GetHashCode()); }
public void HashCode_WithCaseInsensitiveFrameworkName_IsEqual() { var leftSide = new ProjectFileDependencyGroup("frameworkName", Enumerable.Empty <string>()); var rightSide = new ProjectFileDependencyGroup("FrameworkName", Enumerable.Empty <string>()); leftSide.GetHashCode().Should().Be(rightSide.GetHashCode()); }
public void HashCode_WithDifferentCountDependencies_IsNotEqual() { var leftSide = new ProjectFileDependencyGroup("frameworkName", new string[] { "a", "c", "b", "extra" }); var rightSide = new ProjectFileDependencyGroup("frameworkName", new string[] { "a", "c", "b" }); leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode()); }
public void HashCode_WithDifferentFrameworkName_IsNotEqual() { var leftSide = new ProjectFileDependencyGroup("frameworkName", Enumerable.Empty <string>()); var rightSide = new ProjectFileDependencyGroup("differetName", Enumerable.Empty <string>()); leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode()); }
public void Equals_WithCaseInsensitiveDependencies_ReturnsTrue() { var leftSide = new ProjectFileDependencyGroup("frameworkName", new string[] { "a", "c", "b" }); var rightSide = new ProjectFileDependencyGroup("frameworkName", new string[] { "B", "a", "C" }); leftSide.Should().Be(rightSide); }
public void Equals_WithDifferentCountDependencies_ReturnsFalse() { var leftSide = new ProjectFileDependencyGroup("frameworkName", new string[] { "a", "c", "b", "extra" }); var rightSide = new ProjectFileDependencyGroup("frameworkName", new string[] { "a", "c", "b" }); leftSide.Should().NotBe(rightSide); }
public void Equals_WithCaseInsensitiveFrameworkName_ReturnsTrue() { var leftSide = new ProjectFileDependencyGroup("frameworkName", Enumerable.Empty <string>()); var rightSide = new ProjectFileDependencyGroup("FrameworkName", Enumerable.Empty <string>()); leftSide.Should().Be(rightSide); }
public void Equals_WithDifferentFrameworkName_ReturnsFalse() { var leftSide = new ProjectFileDependencyGroup("frameworkName", Enumerable.Empty <string>()); var rightSide = new ProjectFileDependencyGroup("differetName", Enumerable.Empty <string>()); leftSide.Should().NotBe(rightSide); }
private static void AddProjectFileDependenciesForPackageReference(PackageSpec project, LockFile lockFile, IEnumerable <RestoreTargetGraph> targetGraphs) { // For NETCore put everything under a TFM section // Projects are included for NETCore foreach (var frameworkInfo in project.TargetFrameworks .OrderBy(framework => framework.FrameworkName.ToString(), StringComparer.Ordinal)) { var dependencies = new List <LibraryRange>(); dependencies.AddRange(project.Dependencies.Select(e => e.LibraryRange)); dependencies.AddRange(frameworkInfo.Dependencies.Select(e => e.LibraryRange)); var targetGraph = targetGraphs.SingleOrDefault(graph => graph.Framework.Equals(frameworkInfo.FrameworkName) && string.IsNullOrEmpty(graph.RuntimeIdentifier)); var resolvedEntry = targetGraph? .Flattened .SingleOrDefault(library => library.Key.Name.Equals(project.Name, StringComparison.OrdinalIgnoreCase)); Debug.Assert(resolvedEntry != null, "Unable to find project entry in target graph, project references will not be added"); // In some failure cases where there is a conflict the root level project cannot be resolved, this should be handled gracefully if (resolvedEntry != null) { dependencies.AddRange(resolvedEntry.Data.Dependencies.Where(lib => lib.LibraryRange.TypeConstraint == LibraryDependencyTarget.ExternalProject) .Select(lib => lib.LibraryRange)); } var seen = new HashSet <string>(StringComparer.OrdinalIgnoreCase); var uniqueDependencies = new List <LibraryRange>(); foreach (var dependency in dependencies) { if (seen.Add(dependency.Name)) { uniqueDependencies.Add(dependency); } } // Add entry var dependencyGroup = new ProjectFileDependencyGroup( frameworkInfo.FrameworkName.ToString(), uniqueDependencies.Select(x => x.ToLockFileDependencyGroupString()) .OrderBy(dependency => dependency, StringComparer.Ordinal)); lockFile.ProjectFileDependencyGroups.Add(dependencyGroup); } }
private JProperty WriteProjectFileDependencyGroup(ProjectFileDependencyGroup frameworkInfo) { return(new JProperty( frameworkInfo.FrameworkName, WriteArray(frameworkInfo.Dependencies, WriteString))); }