fix: restore legacy playout parity and live startup

This commit is contained in:
2026-07-29 14:07:36 +09:00
parent 80b50c80b3
commit b35c000796
31 changed files with 3356 additions and 382 deletions

View File

@@ -11,7 +11,7 @@ public sealed class LegacyFirstRunSetupNativeContractTests
"MBN_STOCK_WEBVIEW.LegacyParityApp");
[Fact]
public void SourceOnlyLaunchShowsOnlyTheNativeFirstRunWindow()
public void SourceOnlyLaunchUsesSetupAndFullRuntimeMayRecoverBeforeMainWindow()
{
var app = File.ReadAllText(Path.Combine(AppRoot, "App.xaml.cs"))
.ReplaceLineEndings("\n");
@@ -37,7 +37,7 @@ public sealed class LegacyFirstRunSetupNativeContractTests
Assert.Contains("DevelopmentLiveLaunchBootstrap.TryApply(", fullRuntime,
StringComparison.Ordinal);
Assert.Contains("new MainWindow()", fullRuntime, StringComparison.Ordinal);
Assert.DoesNotContain("new FirstRunSetupWindow()", fullRuntime,
Assert.Contains("new FirstRunSetupWindow(", fullRuntime,
StringComparison.Ordinal);
Assert.DoesNotContain(
"new FirstRunSetupWindow(App.IsDevelopmentLiveLaunch",
@@ -257,7 +257,78 @@ public sealed class LegacyFirstRunSetupNativeContractTests
}
[Fact]
public void SourceOnlyBuildEmbedsOnlyItsOwnClonePathForTheLocalBinding()
public void RecoveryPrefillsValidatedStoredFoldersAndRequiresExplicitReplacement()
{
var setup = File.ReadAllText(Path.Combine(
AppRoot,
"FirstRunSetupWindow.xaml.cs"))
.ReplaceLineEndings("\n");
Assert.Contains(
"RestoreStoredRuntimeFolders();",
setup,
StringComparison.Ordinal);
Assert.Contains(
"var loaded = new LegacyOperatorSettingsStore().Load();",
setup,
StringComparison.Ordinal);
Assert.Contains(
"loaded.Failure != LegacyOperatorSettingsStoreFailure.None",
setup,
StringComparison.Ordinal);
Assert.Contains(
"loaded.Settings.SceneDirectory",
setup,
StringComparison.Ordinal);
Assert.Contains(
"loaded.Settings.ResourceDirectory",
setup,
StringComparison.Ordinal);
Assert.Contains(
"_liveConfigReplacementAvailable =\n" +
" liveConfigReplacementAvailable &&\n" +
" IsVerifiedSetupAvailable();",
setup,
StringComparison.Ordinal);
Assert.Contains(
"liveConfigReplacementAvailable && _runtimeFoldersReady",
setup,
StringComparison.Ordinal);
Assert.Contains(
"await RunSetupFromUiAsync(replaceLiveConfig: true);",
setup,
StringComparison.Ordinal);
Assert.Contains(
"internal static bool IsVerifiedSetupAvailable() =>\n" +
" TryResolveRepositoryRoot(out _);",
setup,
StringComparison.Ordinal);
Assert.Contains(
"SingleOrDefault(attribute => string.Equals(",
setup,
StringComparison.Ordinal);
Assert.Contains(
"if (!File.Exists(project))",
setup,
StringComparison.Ordinal);
Assert.Contains(
"if (replaceLiveConfig)\n" +
" {\n" +
" AddArgument(\"-ReplaceLiveConfig\");",
setup,
StringComparison.Ordinal);
Assert.DoesNotContain(
"RunSetupFromUiAsync(replaceLiveConfig: true);",
setup[
setup.IndexOf("internal FirstRunSetupWindow(", StringComparison.Ordinal)..
setup.IndexOf(
"private async void OnChooseCutsClicked",
StringComparison.Ordinal)],
StringComparison.Ordinal);
}
[Fact]
public void DebugBuildEmbedsItsOwnClonePathForFirstRunAndRecovery()
{
var project = XDocument.Load(Path.Combine(
AppRoot,
@@ -266,14 +337,9 @@ public sealed class LegacyFirstRunSetupNativeContractTests
Assert.Equal("SourceRepositoryRoot", metadata.Attribute("Include")?.Value);
Assert.Equal("$(SourceRepositoryRoot)", metadata.Attribute("Value")?.Value);
Assert.Contains(
"'$(LegacyRuntimeAssetsEnabled)' != 'true'",
metadata.Attribute("Condition")?.Value,
StringComparison.Ordinal);
Assert.Contains(
Assert.Equal(
"'$(Configuration)' == 'Debug'",
metadata.Attribute("Condition")?.Value,
StringComparison.Ordinal);
metadata.Attribute("Condition")?.Value);
}
[Fact]