Skip to content

Commit c2e8590

Browse files
fix: normalize four-part updater versions for comparison
Co-authored-by: mamoreau-devolutions <242016029+mamoreau-devolutions@users.noreply.github.com>
1 parent b40e570 commit c2e8590

3 files changed

Lines changed: 22 additions & 2 deletions

File tree

src/UniGetUI.Core.Tools.Tests/ToolsTests.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,19 @@ public void TestGetVersionStringAsFloat(string version, int i1, int i2, int i3,
140140
Assert.Equal(i4, v.Remainder);
141141
}
142142

143+
[Theory]
144+
[InlineData("2026.1.0", "2026.1.0")]
145+
[InlineData("2026.1.0.0", "2026.1.0")]
146+
[InlineData("2026.1.0.5", "2026.1.0")]
147+
[InlineData("2026.1", "2026.1")]
148+
public void TestNormalizeVersionForComparison(string rawVersion, string expected)
149+
{
150+
var version = System.Version.Parse(rawVersion);
151+
var normalized = CoreTools.NormalizeVersionForComparison(version);
152+
153+
Assert.Equal(System.Version.Parse(expected), normalized);
154+
}
155+
143156
[Theory]
144157
[InlineData("Hello World", "Hello World")]
145158
[InlineData("Hello; World", "Hello World")]

src/UniGetUI.Core.Tools/Tools.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,13 @@ public static Version VersionStringToStruct(string Version)
457457
}
458458
}
459459

460+
public static System.Version NormalizeVersionForComparison(System.Version version)
461+
{
462+
return version.Revision >= 0
463+
? new System.Version(version.Major, version.Minor, version.Build)
464+
: version;
465+
}
466+
460467
/// <summary>
461468
/// Returns the query that can be safely passed as a command-line parameter
462469
/// </summary>

src/UniGetUI/AutoUpdater.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -745,13 +745,13 @@ private static Version ParseVersionOrFallback(string rawVersion, Version fallbac
745745
{
746746
if (Version.TryParse(rawVersion, out Version? parsed))
747747
{
748-
return parsed;
748+
return CoreTools.NormalizeVersionForComparison(parsed);
749749
}
750750

751751
string sanitized = rawVersion.Trim().TrimStart('v', 'V');
752752
if (Version.TryParse(sanitized, out parsed))
753753
{
754-
return parsed;
754+
return CoreTools.NormalizeVersionForComparison(parsed);
755755
}
756756

757757
Logger.Warn($"Could not parse version '{rawVersion}', using fallback '{fallbackVersion}'");

0 commit comments

Comments
 (0)