public void InstallPackageFromUI() { // Arrange EnsureVisualStudioHost(); var dte = VisualStudio.Dte; var solutionService = VisualStudio.Get <SolutionService>(); solutionService.CreateEmptySolution(); var project = solutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, ProjectTargetFramework.V46, "TestProject"); VisualStudio.ClearOutputWindow(); solutionService.SaveAll(); // Act OpenNuGetPackageManagerWithDte(); var nugetTestService = GetNuGetTestService(); var uiwindow = nugetTestService.GetUIWindowfromProject(project); uiwindow.InstallPackageFromUI("newtonsoft.json", "9.0.1"); // Assert CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project, "newtonsoft.json", "9.0.1", XunitLogger); }
public void SearchPackageFromUI() { // Arrange EnsureVisualStudioHost(); var dte = VisualStudio.Dte; var solutionService = VisualStudio.Get <SolutionService>(); solutionService.CreateEmptySolution(); var project = solutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, ProjectTargetFramework.V46, "TestProject"); VisualStudio.ClearOutputWindow(); // Act dte.ExecuteCommand("Project.ManageNuGetPackages"); var nugetTestService = GetNuGetTestService(); var uiwindow = nugetTestService.GetUIWindowfromProject(project); uiwindow.SwitchTabToBrowse(); uiwindow.SeachPackgeFromUI("newtonsoft.json"); // Assert VisualStudio.AssertNoErrors(); }
public void InstallPackageToProjectsFromUI() { // Arrange EnsureVisualStudioHost(); var dte = VisualStudio.Dte; var solutionService = VisualStudio.Get <SolutionService>(); solutionService.CreateEmptySolution(); var project = solutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, ProjectTargetFramework.V46, "TestProject"); var nuProject = solutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, ProjectTargetFramework.V46, "NuProject"); VisualStudio.ClearOutputWindow(); // Act dte.ExecuteCommand("Project.ManageNuGetPackages"); var nugetTestService = GetNuGetTestService(); var uiwindow = nugetTestService.GetUIWindowfromProject(nuProject); uiwindow.InstallPackageFromUI("newtonsoft.json", "9.0.1"); project.Build(); // Assert VisualStudio.AssertNoErrors(); VisualStudio.ClearOutputWindow(); VisualStudio.SelectProjectInSolutionExplorer(project.Name); dte.ExecuteCommand("Project.ManageNuGetPackages"); var uiwindow2 = nugetTestService.GetUIWindowfromProject(project); uiwindow2.InstallPackageFromUI("newtonsoft.json", "9.0.1"); project.Build(); // Assert Assert.True(uiwindow.IsPackageInstalled("newtonsoft.json", "9.0.1")); Assert.True(uiwindow2.IsPackageInstalled("newtonsoft.json", "9.0.1")); VisualStudio.AssertNoErrors(); }
public async Task UpdateAllReinstall_WithPackageReferenceProject_WarnsAsync(ProjectTemplate projectTemplate, bool warns) { EnsureVisualStudioHost(); var packageName = "TestPackage"; var packageVersion1 = "1.0.0"; using var testContext = new ApexTestContext(VisualStudio, projectTemplate, XunitLogger, addNetStandardFeeds: true); // Arrange var solutionService = VisualStudio.Get <SolutionService>(); testContext.SolutionService.Build(); await CommonUtility.CreatePackageInSourceAsync(testContext.PackageSource, packageName, packageVersion1); var nugetTestService = GetNuGetTestService(); var nugetConsole = GetConsole(testContext.Project); // Pre-conditions nugetConsole.InstallPackageFromPMC(packageName, packageVersion1); testContext.SolutionService.Build(); VisualStudio.AssertNuGetOutputDoesNotHaveErrors(); VisualStudio.HasNoErrorsInOutputWindows().Should().BeTrue(); nugetConsole.Clear(); // Act nugetConsole.Execute("Update-Package -Reinstall"); // Assert var expectedMessage = $"The `-Reinstall` parameter does not apply to PackageReference based projects `{Path.GetFileNameWithoutExtension(testContext.Project.UniqueName)}`."; nugetConsole.IsMessageFoundInPMC(expectedMessage).Should().Be(warns, because: nugetConsole.GetText()); VisualStudio.AssertNuGetOutputDoesNotHaveErrors(); VisualStudio.HasNoErrorsInOutputWindows().Should().BeTrue(); nugetConsole.Clear(); solutionService.Save(); }
public void DowngradePackageFromPMC(ProjectTemplate projectTemplate) { using (var pathContext = new SimpleTestPathContext()) { // Arrange EnsureVisualStudioHost(); var solutionService = VisualStudio.Get <SolutionService>(); solutionService.CreateEmptySolution("TestSolution", pathContext.SolutionRoot); var project = solutionService.AddProject(ProjectLanguage.CSharp, projectTemplate, ProjectTargetFramework.V46, "TestProject"); project.Build(); var packageName = "TestPackage"; var packageVersion1 = "1.0.0"; var packageVersion2 = "2.0.0"; Utils.CreatePackageInSource(pathContext.PackageSource, packageName, packageVersion1); Utils.CreatePackageInSource(pathContext.PackageSource, packageName, packageVersion2); var nugetTestService = GetNuGetTestService(); Assert.True(nugetTestService.EnsurePackageManagerConsoleIsOpen()); var nugetConsole = nugetTestService.GetPackageManagerConsole(project.UniqueName); Assert.True(nugetConsole.InstallPackageFromPMC(packageName, packageVersion2)); project.Build(); Assert.True(Utils.IsPackageInstalled(nugetConsole, project.FullPath, packageName, packageVersion2)); Assert.True(nugetConsole.UpdatePackageFromPMC(packageName, packageVersion1)); project.Build(); Assert.False(Utils.IsPackageInstalled(nugetConsole, project.FullPath, packageName, packageVersion2)); Assert.True(Utils.IsPackageInstalled(nugetConsole, project.FullPath, packageName, packageVersion1)); nugetConsole.Clear(); solutionService.Save(); } }
public void InstallMultiplePackagesFromPMC(ProjectTemplate projectTemplate) { using (var pathContext = new SimpleTestPathContext()) { // Arrange EnsureVisualStudioHost(); var solutionService = VisualStudio.Get <SolutionService>(); solutionService.CreateEmptySolution("TestSolution", pathContext.SolutionRoot); var project = solutionService.AddProject(ProjectLanguage.CSharp, projectTemplate, ProjectTargetFramework.V46, "TestProject"); project.Build(); var packageName1 = "TestPackage1"; var packageVersion1 = "1.0.0"; Utils.CreatePackageInSource(pathContext.PackageSource, packageName1, packageVersion1); var packageName2 = "TestPackage2"; var packageVersion2 = "1.2.3"; Utils.CreatePackageInSource(pathContext.PackageSource, packageName2, packageVersion2); var nugetTestService = GetNuGetTestService(); Assert.True(nugetTestService.EnsurePackageManagerConsoleIsOpen()); var nugetConsole = nugetTestService.GetPackageManagerConsole(project.Name); Assert.True(nugetConsole.InstallPackageFromPMC(packageName1, packageVersion1)); Assert.True(nugetConsole.InstallPackageFromPMC(packageName2, packageVersion2)); project.Build(); Assert.True(VisualStudio.HasNoErrorsInErrorList()); Assert.True(VisualStudio.HasNoErrorsInOutputWindows()); Assert.True(Utils.IsPackageInstalled(nugetConsole, project.FullPath, packageName1, packageVersion1)); Assert.True(Utils.IsPackageInstalled(nugetConsole, project.FullPath, packageName2, packageVersion2)); nugetConsole.Clear(); solutionService.Save(); } }
public ApexBaseTestClass() { _lazyVerifier = new Lazy <IVerifier>(() => GetApexService <ITestLoggerFactoryService>().GetOrCreate("Testcase")); _nuGetPackageManagerTestService = new Lazy <NuGetApexTestService>(() => VisualStudio.Get <NuGetApexTestService>()); }
public async Task SimpleUpdateFromIVsInstaller_PackageSourceMapping_WithMultipleFeedsWithIdenticalPackages_UpdatesCorrectPackage() { // Arrange EnsureVisualStudioHost(); var dte = VisualStudio.Dte; string mainDirectory = CommonUtility.CreateSolutionDirectory(Directory.GetCurrentDirectory()); string solutionDirectory = Path.Combine(mainDirectory, "Solution"); var solutionService = VisualStudio.Get <SolutionService>(); var nugetTestService = GetNuGetTestService(); var packageName = "Contoso.A"; var packageVersionV1 = "1.0.0"; var packageVersionV2 = "2.0.0"; var opensourceRepositoryPath = Path.Combine(mainDirectory, "OpensourceRepository"); Directory.CreateDirectory(opensourceRepositoryPath); await CommonUtility.CreateNetFrameworkPackageInSourceAsync(opensourceRepositoryPath, packageName, packageVersionV1, "Thisisfromopensourcerepo1.txt"); await CommonUtility.CreateNetFrameworkPackageInSourceAsync(opensourceRepositoryPath, packageName, packageVersionV2, "Thisisfromopensourcerepo2.txt"); var privateRepositoryPath = Path.Combine(mainDirectory, "PrivateRepository"); Directory.CreateDirectory(privateRepositoryPath); await CommonUtility.CreateNetFrameworkPackageInSourceAsync(privateRepositoryPath, packageName, packageVersionV1, "Thisisfromprivaterepo1.txt"); await CommonUtility.CreateNetFrameworkPackageInSourceAsync(privateRepositoryPath, packageName, packageVersionV2, "Thisisfromprivaterepo2.txt"); // Create nuget.config with Package source mapping filtering rules before project is created. CommonUtility.CreateConfigurationFile(Path.Combine(mainDirectory, "NuGet.config"), $@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <packageSources> <!--To inherit the global NuGet package sources remove the <clear/> line below --> <clear /> <add key=""ExternalRepository"" value=""{opensourceRepositoryPath}"" /> <add key=""PrivateRepository"" value=""{privateRepositoryPath}"" /> </packageSources> <packageSourceMapping> <packageSource key=""externalRepository""> <package pattern=""External.*"" /> <package pattern=""Others.*"" /> </packageSource> <packageSource key=""PrivateRepository""> <package pattern=""Contoso.*"" /> <package pattern=""Test.*"" /> </packageSource> </packageSourceMapping> </configuration>"); solutionService.CreateEmptySolution("TestSolution", solutionDirectory); var projExt = solutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, ProjectTargetFramework.V46, "TestProject"); solutionService.SaveAll(); var project = dte.Solution.Projects.Item(1); // Act nugetTestService.InstallPackage(project.UniqueName, "contoso.a", "1.0.0"); nugetTestService.InstallPackage(project.UniqueName, "contoso.a", "2.0.0"); // Assert CommonUtility.AssertPackageInPackagesConfig(VisualStudio, projExt, packageName, XunitLogger); var packagesDirectory = Path.Combine(solutionDirectory, "packages"); var uniqueContentFile = Path.Combine(packagesDirectory, packageName + '.' + packageVersionV2, "lib", "net45", "Thisisfromprivaterepo2.txt"); // Make sure name squatting package not restored from opensource repository. Assert.True(File.Exists(uniqueContentFile)); }
public async Task UpdatePackageForPR_PackageNamespace_WithMultipleFeedsWithIdenticalPackages_InstallsCorrectPackage(ProjectTemplate projectTemplate) { // Arrange EnsureVisualStudioHost(); using var simpleTestPathContext = new SimpleTestPathContext(); string solutionDirectory = simpleTestPathContext.SolutionRoot; var packageName = "Contoso.A"; var packageVersion1 = "1.0.0"; var packageVersion2 = "2.0.0"; var opensourceRepositoryPath = Path.Combine(solutionDirectory, "OpensourceRepository"); Directory.CreateDirectory(opensourceRepositoryPath); await CommonUtility.CreateNetFrameworkPackageInSourceAsync(opensourceRepositoryPath, packageName, packageVersion1); await CommonUtility.CreateNetFrameworkPackageInSourceAsync(opensourceRepositoryPath, packageName, packageVersion2); var privateRepositoryPath = Path.Combine(solutionDirectory, "PrivateRepository"); Directory.CreateDirectory(privateRepositoryPath); await CommonUtility.CreateNetFrameworkPackageInSourceAsync(privateRepositoryPath, packageName, packageVersion1); await CommonUtility.CreateNetFrameworkPackageInSourceAsync(privateRepositoryPath, packageName, packageVersion2); //Create nuget.config with Package namespace filtering rules. CommonUtility.CreateConfigurationFile(Path.Combine(solutionDirectory, "NuGet.config"), $@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <packageSources> <add key=""ExternalRepository"" value=""{opensourceRepositoryPath}"" /> <add key=""PrivateRepository"" value=""{privateRepositoryPath}"" /> </packageSources> <packageSourceMapping> <packageSource key=""externalRepository""> <package pattern=""External.*"" /> <package pattern=""Others.*"" /> </packageSource> <packageSource key=""PrivateRepository""> <package pattern=""Contoso.*"" /> <package pattern=""Test.*"" /> </packageSource> <packageSource key=""nuget""> <package pattern=""Microsoft.*"" /> <package pattern=""NetStandard*"" /> </packageSource> </packageSourceMapping> </configuration>"); using var testContext = new ApexTestContext(VisualStudio, projectTemplate, XunitLogger, noAutoRestore: false, addNetStandardFeeds: true, simpleTestPathContext: simpleTestPathContext); var solutionService = VisualStudio.Get <SolutionService>(); var nugetConsole = GetConsole(testContext.Project); //Pre-conditions nugetConsole.InstallPackageFromPMC(packageName, packageVersion1); testContext.SolutionService.Build(); VisualStudio.AssertNuGetOutputDoesNotHaveErrors(); VisualStudio.HasNoErrorsInOutputWindows().Should().BeTrue(); nugetConsole.Clear(); // Act nugetConsole.UpdatePackageFromPMC(packageName, packageVersion2); // Assert var expectedMessage = $"Installed {packageName} {packageVersion2} from {privateRepositoryPath}"; nugetConsole.IsMessageFoundInPMC(expectedMessage).Should().BeTrue(because: nugetConsole.GetText()); VisualStudio.AssertNuGetOutputDoesNotHaveErrors(); VisualStudio.HasNoErrorsInOutputWindows().Should().BeTrue(); nugetConsole.Clear(); solutionService.Save(); }
public async Task UpdatePackageFromUI_PC_PackageSourceMapping_WithMultiFeed_Succeed() { // Arrange EnsureVisualStudioHost(); var solutionService = VisualStudio.Get <SolutionService>(); string solutionDirectory = CommonUtility.CreateSolutionDirectory(Directory.GetCurrentDirectory()); var externalRepositoryPath = Path.Combine(solutionDirectory, "ExternalRepository"); Directory.CreateDirectory(externalRepositoryPath); var privateRepositoryPath = Path.Combine(solutionDirectory, "PrivateRepository"); Directory.CreateDirectory(privateRepositoryPath); // Create nuget.config with Package source mapping filtering rules before project is created. CommonUtility.CreateConfigurationFile(Path.Combine(solutionDirectory, "NuGet.config"), $@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <packageSources> <!--To inherit the global NuGet package sources remove the <clear/> line below --> <clear /> <add key=""ExternalRepository"" value=""{externalRepositoryPath}"" /> <add key=""PrivateRepository"" value=""{privateRepositoryPath}"" /> </packageSources> <packageSourceMapping> <packageSource key=""externalRepository""> <package pattern=""External.*"" /> <package pattern=""Others.*"" /> </packageSource> <packageSource key=""PrivateRepository""> <package pattern=""Contoso.*"" /> <package pattern=""Test.*"" /> </packageSource> </packageSourceMapping> //</configuration>"); solutionService.CreateEmptySolution("TestSolution", solutionDirectory); var packageName = "Contoso.A"; var packageVersion1 = "1.0.0"; var packageVersion2 = "2.0.0"; await CommonUtility.CreatePackageInSourceAsync(externalRepositoryPath, packageName, packageVersion1); await CommonUtility.CreatePackageInSourceAsync(externalRepositoryPath, packageName, packageVersion2); await CommonUtility.CreatePackageInSourceAsync(privateRepositoryPath, packageName, packageVersion1); await CommonUtility.CreatePackageInSourceAsync(privateRepositoryPath, packageName, packageVersion2); var project = solutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, ProjectTargetFramework.V46, "TestProject"); VisualStudio.ClearOutputWindow(); solutionService.SaveAll(); // Act CommonUtility.OpenNuGetPackageManagerWithDte(VisualStudio, XunitLogger); var nugetTestService = GetNuGetTestService(); var uiwindow = nugetTestService.GetUIWindowfromProject(project); // Set option to package source option to All uiwindow.SetPackageSourceOptionToAll(); uiwindow.InstallPackageFromUI("contoso.a", "1.0.0"); // Act uiwindow.InstallPackageFromUI("contoso.a", "2.0.0"); // Assert CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project, "contoso.a", "2.0.0", XunitLogger); }