public async Task DotnetListPackage_NoRestore_Fail() { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net46"); var packageX = XPlatTestUtils.CreatePackage(); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --no-restore"); Assert.True(addResult.Success); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package"); Assert.True(ContainsIgnoringSpaces(listResult.AllOutput, "No assets file was found".Replace(" ", ""))); } }
public async Task DotnetListPackage_OutdatedWithNoVersionsFound_Succeeds() { // Arrange using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject("ProjectA", pathContext, "net46"); var packageX = XPlatTestUtils.CreatePackage(packageId: "packageX", packageVersion: "1.0.0"); await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --version 1.0.0 --no-restore"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); foreach (var nupkg in Directory.EnumerateDirectories(pathContext.PackageSource)) { Directory.Delete(nupkg, recursive: true); } // Act var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package --outdated"); // Assert var lines = listResult.AllOutput.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); Assert.True(lines.Any(l => l.Contains("packageX") && l.Contains("Not found at the sources")), "Line containing 'packageX' and 'Not found at the sources' not found: " + listResult.AllOutput); } }
public async Task DotnetListPackage_InvalidFramework_Fail() { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net46"); var packageX = XPlatTestUtils.CreatePackage(); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --no-restore"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package --framework net46 --framework invalidFramework", true); Assert.False(listResult.Success); } }
public async Task DotnetListPackage_Succeed() { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net46"); var packageX = XPlatTestUtils.CreatePackage(); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --version 1.0.0 --no-restore"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package"); Assert.True(ContainsIgnoringSpaces(listResult.AllOutput, "packageX1.0.01.0.0")); } }
public async Task DotnetListPackage_Outdated_Succeed(string currentVersion, string args, string expectedVersion) { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net472"); var versions = new List <string> { "1.0.0-beta", "1.0.0", "1.0.9", "1.0.10-beta", "1.9.0", "1.10.0-beta", "2.1.0", "2.2.0-beta" }; foreach (var version in versions) { var packageX = XPlatTestUtils.CreatePackage(packageId: "packageX", packageVersion: version); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX); } var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --version {currentVersion} --no-restore"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package --outdated {args}"); Assert.True(ContainsIgnoringSpaces(listResult.AllOutput, $"packageX{currentVersion}{currentVersion}{expectedVersion}")); } }
public async Task DotnetListPackage_FrameworkSpecific_Success(string args, string shouldInclude, string shouldntInclude) { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net46;net451"); var packageX = XPlatTestUtils.CreatePackage(frameworkString: "net46;net451"); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --no-restore"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package {args}"); Assert.True(ContainsIgnoringSpaces(listResult.AllOutput, shouldInclude.Replace(" ", ""))); if (shouldntInclude != null) { Assert.False(ContainsIgnoringSpaces(listResult.AllOutput, shouldntInclude.Replace(" ", ""))); } } }
public async Task ListPackage_WithHttpSource_Warns() { // Arrange using var pathContext = _fixture.CreateSimpleTestPathContext(); var packageA100 = new SimpleTestPackageContext("A", "1.0.0"); var packageA200 = new SimpleTestPackageContext("A", "2.0.0"); var projectA = XPlatTestUtils.CreateProject("ProjectA", pathContext, "net472"); await SimpleTestPackageUtility.CreatePackagesAsync( pathContext.PackageSource, packageA100, packageA200); using var mockServer = new FileSystemBackedV3MockServer(pathContext.PackageSource); mockServer.Start(); pathContext.Settings.AddSource("http-source", mockServer.ServiceIndexUri); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add package A --version 1.0.0"); Assert.True(addResult.Success); // Act var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list package --outdated"); mockServer.Stop(); // Assert var lines = listResult.AllOutput.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); Assert.True(lines.Any(l => l.Contains("> A 1.0.0 1.0.0 2.0.0")), listResult.AllOutput); Assert.True(lines.Any(l => l.Contains("warn : You are running the 'list package' operation with an 'HTTP' source")), listResult.AllOutput); }
public async Task AddPkg_V3LocalSourceFeed_WithRelativePath_NoVersionSpecified_Fail() { using (var pathContext = new SimpleTestPathContext()) { var projectName = "projectA"; var targetFrameworks = "net5.0"; XPlatTestUtils.CreateProject(projectName, pathContext, targetFrameworks); var packageX = "packageX"; var packageY = "packageY"; var packageY_V1 = new PackageIdentity(packageY, new NuGetVersion("1.0.0")); var packageFrameworks = "net472; netcoreapp2.0"; var packageY_V1_Context = XPlatTestUtils.CreatePackage(packageY_V1.Id, packageY_V1.Version.Version.ToString(), frameworkString: packageFrameworks); var customSourcePath = Path.Combine(pathContext.WorkingDirectory, "Custompackages"); var sourceRelativePath = Path.Combine("..", "..", "Custompackages"); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( customSourcePath, PackageSaveMode.Defaultv3, new SimpleTestPackageContext[] { packageY_V1_Context }); var projectDirectory = Path.Combine(pathContext.SolutionRoot, projectName); var projectFilePath = Path.Combine(projectDirectory, $"{projectName}.csproj"); // Act CommandRunnerResult result = _fixture.RunDotnet(projectDirectory, $"add {projectFilePath} package {packageX} -s {sourceRelativePath}", ignoreExitCode: true); // Assert result.Success.Should().BeFalse(because: result.AllOutput); } }
public void DotnetListPackage_DeprecatedAndOutdated_Fail() { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net46"); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package --deprecated --outdated", true); Assert.False(listResult.Success); Assert.Contains(Strings.ListPkg_InvalidOptionsOutdatedAndDeprecated, listResult.Errors); } }
public void DotnetListPackage_ProjectReference_Succeeds(bool includeTransitive, bool outdated) { // Arrange using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject("ProjectA", pathContext, "net46"); var projectB = XPlatTestUtils.CreateProject("ProjectB", pathContext, "net46"); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} reference {projectB.ProjectPath}"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); var argsBuilder = new StringBuilder(); if (includeTransitive) { argsBuilder.Append(" --include-transitive"); } if (outdated) { argsBuilder.Append(" --outdated"); } // Act var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package {argsBuilder}"); // Assert if (outdated) { Assert.Contains("The given project `ProjectA` has no updates given the current sources.", listResult.AllOutput); } else if (includeTransitive) { Assert.Contains("ProjectB", listResult.AllOutput); } else { Assert.Contains("No packages were found for this framework.", listResult.AllOutput); } } }
public async Task AddPkg_V3LocalSourceFeed_WithRelativePath_NoVersionSpecified_Success() { using (var pathContext = new SimpleTestPathContext()) { var projectName = "projectA"; var targetFrameworks = "net5.0"; SimpleTestProjectContext projectA = XPlatTestUtils.CreateProject(projectName, pathContext, targetFrameworks); var packageX = "packageX"; var packageX_V1 = new PackageIdentity(packageX, new NuGetVersion("1.0.0")); var packageX_V2 = new PackageIdentity(packageX, new NuGetVersion("2.0.0")); var packageFrameworks = "net472; netcoreapp2.0"; var packageX_V1_Context = XPlatTestUtils.CreatePackage(packageX_V1.Id, packageX_V1.Version.Version.ToString(), frameworkString: packageFrameworks); var packageX_V2_Context = XPlatTestUtils.CreatePackage(packageX_V2.Id, packageX_V2.Version.Version.ToString(), frameworkString: packageFrameworks); var customSourcePath = Path.Combine(pathContext.WorkingDirectory, "Custompackages"); var sourceRelativePath = Path.Combine("..", "..", "Custompackages"); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( customSourcePath, PackageSaveMode.Defaultv3, new SimpleTestPackageContext[] { packageX_V1_Context, packageX_V2_Context }); var projectDirectory = Path.Combine(pathContext.SolutionRoot, projectName); var projectFilePath = Path.Combine(projectDirectory, $"{projectName}.csproj"); // Act CommandRunnerResult result = _fixture.RunDotnet(projectDirectory, $"add {projectFilePath} package {packageX} -s {sourceRelativePath}", ignoreExitCode: true); // Assert result.Success.Should().BeTrue(because: result.AllOutput); // Make sure source is replaced in generated dgSpec file. PackageSpec packageSpec = projectA.AssetsFile.PackageSpec; string[] sources = packageSpec.RestoreMetadata.Sources.Select(s => s.Name).ToArray(); Assert.Equal(sources.Count(), 1); Assert.Equal(sources[0], customSourcePath); var ridlessTarget = projectA.AssetsFile.Targets.Where(e => string.IsNullOrEmpty(e.RuntimeIdentifier)).Single(); ridlessTarget.Libraries.Should().Contain(e => e.Type == "package" && e.Name == packageX); // Should resolve to specified package. ridlessTarget.Libraries.Should().Contain(e => e.Version.Equals(packageX_V2.Version)); } }
public async Task DotnetListPackage_ShowFrameworksOnly_SDK() { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net461"); projectA.Properties.Add("RuntimeIdentifiers", "win;win-x86;win-x64"); var packageX = XPlatTestUtils.CreatePackage(); projectA.AddPackageToAllFrameworks(packageX); projectA.Save(); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --no-restore"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); //the assets file should generate 4 sections in Targets: 1 for TFM only , and 3 for TFM + RID combinations var assetsFile = projectA.AssetsFile; Assert.Equal(4, assetsFile.Targets.Count); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package", true); //make sure there is no duplicate in output Assert.True(NoDuplicateSection(listResult.AllOutput), listResult.AllOutput); } }
public async Task DotnetListPackage_ProjectWithInitialTargets_Succeeds() { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net46"); var doc = XDocument.Parse(File.ReadAllText(projectA.ProjectPath)); doc.Root.Add(new XAttribute("InitialTargets", "FirstTarget")); doc.Root.Add(new XElement(XName.Get("Target"), new XAttribute(XName.Get("Name"), "FirstTarget"), new XElement(XName.Get("Message"), new XAttribute(XName.Get("Text"), "I am the first target invoked every time a target is called on this project!")))); File.WriteAllText(projectA.ProjectPath, doc.ToString()); var packageX = XPlatTestUtils.CreatePackage(); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --version 1.0.0 --no-restore"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package"); Assert.True(ContainsIgnoringSpaces(listResult.AllOutput, "packageX1.0.01.0.0")); } }
public async Task DotnetListPackage_Transitive() { using (var pathContext = _fixture.CreateSimpleTestPathContext()) { var projectA = XPlatTestUtils.CreateProject(ProjectName, pathContext, "net46"); var packageX = XPlatTestUtils.CreatePackage(); var packageY = XPlatTestUtils.CreatePackage(packageId: "packageY"); packageX.Dependencies.Add(packageY); // Generate Package await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX, packageY); var addResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"add {projectA.ProjectPath} package packageX --no-restore"); Assert.True(addResult.Success); var restoreResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"restore {projectA.ProjectName}.csproj"); Assert.True(restoreResult.Success); var listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package"); Assert.False(ContainsIgnoringSpaces(listResult.AllOutput, "packageY")); listResult = _fixture.RunDotnet(Directory.GetParent(projectA.ProjectPath).FullName, $"list {projectA.ProjectPath} package --include-transitive"); Assert.True(ContainsIgnoringSpaces(listResult.AllOutput, "packageY")); } }
public async Task AddPkg_WhenPackageSourceMappingConfiguredCanotInstallsPackagesFromRestoreSources_Fails() { using var pathContext = new SimpleTestPathContext(); // Set up solution, and project var solution = new SimpleTestSolutionContext(pathContext.SolutionRoot); var projectName = "projectA"; var projectA = XPlatTestUtils.CreateProject(projectName, pathContext, "net5.0"); const string version = "1.0.0"; const string packageX = "X", packageZ = "Z"; var packageFrameworks = "net472; net5.0"; var packageX100 = XPlatTestUtils.CreatePackage(packageX, version, frameworkString: packageFrameworks); var packageZ100 = XPlatTestUtils.CreatePackage(packageZ, version, frameworkString: packageFrameworks); packageX100.Dependencies.Add(packageZ100); var packageSource2 = new DirectoryInfo(Path.Combine(pathContext.WorkingDirectory, "source2")); packageSource2.Create(); await SimpleTestPackageUtility.CreateFolderFeedV3Async( pathContext.PackageSource, PackageSaveMode.Defaultv3, packageX100, packageZ100); await SimpleTestPackageUtility.CreateFolderFeedV3Async( packageSource2.FullName, PackageSaveMode.Defaultv3, packageX100, packageZ100); var configFile = @$ "<?xml version=" "1.0" " encoding=" "utf-8" "?> <configuration> <packageSources> <add key=" "source2" " value=" "{packageSource2.FullName}" " /> </packageSources> <packageSourceMapping> <packageSource key=" "source2" "> <package pattern=" "{packageX}*" " /> </packageSource> </packageSourceMapping> </configuration> "; // Add RestoreSources projectA.Properties.Add("RestoreSources", $"{packageSource2.FullName};{pathContext.PackageSource}"); solution.Projects.Add(projectA); solution.Create(pathContext.SolutionRoot); var projectADirectory = Path.Combine(pathContext.SolutionRoot, projectA.ProjectName); File.WriteAllText(Path.Combine(projectADirectory, "NuGet.Config"), configFile); //Act var result = _fixture.RunDotnet(projectADirectory, $"add {projectA.ProjectPath} package {packageX} -v {version} -s {packageSource2}", ignoreExitCode: true); // Assert result.Success.Should().BeFalse(because: result.AllOutput); Assert.Contains($"Installed {packageX} {version} from {packageSource2}", result.AllOutput); Assert.Contains($"NU1100: Unable to resolve '{packageZ} (>= {version})' for 'net5.0'", result.AllOutput); }