Skip to content

Commit ed3a3dd

Browse files
Copilotnkolev92
andauthored
Migrate SyncPackageTest.ps1 to Apex SyncPackageTestCase.cs
Migrate all 3 tests from test/EndToEnd/tests/SyncPackageTest.ps1 to test/NuGet.Tests.Apex/NuGet.Tests.Apex/NuGetEndToEndTests/SyncPackageTestCase.cs: - Test-SyncPackagesInSolutionUp -> SyncPackageFromPMC_UpVersion_SyncsAllProjectsAsync - Test-SyncPackagesInSolutionDown -> SyncPackageFromPMC_DownVersion_SyncsAllProjectsAsync - Test-SyncPackagesInSolutionPlural -> SyncPackageFromPMC_MultipleProjects_SyncsAllProjectsAsync Remove the original PS test file. Agent-Logs-Url: https://github.com/NuGet/NuGet.Client/sessions/c06b5567-c16c-4ae8-9a1c-ccb07314f686 Co-authored-by: nkolev92 <[email protected]>
1 parent 06ee0a5 commit ed3a3dd

2 files changed

Lines changed: 170 additions & 100 deletions

File tree

test/EndToEnd/tests/SyncPackageTest.ps1

Lines changed: 0 additions & 100 deletions
This file was deleted.
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+
using System.Threading.Tasks;
5+
using Microsoft.Test.Apex.VisualStudio.Solution;
6+
using Microsoft.VisualStudio.TestTools.UnitTesting;
7+
8+
namespace NuGet.Tests.Apex
9+
{
10+
[TestClass]
11+
public class SyncPackageTestCase : SharedVisualStudioHostTestClass
12+
{
13+
// Migrated from Test-SyncPackagesInSolutionUp in SyncPackageTest.ps1
14+
// Syncs package A from the project with the higher version to all other projects.
15+
[TestMethod]
16+
[Timeout(DefaultTimeout)]
17+
public async Task SyncPackageFromPMC_UpVersion_SyncsAllProjectsAsync()
18+
{
19+
using var testContext = new ApexTestContext(VisualStudio, ProjectTemplate.ConsoleApplication, Logger);
20+
21+
var packageName = "A";
22+
var packageVersion1 = "1.0.0";
23+
var packageVersion2 = "2.0.0";
24+
var dependencyName = "B";
25+
var dependencyVersion1 = "1.0.0";
26+
var dependencyVersion2 = "2.0.0";
27+
28+
await CommonUtility.CreateDependenciesPackageInSourceAsync(testContext.PackageSource, packageName, packageVersion1, dependencyName, dependencyVersion1);
29+
await CommonUtility.CreateDependenciesPackageInSourceAsync(testContext.PackageSource, packageName, packageVersion2, dependencyName, dependencyVersion2);
30+
31+
var project2 = testContext.SolutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, CommonUtility.DefaultTargetFramework, "TestProject2");
32+
project2.Build();
33+
testContext.SolutionService.Save();
34+
35+
var nugetConsole = GetConsole(testContext.Project);
36+
37+
// Install A 1.0.0 into project1 and A 2.0.0 into project2
38+
nugetConsole.Execute($"Install-Package {packageName} -ProjectName {testContext.Project.Name} -Version {packageVersion1} -Source {testContext.PackageSource}");
39+
nugetConsole.Execute($"Install-Package {packageName} -ProjectName {project2.Name} -Version {packageVersion2} -Source {testContext.PackageSource}");
40+
41+
// Pre-conditions
42+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, testContext.Project, packageName, packageVersion1, Logger);
43+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, testContext.Project, dependencyName, dependencyVersion1, Logger);
44+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project2, packageName, packageVersion2, Logger);
45+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project2, dependencyName, dependencyVersion2, Logger);
46+
47+
// Sync from project2 (which has A 2.0.0)
48+
nugetConsole.Execute($"Sync-Package -ProjectName {project2.Name} -Id {packageName} -Source {testContext.PackageSource}");
49+
50+
// Assert: project1 should now have A 2.0.0 and B 2.0.0
51+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, testContext.Project, packageName, packageVersion2, Logger);
52+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, testContext.Project, dependencyName, dependencyVersion2, Logger);
53+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project2, packageName, packageVersion2, Logger);
54+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project2, dependencyName, dependencyVersion2, Logger);
55+
56+
// Old versions should no longer be installed in project1
57+
CommonUtility.AssertPackageNotInPackagesConfig(VisualStudio, testContext.Project, packageName, packageVersion1, Logger);
58+
CommonUtility.AssertPackageNotInPackagesConfig(VisualStudio, testContext.Project, dependencyName, dependencyVersion1, Logger);
59+
}
60+
61+
// Migrated from Test-SyncPackagesInSolutionDown in SyncPackageTest.ps1
62+
// Syncs package A from the project with the lower version to all other projects.
63+
[TestMethod]
64+
[Timeout(DefaultTimeout)]
65+
public async Task SyncPackageFromPMC_DownVersion_SyncsAllProjectsAsync()
66+
{
67+
using var testContext = new ApexTestContext(VisualStudio, ProjectTemplate.ConsoleApplication, Logger);
68+
69+
var packageName = "A";
70+
var packageVersion1 = "1.0.0";
71+
var packageVersion2 = "2.0.0";
72+
var dependencyName = "B";
73+
var dependencyVersion1 = "1.0.0";
74+
var dependencyVersion2 = "2.0.0";
75+
76+
await CommonUtility.CreateDependenciesPackageInSourceAsync(testContext.PackageSource, packageName, packageVersion1, dependencyName, dependencyVersion1);
77+
await CommonUtility.CreateDependenciesPackageInSourceAsync(testContext.PackageSource, packageName, packageVersion2, dependencyName, dependencyVersion2);
78+
79+
var project2 = testContext.SolutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, CommonUtility.DefaultTargetFramework, "TestProject2");
80+
project2.Build();
81+
testContext.SolutionService.Save();
82+
83+
var nugetConsole = GetConsole(testContext.Project);
84+
85+
// Install A 1.0.0 into project1 and A 2.0.0 into project2
86+
nugetConsole.Execute($"Install-Package {packageName} -ProjectName {testContext.Project.Name} -Version {packageVersion1} -Source {testContext.PackageSource}");
87+
nugetConsole.Execute($"Install-Package {packageName} -ProjectName {project2.Name} -Version {packageVersion2} -Source {testContext.PackageSource}");
88+
89+
// Pre-conditions
90+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, testContext.Project, packageName, packageVersion1, Logger);
91+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, testContext.Project, dependencyName, dependencyVersion1, Logger);
92+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project2, packageName, packageVersion2, Logger);
93+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project2, dependencyName, dependencyVersion2, Logger);
94+
95+
// Sync from project1 (which has A 1.0.0)
96+
nugetConsole.Execute($"Sync-Package -ProjectName {testContext.Project.Name} -Id {packageName} -Source {testContext.PackageSource}");
97+
98+
// Assert: project1 stays at A 1.0.0 / B 1.0.0
99+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, testContext.Project, packageName, packageVersion1, Logger);
100+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, testContext.Project, dependencyName, dependencyVersion1, Logger);
101+
// project2 should now have A 1.0.0, but B stays at 2.0.0 (dependency is not downgraded)
102+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project2, packageName, packageVersion1, Logger);
103+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project2, dependencyName, dependencyVersion2, Logger);
104+
105+
// Old version of A should no longer be installed in project2
106+
CommonUtility.AssertPackageNotInPackagesConfig(VisualStudio, project2, packageName, packageVersion2, Logger);
107+
}
108+
109+
// Migrated from Test-SyncPackagesInSolutionPlural in SyncPackageTest.ps1
110+
// Syncs package A from a middle version across five projects.
111+
[TestMethod]
112+
[Timeout(DefaultTimeout)]
113+
public async Task SyncPackageFromPMC_MultipleProjects_SyncsAllProjectsAsync()
114+
{
115+
using var testContext = new ApexTestContext(VisualStudio, ProjectTemplate.ConsoleApplication, Logger);
116+
117+
var packageName = "A";
118+
var dependencyName = "B";
119+
120+
// Create packages A v1-5, each depending on B v1-5
121+
for (int i = 1; i <= 5; i++)
122+
{
123+
await CommonUtility.CreateDependenciesPackageInSourceAsync(
124+
testContext.PackageSource, packageName, $"{i}.0.0", dependencyName, $"{i}.0.0");
125+
}
126+
127+
// Create 4 additional projects (project1 is testContext.Project)
128+
var project2 = testContext.SolutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, CommonUtility.DefaultTargetFramework, "TestProject2");
129+
project2.Build();
130+
var project3 = testContext.SolutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, CommonUtility.DefaultTargetFramework, "TestProject3");
131+
project3.Build();
132+
var project4 = testContext.SolutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, CommonUtility.DefaultTargetFramework, "TestProject4");
133+
project4.Build();
134+
var project5 = testContext.SolutionService.AddProject(ProjectLanguage.CSharp, ProjectTemplate.ClassLibrary, CommonUtility.DefaultTargetFramework, "TestProject5");
135+
project5.Build();
136+
testContext.SolutionService.Save();
137+
138+
var nugetConsole = GetConsole(testContext.Project);
139+
140+
// Install different versions of A into each project
141+
var projects = new[] { testContext.Project, project2, project3, project4, project5 };
142+
for (int i = 0; i < projects.Length; i++)
143+
{
144+
var version = $"{i + 1}.0.0";
145+
nugetConsole.Execute($"Install-Package {packageName} -ProjectName {projects[i].Name} -Version {version} -Source {testContext.PackageSource}");
146+
}
147+
148+
// Pre-conditions: each project has the expected version of A
149+
for (int i = 0; i < projects.Length; i++)
150+
{
151+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, projects[i], packageName, $"{i + 1}.0.0", Logger);
152+
}
153+
154+
// Sync from project3 (which has A 3.0.0)
155+
nugetConsole.Execute($"Sync-Package -ProjectName {project3.Name} -Id {packageName} -Source {testContext.PackageSource}");
156+
157+
// Assert: all projects should now have A 3.0.0
158+
foreach (var project in projects)
159+
{
160+
CommonUtility.AssertPackageInPackagesConfig(VisualStudio, project, packageName, "3.0.0", Logger);
161+
}
162+
163+
// Old versions of A should no longer be installed
164+
CommonUtility.AssertPackageNotInPackagesConfig(VisualStudio, testContext.Project, packageName, "1.0.0", Logger);
165+
CommonUtility.AssertPackageNotInPackagesConfig(VisualStudio, project2, packageName, "2.0.0", Logger);
166+
CommonUtility.AssertPackageNotInPackagesConfig(VisualStudio, project4, packageName, "4.0.0", Logger);
167+
CommonUtility.AssertPackageNotInPackagesConfig(VisualStudio, project5, packageName, "5.0.0", Logger);
168+
}
169+
}
170+
}

0 commit comments

Comments
 (0)