public TestPackage DependsOn(string id, string version, LibraryDependencyTarget target = LibraryDependencyTarget.All, bool versionCentrallyManaged = false, LibraryDependencyReferenceType?libraryDependencyReferenceType = null, LibraryIncludeFlags?privateAssets = null)
            {
                var libraryDependency = new LibraryDependency
                {
                    LibraryRange =
                        new LibraryRange
                    {
                        Name           = id,
                        VersionRange   = VersionRange.Parse(version),
                        TypeConstraint = target
                    },
                    VersionCentrallyManaged = versionCentrallyManaged,
                };

                if (privateAssets != null)
                {
                    libraryDependency.SuppressParent = privateAssets.Value;
                }

                if (libraryDependencyReferenceType != null)
                {
                    libraryDependency.ReferenceType = libraryDependencyReferenceType.Value;
                }

                _dependencies.Add(libraryDependency);

                return(this);
            }
Exemple #2
0
        private static LibraryType GetLibraryTypeFromLibraryDependencyTarget(LibraryDependencyTarget target)
        {
            switch (target)
            {
            case LibraryDependencyTarget.Package:
                return(LibraryType.Package);

            case LibraryDependencyTarget.Project:
                return(LibraryType.Project);

            case LibraryDependencyTarget.Reference:
                return(LibraryType.Reference);

            case LibraryDependencyTarget.Assembly:
                return(LibraryType.Assembly);

            case LibraryDependencyTarget.ExternalProject:
                return(LibraryType.ExternalProject);

            case LibraryDependencyTarget.WinMD:
                return(LibraryType.WinMD);

            default:
                return(LibraryType.Unresolved);
            }
        }
Exemple #3
0
        public void LibraryDependencyTargetUtils_Parse(string input, LibraryDependencyTarget expected)
        {
            // Arrange & Act
            var actual = LibraryDependencyTargetUtils.Parse(input);

            // Assert
            Assert.Equal(expected, actual);
        }
 public GraphNode <RemoteResolveResult> GetNode(string id, string range, LibraryDependencyTarget target, string version, LibraryType type)
 {
     return(new GraphNode <RemoteResolveResult>(new LibraryRange(id.ToUpperInvariant(), VersionRange.Parse(range), LibraryDependencyTarget.All))
     {
         Item = new GraphItem <RemoteResolveResult>(
             new LibraryIdentity(
                 id.ToLowerInvariant(),
                 new NuGetVersion(version),
                 type))
     });
 }
        private void ScanLibraries(LockFileTarget target,
                                   LockFileLookup lockFileLookup,
                                   Dictionary <LibraryKey, LibraryDescription> libraries,
                                   MSBuildDependencyProvider msbuildResolver,
                                   PackageDependencyProvider packageResolver,
                                   ProjectDependencyProvider projectResolver)
        {
            foreach (var library in target.Libraries)
            {
                LibraryDescription      description = null;
                LibraryDependencyTarget type        = LibraryDependencyTarget.All;

                if (string.Equals(library.Type, "project"))
                {
                    var projectLibrary = lockFileLookup.GetProject(library.Name);

                    if (projectLibrary != null)
                    {
                        if (MSBuildDependencyProvider.IsMSBuildProjectLibrary(projectLibrary))
                        {
                            description = msbuildResolver.GetDescription(TargetFramework, projectLibrary, library, IsDesignTime);
                            type        = LibraryDependencyTarget.Project;
                        }
                        else
                        {
                            var path = Path.GetFullPath(Path.Combine(ProjectDirectory, projectLibrary.Path));
                            description = projectResolver.GetDescription(library.Name, path, library, ProjectResolver);
                            type        = LibraryDependencyTarget.Project;
                        }
                    }
                }
                else
                {
                    var packageEntry = lockFileLookup.GetPackage(library.Name, library.Version);

                    if (packageEntry != null)
                    {
                        description = packageResolver.GetDescription(TargetFramework, packageEntry, library);
                    }

                    type = LibraryDependencyTarget.Package;
                }

                description = description ??
                              UnresolvedDependencyProvider.GetDescription(
                    new ProjectLibraryDependency
                {
                    LibraryRange = new LibraryRange(library.Name, type)
                },
                    target.TargetFramework);

                libraries.Add(new LibraryKey(library.Name), description);
            }
        }
Exemple #6
0
        public async Task FindLibraryEntryAsync_LogsOnlyPackages(LibraryDependencyTarget libraryDependencyTarget)
        {
            // Arrange
            const string packageX = "x", version = "1.0.0-beta.1", source = "source";
            var          range          = new LibraryRange(packageX, VersionRange.Parse(version), libraryDependencyTarget);
            var          cacheContext   = new SourceCacheContext();
            var          testLogger     = new TestLogger();
            var          framework      = NuGetFramework.Parse("net45");
            var          token          = CancellationToken.None;
            var          edge           = new GraphEdge <RemoteResolveResult>(null, null, null);
            var          actualIdentity = new LibraryIdentity(packageX, NuGetVersion.Parse(version), LibraryType.Package);
            var          dependencies   = new[] { new LibraryDependency()
                                                  {
                                                      LibraryRange = new LibraryRange("y", VersionRange.All, LibraryDependencyTarget.Package)
                                                  } };
            var dependencyInfo = LibraryDependencyInfo.Create(actualIdentity, framework, dependencies);

            //package source mapping configuration
            Dictionary <string, IReadOnlyList <string> > patterns = new();

            patterns.Add(source, new List <string>()
            {
                packageX
            });
            PackageSourceMapping sourceMappingConfiguration = new(patterns);
            var context = new RemoteWalkContext(cacheContext, sourceMappingConfiguration, testLogger);

            var remoteProvider = new Mock <IRemoteDependencyProvider>();

            remoteProvider.Setup(e => e.FindLibraryAsync(range, It.IsAny <NuGetFramework>(), It.IsAny <SourceCacheContext>(), testLogger, token))
            .ReturnsAsync(actualIdentity);
            remoteProvider.SetupGet(e => e.IsHttp).Returns(true);
            remoteProvider.SetupGet(e => e.Source).Returns(new PackageSource(source));
            remoteProvider.Setup(e => e.GetDependenciesAsync(It.IsAny <LibraryIdentity>(), It.IsAny <NuGetFramework>(), It.IsAny <SourceCacheContext>(), testLogger, token))
            .ReturnsAsync(dependencyInfo);
            context.RemoteLibraryProviders.Add(remoteProvider.Object);

            // Act
            var result = await ResolverUtility.FindLibraryEntryAsync(range, framework, null, context, token);

            // Assert
            Assert.Equal(0, testLogger.Errors);
            testLogger.DebugMessages.TryPeek(out string message);
            if (libraryDependencyTarget == LibraryDependencyTarget.Package)
            {
                Assert.Equal($"Package source mapping matches found for package ID '{packageX}' are: '{source}'.", message);
                Assert.Equal(version, result.Key.Version.ToString());
                Assert.Equal(source, result.Data.Match.Provider.Source.Name);
            }
            else
            {
                Assert.Equal(message, null);
            }
        }
            public TestPackage DependsOn(string id, LibraryDependencyTarget target = LibraryDependencyTarget.All)
            {
                _dependencies.Add(new LibraryDependency
                {
                    LibraryRange = new LibraryRange
                    {
                        Name           = id,
                        TypeConstraint = target
                    }
                });

                return(this);
            }
        private static bool ValidateDependencyTarget(LibraryDependencyTarget targetValue)
        {
            var isValid = false;

            switch (targetValue)
            {
            case LibraryDependencyTarget.Package:
            case LibraryDependencyTarget.Project:
            case LibraryDependencyTarget.ExternalProject:
                isValid = true;
                break;
            }

            return(isValid);
        }
Exemple #9
0
            public TestPackage DependsOn(string id, string version, LibraryDependencyTarget target = LibraryDependencyTarget.All, bool versionCentrallyManaged = false, LibraryDependencyReferenceType libraryDependencyReferenceType = LibraryDependencyReferenceType.Direct)
            {
                _dependencies.Add(new LibraryDependency
                {
                    LibraryRange = new LibraryRange
                    {
                        Name           = id,
                        VersionRange   = VersionRange.Parse(version),
                        TypeConstraint = target
                    },
                    VersionCentrallyManaged = versionCentrallyManaged,
                    ReferenceType           = libraryDependencyReferenceType,
                });

                return(this);
            }
Exemple #10
0
        [InlineData(LibraryDependencyTarget.Package, LibraryDependencyTarget.Assembly, false)] // different
        public void LibraryRange_Equals_TypeConstraint(
            LibraryDependencyTarget typeConstraintA,
            LibraryDependencyTarget typeConstraintB,
            bool expected)
        {
            // Arrange
            var version = VersionRange.Parse("1.0.0");
            var rangeA  = new LibraryRange("packageA", version, typeConstraintA);
            var rangeB  = new LibraryRange("packageA", version, typeConstraintB);

            // Act
            var actual = rangeA.Equals(rangeB);

            // Assert
            Assert.Equal(expected, actual);
        }
        /// <summary>
        /// Convert type flags to a friendly string.
        /// </summary>
        public static string GetFlagString(LibraryDependencyTarget flags)
        {
            if (flags == LibraryDependencyTarget.None)
            {
                return("none");
            }

            if (flags == LibraryDependencyTarget.All)
            {
                return("all");
            }

            var flagStrings = new List <string>();

            foreach (LibraryDependencyTarget value in Enum.GetValues(typeof(LibraryDependencyTarget)))
            {
                if (value != LibraryDependencyTarget.None && flags.HasFlag(value))
                {
                    flagStrings.Add(value.ToString().ToLowerInvariant());
                }
            }

            return(string.Join(",", flagStrings));
        }
Exemple #12
0
 public LibraryRange(string name, VersionRange versionRange, LibraryDependencyTarget typeConstraint)
 {
     Name           = name;
     VersionRange   = versionRange;
     TypeConstraint = typeConstraint;
 }
Exemple #13
0
 /// <summary>
 /// True if the type constraint allows the flag.
 /// </summary>
 public bool TypeConstraintAllows(LibraryDependencyTarget flag)
 {
     return((TypeConstraint & flag) == flag);
 }
 /// <summary>
 /// Checks if a LibraryDependencyTarget is a project.
 /// </summary>
 /// <param name="type">LibraryDependencyTarget to be checked.</param>
 /// <returns>True if a LibraryDependencyTarget is Project or ExternalProject.</returns>
 private static bool IsProject(LibraryDependencyTarget type)
 {
     return(type == LibraryDependencyTarget.ExternalProject || type == LibraryDependencyTarget.Project);
 }
 public GraphNode <RemoteResolveResult> GetUnresolvedNode(string id, string range, LibraryDependencyTarget target)
 {
     return(new GraphNode <RemoteResolveResult>(new LibraryRange(id.ToUpperInvariant(), VersionRange.Parse(range), target)));
 }
 public bool SupportsType(LibraryDependencyTarget libraryType)
 {
     return((libraryType & LibraryDependencyTarget.Package) == LibraryDependencyTarget.Package);
 }
 public bool SupportsType(LibraryDependencyTarget libraryType)
 {
     return((libraryType & (LibraryDependencyTarget.Project | LibraryDependencyTarget.ExternalProject)) != LibraryDependencyTarget.None);
 }
Exemple #18
0
 /// <summary>
 /// True if any flags are allowed by the constraint.
 /// </summary>
 public bool TypeConstraintAllowsAnyOf(LibraryDependencyTarget flag)
 {
     return((TypeConstraint & flag) != LibraryDependencyTarget.None);
 }
Exemple #19
0
 public LibraryRange(string name, LibraryDependencyTarget typeConstraint) : this(name, null, typeConstraint)
 {
 }
Exemple #20
0
 public bool SupportsType(LibraryDependencyTarget libraryTypeFlag)
 {
     return(libraryTypeFlag == LibraryDependencyTarget.Project);
 }