feat: harden isolated Tornado test workflow

This commit is contained in:
2026-07-10 11:27:40 +09:00
parent 5a8c7028dc
commit fc932b27f6
36 changed files with 3919 additions and 226 deletions

View File

@@ -118,6 +118,75 @@ public sealed class K3dRegistrationProbeTests
AssertSafe(report);
}
[Fact]
public void Probe_WhenProcessOrTypeLibraryIsNotX64_FailsClosed()
{
var snapshot = ReadySnapshot() with
{
Is64BitProcess = false,
Win64TypeLibraryPath = null
};
var probe = CreateProbe(snapshot, ReadyBinaries());
var report = probe.Probe();
Assert.False(report.IsReady);
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.ProcessIsNot64Bit));
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.TypeLibraryMissing));
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.Win64BinaryMissing));
AssertSafe(report);
}
[Fact]
public void Probe_WhenClassThreadingAndTypeLibraryDiffer_FailsClosed()
{
var snapshot = ReadySnapshot() with
{
Engine = ReadySnapshot().Engine with
{
ThreadingModel = "Both",
TypeLibraryId = K3dComConstants.KaEventHandlerClassId
},
EventHandler = ReadySnapshot().EventHandler with
{
ThreadingModel = "Free",
TypeLibraryId = K3dComConstants.KaEngineClassId
}
};
var probe = CreateProbe(snapshot, ReadyBinaries());
var report = probe.Probe();
Assert.False(report.IsReady);
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.EngineThreadingModelMismatch));
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.EngineTypeLibraryMismatch));
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.EventHandlerThreadingModelMismatch));
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.EventHandlerTypeLibraryMismatch));
Assert.False(report.IsEngineClassReady);
Assert.False(report.IsEventHandlerClassReady);
AssertSafe(report);
}
[Fact]
public void Probe_WhenEitherClassRegistrationIsMissing_FailsClosed()
{
var snapshot = ReadySnapshot() with
{
Engine = ReadySnapshot().Engine with { ClassKeyPresent = false },
EventHandler = ReadySnapshot().EventHandler with { ClassKeyPresent = false }
};
var probe = CreateProbe(snapshot, ReadyBinaries());
var report = probe.Probe();
Assert.False(report.IsReady);
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.EngineClassMissing));
Assert.True(report.Issues.HasFlag(K3dRegistrationIssue.EventHandlerClassMissing));
Assert.False(report.IsEngineClassReady);
Assert.False(report.IsEventHandlerClassReady);
AssertSafe(report);
}
private static K3dRegistrationProbe CreateProbe(
K3dRegistrySnapshot snapshot,
FakeBinaryInspector binaries) =>