Refactor code structure and optimize performance across multiple modules

This commit is contained in:
StellaOps Bot
2025-12-26 20:03:22 +02:00
parent c786faae84
commit b4fc66feb6
3353 changed files with 88254 additions and 1590657 deletions

View File

@@ -2,6 +2,7 @@ using FluentAssertions;
using StellaOps.VersionComparison;
using StellaOps.VersionComparison.Comparers;
using StellaOps.TestKit;
namespace StellaOps.VersionComparison.Tests;
public class DebianVersionComparerTests
@@ -44,7 +45,8 @@ public class DebianVersionComparerTests
{ "1.1", "1.0-99", 1 },
};
[Theory]
[Trait("Category", TestCategories.Unit)]
[Theory]
[MemberData(nameof(DebianComparisonCases))]
public void Compare_DebianVersions_ReturnsExpectedOrder(string left, string right, int expected)
{
@@ -52,19 +54,22 @@ public class DebianVersionComparerTests
result.Should().Be(expected, because: $"comparing '{left}' with '{right}'");
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_SameVersion_ReturnsZero()
{
_comparer.Compare("1:1.1.1k-1+deb11u1", "1:1.1.1k-1+deb11u1").Should().Be(0);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_NullLeft_ReturnsNegative()
{
_comparer.Compare(null, "1.0-1").Should().BeNegative();
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_NullRight_ReturnsPositive()
{
_comparer.Compare("1.0-1", null).Should().BePositive();
@@ -74,7 +79,8 @@ public class DebianVersionComparerTests
#region Proof Line Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_EpochDifference_ReturnsEpochProof()
{
var result = _comparer.CompareWithProof("0:1.0-1", "1:0.1-1");
@@ -84,7 +90,8 @@ public class DebianVersionComparerTests
result.ProofLines.Should().Contain(line => line.Contains("Epoch:") && line.Contains("left is older"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_SameEpochDifferentVersion_ReturnsVersionProof()
{
var result = _comparer.CompareWithProof("1:1.1.1k-1", "1:1.1.1l-1");
@@ -94,7 +101,8 @@ public class DebianVersionComparerTests
result.ProofLines.Should().Contain(line => line.Contains("Upstream version:") && line.Contains("left is older"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_SameVersionDifferentRevision_ReturnsRevisionProof()
{
var result = _comparer.CompareWithProof("1:1.1.1k-1+deb11u1", "1:1.1.1k-1+deb11u2");
@@ -104,7 +112,8 @@ public class DebianVersionComparerTests
result.ProofLines.Should().Contain(line => line.Contains("Debian revision:") && line.Contains("left is older"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_EqualVersions_ReturnsEqualProof()
{
var result = _comparer.CompareWithProof("1:1.1.1k-1+deb11u1", "1:1.1.1k-1+deb11u1");
@@ -114,7 +123,8 @@ public class DebianVersionComparerTests
result.ProofLines.Should().AllSatisfy(line => line.Should().Contain("equal"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_TildePreRelease_ReturnsCorrectProof()
{
var result = _comparer.CompareWithProof("2.0~rc1-1", "2.0-1");
@@ -123,7 +133,8 @@ public class DebianVersionComparerTests
result.ProofLines.Should().Contain(line => line.Contains("Upstream version:") && line.Contains("left is older"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_NativePackage_HandlesEmptyRevision()
{
var result = _comparer.CompareWithProof("1.0", "1.0-1");
@@ -136,7 +147,8 @@ public class DebianVersionComparerTests
#region Edge Cases
[Theory]
[Trait("Category", TestCategories.Unit)]
[Theory]
[InlineData("1:1.2-1", "0:9.9-9", 1)] // Epoch jump
[InlineData("2.0~rc1", "2.0", -1)] // Tilde pre-release
[InlineData("1.2-3+deb12u1", "1.2-3+deb12u2", -1)] // Debian stable update
@@ -151,7 +163,8 @@ public class DebianVersionComparerTests
#region Real-World Advisory Scenarios
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_OpenSSL_DebianBackport_CorrectlyIdentifiesVulnerable()
{
// Installed version vs fixed version from DSA
@@ -164,7 +177,8 @@ public class DebianVersionComparerTests
result.IsGreaterThanOrEqual.Should().BeFalse("installed is VULNERABLE");
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_OpenSSL_DebianBackport_CorrectlyIdentifiesFixed()
{
// Installed version >= fixed version
@@ -176,7 +190,8 @@ public class DebianVersionComparerTests
result.IsGreaterThanOrEqual.Should().BeTrue("installed version is FIXED");
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_UbuntuSecurityBackport_CorrectlyIdentifies()
{
// Ubuntu security backport pattern

View File

@@ -2,6 +2,7 @@ using FluentAssertions;
using StellaOps.VersionComparison;
using StellaOps.VersionComparison.Comparers;
using StellaOps.TestKit;
namespace StellaOps.VersionComparison.Tests;
public class RpmVersionComparerTests
@@ -41,7 +42,8 @@ public class RpmVersionComparerTests
{ "1.0-1", "1.0a-1", -1 },
};
[Theory]
[Trait("Category", TestCategories.Unit)]
[Theory]
[MemberData(nameof(RpmComparisonCases))]
public void Compare_RpmVersions_ReturnsExpectedOrder(string left, string right, int expected)
{
@@ -49,19 +51,22 @@ public class RpmVersionComparerTests
result.Should().Be(expected, because: $"comparing '{left}' with '{right}'");
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_SameVersion_ReturnsZero()
{
_comparer.Compare("1.0-1.el8", "1.0-1.el8").Should().Be(0);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_NullLeft_ReturnsNegative()
{
_comparer.Compare(null, "1.0-1").Should().BeNegative();
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Compare_NullRight_ReturnsPositive()
{
_comparer.Compare("1.0-1", null).Should().BePositive();
@@ -71,7 +76,8 @@ public class RpmVersionComparerTests
#region Proof Line Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_EpochDifference_ReturnsEpochProof()
{
var result = _comparer.CompareWithProof("0:1.0-1", "1:0.1-1");
@@ -81,7 +87,8 @@ public class RpmVersionComparerTests
result.ProofLines.Should().Contain(line => line.Contains("Epoch:") && line.Contains("left is older"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_SameEpochDifferentVersion_ReturnsVersionProof()
{
var result = _comparer.CompareWithProof("1:1.0-1", "1:2.0-1");
@@ -91,7 +98,8 @@ public class RpmVersionComparerTests
result.ProofLines.Should().Contain(line => line.Contains("Version:") && line.Contains("left is older"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_SameVersionDifferentRelease_ReturnsReleaseProof()
{
var result = _comparer.CompareWithProof("1.0-1.el8", "1.0-1.el8_5");
@@ -100,7 +108,8 @@ public class RpmVersionComparerTests
result.ProofLines.Should().Contain(line => line.Contains("Release:") && line.Contains("left is older"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_EqualVersions_ReturnsEqualProof()
{
var result = _comparer.CompareWithProof("1.0-1.el8", "1.0-1.el8");
@@ -110,7 +119,8 @@ public class RpmVersionComparerTests
result.ProofLines.Should().AllSatisfy(line => line.Should().Contain("equal"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompareWithProof_TildePreRelease_ReturnsCorrectProof()
{
var result = _comparer.CompareWithProof("1.0~rc1-1", "1.0-1");
@@ -123,7 +133,8 @@ public class RpmVersionComparerTests
#region Edge Cases
[Theory]
[Trait("Category", TestCategories.Unit)]
[Theory]
[InlineData("1:1.2-1", "0:9.9-9", 1)] // Epoch jump
[InlineData("2.0~rc1", "2.0", -1)] // Tilde pre-release
[InlineData("1.2-3.el9_2", "1.2-3.el9_3", -1)] // Release qualifier

View File

@@ -16,6 +16,7 @@
<ItemGroup>
<ProjectReference Include="..\..\StellaOps.VersionComparison\StellaOps.VersionComparison.csproj" />
<ProjectReference Include="../../StellaOps.TestKit/StellaOps.TestKit.csproj" />
</ItemGroup>
</Project>