Files
Telegram-Panel/tests/TelegramPanel.Web.Tests/ReleaseVersionContractTests.cs
2026-08-09 13:38:07 +08:00

65 lines
2.5 KiB
C#

using System.Xml.Linq;
using Xunit;
namespace TelegramPanel.Web.Tests;
public sealed class ReleaseVersionContractTests
{
[Fact]
public void ()
{
var root = TestRepositoryRoot.Find();
var props = XDocument.Load(Path.Combine(root, "Directory.Build.props"));
var values = new[]
{
ReadProperty(props, "Version"),
ReadProperty(props, "InformationalVersion"),
RemoveRevisionComponent(ReadProperty(props, "AssemblyVersion")),
RemoveRevisionComponent(ReadProperty(props, "FileVersion"))
};
Assert.All(values, value => Assert.Equal(values[0], value));
Assert.Equal(
"false",
ReadProperty(props, "IncludeSourceRevisionInInformationalVersion"));
var webProject = File.ReadAllText(
Path.Combine(root, "src", "TelegramPanel.Web", "TelegramPanel.Web.csproj"));
Assert.Contains("Lines=\"$(InformationalVersion)\"", webProject, StringComparison.Ordinal);
}
[Theory]
[InlineData("docker.yml")]
[InlineData("release.yml")]
public void (string workflowName)
{
var root = TestRepositoryRoot.Find();
var workflow = File.ReadAllText(
Path.Combine(root, ".github", "workflows", workflowName));
Assert.Contains("Validate release tag version", workflow, StringComparison.Ordinal);
Assert.Contains("Directory.Build.props", workflow, StringComparison.Ordinal);
Assert.Contains("PROJECT_VERSION", workflow, StringComparison.Ordinal);
Assert.Contains("TAG_VERSION", workflow, StringComparison.Ordinal);
}
[Fact]
public void Docker拉取请求覆盖前端与版本文件()
{
var root = TestRepositoryRoot.Find();
var workflow = File.ReadAllText(
Path.Combine(root, ".github", "workflows", "docker.yml"));
Assert.Contains("- \"frontend/**\"", workflow, StringComparison.Ordinal);
Assert.Contains("- \"Directory.Build.props\"", workflow, StringComparison.Ordinal);
}
private static string ReadProperty(XDocument document, string propertyName) =>
document.Descendants(propertyName).Select(x => x.Value.Trim()).FirstOrDefault()
?? throw new InvalidOperationException($"Directory.Build.props 缺少 {propertyName}");
private static string RemoveRevisionComponent(string version) =>
version.EndsWith(".0", StringComparison.Ordinal) ? version[..^2] : version;
}