test: classify prerequisite lanes and own Avalonia sessions

This commit is contained in:
Erik 2026-08-18 11:30:47 +02:00
parent c1a905004a
commit 3684e7b5e7
113 changed files with 273 additions and 22 deletions

View file

@ -9,6 +9,7 @@ namespace AcDream.Launcher.Core.Tests.Launching;
public sealed class LauncherProcessSupervisorTests
{
[Fact]
[Trait("Lane", "Windows")]
public void WindowsFactoryUsesNativeProcessGroupsOnlyForConsoleChildren()
{
if (!OperatingSystem.IsWindows())
@ -148,6 +149,7 @@ public sealed class LauncherProcessSupervisorTests
}
[Fact]
[Trait("Lane", "Linux")]
public void GracefulStopSignalSendsSigintToARealChildOnLinux()
{
// Review finding F3, proven end to end against the real
@ -221,6 +223,7 @@ public sealed class LauncherProcessSupervisorTests
}
[Fact]
[Trait("Lane", "Windows")]
public async Task WindowsCtrlBreakStopsOnlyTheTargetProcessGroupWithoutKill()
{
if (!OperatingSystem.IsWindows())
@ -316,6 +319,7 @@ public sealed class LauncherProcessSupervisorTests
}
[Fact]
[Trait("Lane", "Windows")]
public async Task WindowsConsolelessParentStillTargetsDistinctChildProcessGroups()
{
if (!OperatingSystem.IsWindows())
@ -655,6 +659,7 @@ public sealed class LauncherProcessSupervisorTests
}
[Fact]
[Trait("Lane", "Windows")]
public async Task RealChildStderrIsCapturedForTheWindowsNativeConsolePath()
{
// Fix #406 sibling gap: on Windows, console-capable children

View file

@ -78,6 +78,7 @@ public sealed class LauncherExecutableSetTests : IDisposable
}
[Fact]
[Trait("Lane", "Linux")]
public void LinuxRequiresExecutePermissionForBothCoDeployedHosts()
{
if (!OperatingSystem.IsLinux())
@ -118,6 +119,7 @@ public sealed class LauncherExecutableSetTests : IDisposable
}
[Fact]
[Trait("Lane", "Windows")]
public void WindowsPreservesExistenceOnlyAvailability()
{
if (!OperatingSystem.IsWindows())

View file

@ -128,6 +128,7 @@ public sealed class LauncherProfileHardeningTests : IDisposable
}
[Fact]
[Trait("Lane", "Linux")]
public void LinuxLoadNormalizesAnExistingCredentialFileTo0600BeforeReading()
{
if (!OperatingSystem.IsLinux())

View file

@ -317,6 +317,7 @@ public sealed class LauncherProfileStoreTests : IDisposable
}
[Fact]
[Trait("Lane", "Linux")]
public void SaveSetsOwnerOnlyPermissionsOnLinux()
{
// Linux-conditional: 0600 is a Linux-only hygiene step (spec §5,
@ -361,6 +362,7 @@ public sealed class LauncherProfileStoreTests : IDisposable
}
[Fact]
[Trait("Lane", "Linux")]
public void TempCredentialFileIsOwnerOnlyFromItsFirstObservableLinuxState()
{
// Deterministic proof of the exact production create path: inspect

View file

@ -157,6 +157,7 @@ public sealed class StatusFileTailerTests : IDisposable
}
[Fact]
[Trait("Lane", "Windows")]
public void ReadNewEventsReturnsEmptyRatherThanThrowingOnASharingViolation()
{
// A deterministic proxy for the File.Exists -> new FileStream

View file

@ -178,6 +178,7 @@ public sealed class ClientVersionStoreTests : IDisposable
}
[Fact]
[Trait("Lane", "Linux")]
public async Task LinuxTreatsNonCanonicalInstallJsonCasingAsUnrecordedContent()
{
if (!OperatingSystem.IsLinux())