logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    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.

    Inheritance
    object
    ProjectWiringRunnerTests
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    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()
    In this article
    © 2026 Serenity. All Rights Reserved