@@ -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