diff --git a/src/HassModel/NetDaemon.HassModel.CodeGenerator/DependencyValidator.cs b/src/HassModel/NetDaemon.HassModel.CodeGenerator/DependencyValidator.cs index 13a68e3ee..3c98c80b4 100644 --- a/src/HassModel/NetDaemon.HassModel.CodeGenerator/DependencyValidator.cs +++ b/src/HassModel/NetDaemon.HassModel.CodeGenerator/DependencyValidator.cs @@ -38,6 +38,15 @@ public static void ValidatePackageRefrences() public static IEnumerable GetProjects() => Directory.GetFiles(".", "*.csproj", SearchOption.AllDirectories); + /// + /// Trims the pre-release information from a version string + /// + internal static string TrimPreReleaseVersion(string version) + { + var parts = version.Split('-'); + return parts[0]; + } + private static IEnumerable<(string name, string version)>GetPackageReferences(string projectFilePath) { var csproj = new XmlDocument(); @@ -51,6 +60,7 @@ public static void ValidatePackageRefrences() var version = packageReference.Attributes?["Version"]?.Value; if (packageName is not null && version is not null) { + packageName = TrimPreReleaseVersion(packageName); yield return (packageName, version); } } diff --git a/src/HassModel/NetDaemon.HassModel.Tests/CodeGenerator/DependencyValidatorTests.cs b/src/HassModel/NetDaemon.HassModel.Tests/CodeGenerator/DependencyValidatorTests.cs new file mode 100644 index 000000000..207f7dc09 --- /dev/null +++ b/src/HassModel/NetDaemon.HassModel.Tests/CodeGenerator/DependencyValidatorTests.cs @@ -0,0 +1,22 @@ +using NetDaemon.HassModel.CodeGenerator; + +namespace NetDaemon.HassModel.Tests.CodeGenerator; + +public class DependencyValidatorTests +{ + // Test that pre-release versions are trimmed using the TrimPreReleaseVersion method using theory + [Theory] + [InlineData("1.0.0-alpha", "1.0.0")] + [InlineData("24.17.0-alpha-2", "24.17.0")] + [InlineData("24.17.0", "24.17.0")] + public void TrimPreReleaseVersionShouldReturnCorrectVersion(string version, string expected) + { + // ARRANGE + + // ACT + var result = DependencyValidator.TrimPreReleaseVersion(version); + + // ASSERT + result.Should().Be(expected); + } +}