Skip to content

Commit e02fb96

Browse files
Stabilize headless CLI CI fixtures
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 8317ba8 commit e02fb96

2 files changed

Lines changed: 36 additions & 46 deletions

File tree

‎testing/automation/cli-e2e.manifest.windows.json‎

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,6 @@
2929
"repair"
3030
]
3131
},
32-
{
33-
"manager": "Pip",
34-
"sourceName": "pip",
35-
"query": "cowsay",
36-
"packageId": "cowsay",
37-
"installVersion": "5.0",
38-
"scope": "User",
39-
"roles": [
40-
"specific-update"
41-
]
42-
},
4332
{
4433
"manager": "Npm",
4534
"sourceName": "npm",
@@ -48,20 +37,14 @@
4837
"installVersion": "1.5.0",
4938
"scope": "Global",
5039
"roles": [
40+
"specific-update",
5141
"toggle-manager",
5242
"update-all",
5343
"update-discovery"
5444
]
5545
}
5646
],
5747
"queueOperations": [
58-
{
59-
"manager": "Pip",
60-
"sourceName": "pip",
61-
"packageId": "awscli",
62-
"target": "download",
63-
"query": "awscli"
64-
},
6548
{
6649
"manager": "Npm",
6750
"sourceName": "npm",

‎testing/automation/run-cli-e2e.ps1‎

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -935,18 +935,25 @@ try {
935935
Add-Tested 'operation forget'
936936

937937
Write-Stage 'Package lifecycle and updates'
938-
$pipFixture = @($manifest.packageManagers | Where-Object { $_.manager -eq 'Pip' })[0]
939-
$npmFixture = @($manifest.packageManagers | Where-Object { $_.manager -eq 'Npm' })[0]
940-
$pipLatestVersion = [string]$fixtureState[$pipFixture.manager].latestVersion
941-
$npmLatestVersion = [string]$fixtureState[$npmFixture.manager].latestVersion
942-
$dotnetLatestVersion = [string]$fixtureState[$bundleFixture.manager].latestVersion
943-
944-
$pipInstall = Invoke-CliJson -Arguments (@('package', 'install') + (Get-PackageArguments -Fixture $pipFixture -IncludeVersion -IncludeSource))
945-
Assert-JsonCommandSucceeded -Response $pipInstall -Label 'package install Pip'
946-
$npmInstall = Invoke-CliJson -Arguments (@('package', 'install') + (Get-PackageArguments -Fixture $npmFixture -IncludeVersion -IncludeSource))
947-
Assert-JsonCommandSucceeded -Response $npmInstall -Label 'package install Npm'
948-
Wait-ForInstalledPackage -Fixture $pipFixture -ExpectedVersion $pipFixture.installVersion | Out-Null
949-
Wait-ForInstalledPackage -Fixture $npmFixture -ExpectedVersion $npmFixture.installVersion | Out-Null
938+
$specificUpdateFixture = @($manifest.packageManagers | Where-Object { @($_.roles) -contains 'specific-update' })[0]
939+
if ($null -eq $specificUpdateFixture) {
940+
throw 'The CLI E2E manifest must define a package manager fixture with the specific-update role.'
941+
}
942+
$directInstallFixtures = @($manifest.packageManagers | Where-Object {
943+
$null -ne $specificUpdateFixture -and [string]$_.manager -eq [string]$specificUpdateFixture.manager
944+
})
945+
$otherInstallFixtures = @($manifest.packageManagers | Where-Object {
946+
[string]$_.manager -ne [string]$bundleFixture.manager -and
947+
[string]$_.manager -ne [string]$specificUpdateFixture.manager
948+
})
949+
$directInstallFixtures += $otherInstallFixtures
950+
$bundleLatestVersion = [string]$fixtureState[$bundleFixture.manager].latestVersion
951+
952+
foreach ($installFixture in $directInstallFixtures) {
953+
$installResult = Invoke-CliJson -Arguments (@('package', 'install') + (Get-PackageArguments -Fixture $installFixture -IncludeVersion -IncludeSource))
954+
Assert-JsonCommandSucceeded -Response $installResult -Label "package install $($installFixture.manager)"
955+
Wait-ForInstalledPackage -Fixture $installFixture -ExpectedVersion $installFixture.installVersion | Out-Null
956+
}
950957
Add-Tested 'package install'
951958
Add-Tested 'package installed'
952959

@@ -980,11 +987,11 @@ try {
980987

981988
$specificUpdate = Invoke-CliJson -Arguments (@(
982989
'package', 'update'
983-
) + (Get-PackageArguments -Fixture $pipFixture -IncludeSource) + @(
984-
'--version', $pipLatestVersion
990+
) + (Get-PackageArguments -Fixture $specificUpdateFixture -IncludeSource) + @(
991+
'--version', [string]$fixtureState[$specificUpdateFixture.manager].latestVersion
985992
))
986-
Assert-JsonCommandSucceeded -Response $specificUpdate -Label 'package update Pip'
987-
Wait-ForInstalledPackage -Fixture $pipFixture -ExpectedVersion $pipLatestVersion | Out-Null
993+
Assert-JsonCommandSucceeded -Response $specificUpdate -Label "package update $($specificUpdateFixture.manager)"
994+
Wait-ForInstalledPackage -Fixture $specificUpdateFixture -ExpectedVersion ([string]$fixtureState[$specificUpdateFixture.manager].latestVersion) | Out-Null
988995
Add-Tested 'package update'
989996

990997
$updateManager = Invoke-CliFailure -Arguments @('package', 'update-manager', '--manager', [string]$bundleFixture.manager)
@@ -1001,12 +1008,12 @@ try {
10011008

10021009
$reinstall = Invoke-CliJson -Arguments (@('package', 'reinstall') + (Get-PackageArguments -Fixture $bundleFixture -IncludeSource))
10031010
Assert-JsonCommandSucceeded -Response $reinstall -Label 'package reinstall'
1004-
Wait-ForInstalledPackage -Fixture $bundleFixture -ExpectedVersion $dotnetLatestVersion | Out-Null
1011+
Wait-ForInstalledPackage -Fixture $bundleFixture -ExpectedVersion $bundleLatestVersion | Out-Null
10051012
Add-Tested 'package reinstall'
10061013

10071014
$repair = Invoke-CliJson -Arguments (@('package', 'repair') + (Get-PackageArguments -Fixture $bundleFixture -IncludeSource))
10081015
Assert-JsonCommandSucceeded -Response $repair -Label 'package repair'
1009-
Wait-ForInstalledPackage -Fixture $bundleFixture -ExpectedVersion $dotnetLatestVersion | Out-Null
1016+
Wait-ForInstalledPackage -Fixture $bundleFixture -ExpectedVersion $bundleLatestVersion | Out-Null
10101017
Add-Tested 'package repair'
10111018

10121019
$installedAll = Invoke-CliJson -Arguments @('package', 'installed')
@@ -1040,19 +1047,19 @@ try {
10401047
Add-Tested 'log manager'
10411048

10421049
Write-Stage 'Package uninstall'
1043-
[string[]]$uninstallValidationManagerNames = @(
1044-
if ($null -ne $manifest.PSObject.Properties['uninstallValidationManagers']) {
1045-
$manifest.uninstallValidationManagers | ForEach-Object { [string]$_ }
1050+
$uninstallValidationFixtures = @($manifest.packageManagers)
1051+
if ($null -ne $manifest.PSObject.Properties['uninstallValidationManagers']) {
1052+
$uninstallValidationManagerNames = [System.Collections.Generic.HashSet[string]]::new([System.StringComparer]::OrdinalIgnoreCase)
1053+
foreach ($managerName in @($manifest.uninstallValidationManagers)) {
1054+
if (-not [string]::IsNullOrWhiteSpace([string]$managerName)) {
1055+
[void]$uninstallValidationManagerNames.Add([string]$managerName)
1056+
}
10461057
}
1047-
)
1048-
$uninstallValidationFixtures = if ($uninstallValidationManagerNames.Count -gt 0) {
1049-
@($manifest.packageManagers | Where-Object {
1050-
$uninstallValidationManagerNames -contains [string]$_.manager
1058+
1059+
$uninstallValidationFixtures = @($manifest.packageManagers | Where-Object {
1060+
$uninstallValidationManagerNames.Contains([string]$_.manager)
10511061
})
10521062
}
1053-
else {
1054-
@($manifest.packageManagers)
1055-
}
10561063
foreach ($fixture in $uninstallValidationFixtures) {
10571064
$uninstall = Invoke-CliJson -Arguments (@('package', 'uninstall') + (Get-PackageArguments -Fixture $fixture -IncludeSource))
10581065
Assert-JsonCommandSucceeded -Response $uninstall -Label "package uninstall $($fixture.packageId)"

0 commit comments

Comments
 (0)