Class ProjectWiringRunnerTests
EditMode tests for Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectWiringRunner against a disposable scratch output root — the
shipped project tree is never written to. Mirrors SerenityCreateGameSceneGeneratorTests's
cleanup pattern: every asset a run's OWN generated content lands under Serenity.CreateGame.Tests.Editor.ProjectWiringRunnerTests.ScratchFolder, so
TearDown() strips that one subtree's Addressables entries before deleting it — including the
project's own initialization pipeline profile, which Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineProfileFactory always
creates under its own pinned Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineProfileFactory.ProjectProfileFolder regardless
of Serenity.CreateGame.Tests.Editor.ProjectWiringRunnerTests.OutputRoot, redirected here to a subfolder of Serenity.CreateGame.Tests.Editor.ProjectWiringRunnerTests.ScratchFolder via
Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineProfileFactory.SetProjectProfileFolderOverrideForTests(System.String). Creating a profile
now adopts the shipped canonical one, cloning into Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineAdoption.AdoptionOutputRoot
first — also redirected here, to Serenity.CreateGame.Tests.Editor.ProjectWiringRunnerTests.ScratchFolder itself, via
Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineAdoption.SetAdoptionOutputRootOverrideForTests(System.String) — so the real project's own
pipeline folder and Assets/Game content are never touched.
Inherited Members
Namespace: Serenity.CreateGame.Tests.Editor
Assembly: Serenity.CreateGame.Tests.Editor.dll
Syntax
public class ProjectWiringRunnerTests
Constructors
ProjectWiringRunnerTests()
Declaration
public ProjectWiringRunnerTests()
Methods
OneTimeTearDown()
Declaration
public static void OneTimeTearDown()
Run_AmbiguousPlan_ReturnsFailureWithoutCreatingAnything()
Declaration
public void Run_AmbiguousPlan_ReturnsFailureWithoutCreatingAnything()
Run_CreateStateNoSelectedSystemsScenesOff_CreatesTheProfileAndSucceeds()
Declaration
public void Run_CreateStateNoSelectedSystemsScenesOff_CreatesTheProfileAndSucceeds()
Run_CreateStateTwoSystemsOutOfCanonicalOrder_ProfileTaskOrderMatchesPlanOrder()
Selects "InstallLeaderboard" then "InstallScore" — the reverse of their canonical order — so a Create run's seeded profile can be checked against the plan it was seeded from: both must list the two tasks in the same (canonical) order, or the Summary step showed the reader something Create did not actually do.
Declaration
public void Run_CreateStateTwoSystemsOutOfCanonicalOrder_ProfileTaskOrderMatchesPlanOrder()
Run_FailingAfterProfileCreation_LeavesNoProfileBehind()
Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectWiringRunner.Run(Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectWiringPlan,Serenity.ProjectRecipe.Infrastructure.Editor.SetupAssistant.MinimalLoopOptions,Serenity.CreateGame.Infrastructure.Editor.CreateGameScenesOptions,System.Collections.Generic.IReadOnlyList{Serenity.CreateGame.Infrastructure.Editor.Systems.SerenityInstallableSystem},Serenity.Global.Infrastructure.Editor.SerenityWizardActivityLog) resolves-or-creates the profile first, then ensures the
foundation logging settings — a failure seam reachable by giving the console log settings asset an
empty Id, which GenericAssetRecipeImporter reports as an Error (not a Blocker, so the import
phase still runs, but TryEnsureFoundationLoggingSettings still reports failure via
report.HasErrors). The profile the run created moments earlier must not survive that failure —
otherwise a retry would read it as an already-owned profile (Reuse)
instead of trying Create again.
Declaration
public void Run_FailingAfterProfileCreation_LeavesNoProfileBehind()
Run_UiSettingsHasProjectOwnedCloneAlongsideShipped_ScenGenerationResolvesToTheProjectOwnedClone()
Reproduces the owner's reported defect: a shipped 'UnityUiSettings' asset ships at
'Assets/Serenity/Media/Ui/UiSettings.asset', and this adds a second, project-owned clone under the
scratch folder — the exact shape ResolveSettingsContext(string, string, string) reports
as MultipleFoundPaths, which ProjectWiringRunner.ResolveExistingSettingsPath used
to treat as missing outright even though the project's own clone was right there. GameMode/Menu/Modal
settings have no project-owned clone in this repo — only their shipped copy — so scene generation
still fails for those three (now with the "only the shipped asset" wording), proving the same rule
applies uniformly; UnityUiSettings alone must never appear in that failure, since its project-owned
clone is the one that gets picked.
Declaration
public void Run_UiSettingsHasProjectOwnedCloneAlongsideShipped_ScenGenerationResolvesToTheProjectOwnedClone()
SetUp()
Declaration
public void SetUp()
TearDown()
Declaration
public void TearDown()