fis.airapp相关运行时修复以及打包构建工作流修复

This commit is contained in:
lincube
2026-05-26 13:25:42 +08:00
parent 1d7a878d55
commit 553cee54f9
11 changed files with 332 additions and 17 deletions

View File

@@ -0,0 +1,32 @@
using Xunit;
namespace LanMountainDesktop.Tests;
public sealed class LauncherStartupTimeoutPolicyTests
{
[Fact]
public void LauncherStartupTimeouts_MatchSlowStartupContract()
{
var source = ReadRepositoryFile("LanMountainDesktop.Launcher", "Services", "LauncherFlowCoordinator.cs");
Assert.Contains("StartupSoftTimeout = TimeSpan.FromSeconds(30)", source);
Assert.Contains("StartupHardTimeout = TimeSpan.FromSeconds(120)", source);
Assert.DoesNotContain("StartupHardTimeout = TimeSpan.FromSeconds(30)", source);
}
private static string ReadRepositoryFile(params string[] pathParts)
{
var directory = new DirectoryInfo(AppContext.BaseDirectory);
while (directory is not null && !File.Exists(Path.Combine(directory.FullName, "LanMountainDesktop.slnx")))
{
directory = directory.Parent;
}
if (directory is null)
{
throw new DirectoryNotFoundException("Unable to locate repository root.");
}
return File.ReadAllText(Path.Combine([directory.FullName, .. pathParts]));
}
}

View File

@@ -27,6 +27,26 @@ public sealed class PackagingRuntimePolicyTests
Assert.Contains("System.Private.CoreLib.dll", script);
}
[Fact]
public void WindowsPayloadGuard_RequiresLauncherMainAndAirAppHost()
{
var script = ReadRepositoryFile("LanMountainDesktop", "scripts", "Optimize-PublishPayload.ps1");
Assert.Contains("Assert-WindowsPayloadContainsRequiredHosts", script);
Assert.Contains("LanMountainDesktop.Launcher.exe", script);
Assert.Contains("LanMountainDesktop.exe", script);
Assert.Contains("LanMountainDesktop.AirAppHost.exe", script);
}
[Fact]
public void ReleaseWorkflow_VerifiesAirAppHostBeforePublishingInstaller()
{
var workflow = ReadRepositoryFile(".github", "workflows", "release.yml");
Assert.Contains("Verify Windows app host payload", workflow);
Assert.Contains("LanMountainDesktop.AirAppHost.exe", workflow);
}
[Fact]
public void Installer_DownloadsArchitectureSpecificDesktopRuntime()
{