From af9e21327371bea7b370865e0032ae46aef9acdc Mon Sep 17 00:00:00 2001 From: twangboy Date: Wed, 3 Sep 2025 08:25:32 -0600 Subject: [PATCH 1/2] Get versions correctly --- tests/conftest.py | 18 ++++++++++++++---- tests/requirements.txt | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 5d5702c12..4b34040e9 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,8 +1,9 @@ import json import os +import requests +from packaging.version import Version import pytest -import requests API_URL = ( "https://packages.broadcom.com/artifactory/api/storage/saltproject-generic/windows" @@ -27,9 +28,18 @@ def target_salt_version(): version = folder["uri"].strip("/") versions[version] = version # We're trying to get the latest major version and latest overall - maj_version = version.split(".")[0] - versions[maj_version] = version - versions["latest"] = version + maj_ver, _ = version.split(".") + if maj_ver in versions: + if Version(version) > Version(versions[maj_ver]): + versions[maj_ver] = version + else: + versions[maj_ver] = version + + if "latest" in versions: + if Version(version) > Version(versions["latest"]): + versions["latest"] = version + else: + versions["latest"] = version if target_salt.startswith("v"): target_salt = target_salt[1:] diff --git a/tests/requirements.txt b/tests/requirements.txt index 547de5c5b..2fc44ad6d 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,2 +1,3 @@ pytest requests +packaging From f035f0b19bb1d8ff92dbe6059a2b02c3acd98367 Mon Sep 17 00:00:00 2001 From: twangboy Date: Wed, 3 Sep 2025 09:33:35 -0600 Subject: [PATCH 2/2] Fix getting versions on Windows --- .github/workflows/test-windows.yml | 3 ++- bootstrap-salt.ps1 | 27 +++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index 9515dae8d..0dd96a6a6 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -59,7 +59,8 @@ jobs: run: | # We need to get the version here and make it an environment variable # It is used to install via bootstrap and in the test - # The version is in the instance name + # The version is in the instance name: + # ["stable-3006", "stable-3006-8", "stable-3007", "stable-3007-1", "latest"] $instance = "${{ matrix.instance }}" $version = $instance -split "-",2 if ( $version.Count -gt 1 ) { diff --git a/bootstrap-salt.ps1 b/bootstrap-salt.ps1 index afafb0aee..800ded032 100644 --- a/bootstrap-salt.ps1 +++ b/bootstrap-salt.ps1 @@ -207,25 +207,36 @@ function Get-AvailableVersions { Write-Verbose "- $_" } - # Get the latest version, should be the last in the list - Write-Verbose "Getting latest available version" - $latest = $available_versions | Select-Object -Last 1 - Write-Verbose "Latest available version: $latest" - # Create a versions table # This will have the latest version available, the latest version available # for each major version, and every version available. This makes the # version lookup logic easier. The contents of the versions table can be # found by running -Verbose Write-Verbose "Populating the versions table" - $versions_table = [ordered]@{"latest"=$latest} + $versions_table = [ordered]@{} $available_versions | ForEach-Object { - $versions_table[$(Get-MajorVersion $_)] = $_ + $major_version = $(Get-MajorVersion $_) + if ( $versions_table.Keys -contains $major_version ) { + if ( [System.Version]$_ -gt [System.Version]$versions_table[$major_version] ) { + $versions_table[$major_version] = $_ + } + } else { + $versions_table[$major_version] = $_ + } + + if ( $versions_table -contains "latest" ) { + if ( [System.Version]$_ -gt [System.Version]$versions_table["latest"] ) { + $versions_table["latest"] = $_ + } + } else { + $versions_table["latest"] = $_ + } + $versions_table[$_.ToLower()] = $_.ToLower() } Write-Verbose "Versions Table:" - $versions_table | Sort-Object Name | Out-String | ForEach-Object { + $versions_table.GetEnumerator() | Sort-Object Name | Out-String | ForEach-Object { Write-Verbose "$_" }