Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
0
 private JProperty WriteProjectFileDependencyGroup(ProjectFileDependencyGroup frameworkInfo)
 {
     return(new JProperty(
                frameworkInfo.FrameworkName,
                WriteArray(frameworkInfo.Dependencies, WriteString)));
 }