diff --git a/Assets/Tests/Editor/ToolSettingsUseCaseTests.cs b/Assets/Tests/Editor/ToolSettingsUseCaseTests.cs index 9257be45d4..f502594eaa 100644 --- a/Assets/Tests/Editor/ToolSettingsUseCaseTests.cs +++ b/Assets/Tests/Editor/ToolSettingsUseCaseTests.cs @@ -102,6 +102,55 @@ public void ToolSettingsToolLinkPolicy_WhenAwaitPausePointRequested_IsNotUserFac Is.EqualTo(UnityCliLoopConstants.SETTINGS_TOOL_NAME_PAUSE_POINT)); } + [Test] + public void TryGetToolCatalog_WhenRegistryAvailable_ExcludesWatchAuxiliaryTools() + { + // Verifies Tool Settings hides the watch tools because they belong to the pause-point family toggle. + IToolSettingsPort toolSettingsPort = new InMemoryToolSettingsPort(); + UnityCliLoopToolRegistrarService toolRegistrarService = new( + new EmptyInternalToolNameProvider(), + toolSettingsPort, + new UnityCliLoopToolExecutionService(new NoOpEditorRuntimeStatePort()), + UnityCliLoopToolDiscovery.DiscoverTools); + ToolSettingsUseCase useCase = new( + toolSettingsPort, + toolRegistrarService, + new StaticToolSkillDescriptionProvider(new Dictionary())); + useCase.WarmupRegistry(); + + bool isAvailable = useCase.TryGetToolCatalog(out ToolSettingsUseCase.ToolCatalogItem[] allTools); + string[] toolNames = allTools.Select(tool => tool.Name).ToArray(); + + Assert.That(isAvailable, Is.True); + Assert.That(toolNames, Does.Not.Contain(UnityCliLoopConstants.TOOL_NAME_ENABLE_WATCH)); + Assert.That(toolNames, Does.Not.Contain(UnityCliLoopConstants.TOOL_NAME_CLEAR_WATCH)); + Assert.That(toolNames, Does.Not.Contain(UnityCliLoopConstants.TOOL_NAME_GET_WATCH_VALUES)); + } + + [Test] + public void ToolSettingsToolLinkPolicy_WhenWatchToolRequested_IsNotUserFacingAndMapsToPausePoint() + { + // Verifies each watch tool is auxiliary and resolves to the pause-point settings key. + string[] watchToolNames = + { + UnityCliLoopConstants.TOOL_NAME_ENABLE_WATCH, + UnityCliLoopConstants.TOOL_NAME_CLEAR_WATCH, + UnityCliLoopConstants.TOOL_NAME_GET_WATCH_VALUES + }; + + foreach (string watchToolName in watchToolNames) + { + Assert.That( + ToolSettingsToolLinkPolicy.IsUserFacingToolSettingsTool(watchToolName), + Is.False, + watchToolName); + Assert.That( + ToolSettingsToolLinkPolicy.GetSettingsToolName(watchToolName), + Is.EqualTo(UnityCliLoopConstants.SETTINGS_TOOL_NAME_PAUSE_POINT), + watchToolName); + } + } + [Test] public void TryGetToolCatalog_WhenSkillDescriptionExists_IncludesDescription() { diff --git a/Packages/src/Editor/Domain/ToolSettingsToolLinkPolicy.cs b/Packages/src/Editor/Domain/ToolSettingsToolLinkPolicy.cs index 1ab865c939..3f67bba34f 100644 --- a/Packages/src/Editor/Domain/ToolSettingsToolLinkPolicy.cs +++ b/Packages/src/Editor/Domain/ToolSettingsToolLinkPolicy.cs @@ -15,7 +15,10 @@ internal static class ToolSettingsToolLinkPolicy UnityCliLoopConstants.COMMAND_NAME_AWAIT_PAUSE_POINT, UnityCliLoopConstants.TOOL_NAME_ENABLE_PAUSE_POINT, UnityCliLoopConstants.TOOL_NAME_CLEAR_PAUSE_POINT, - UnityCliLoopConstants.COMMAND_NAME_PAUSE_POINT_STATUS + UnityCliLoopConstants.COMMAND_NAME_PAUSE_POINT_STATUS, + UnityCliLoopConstants.TOOL_NAME_ENABLE_WATCH, + UnityCliLoopConstants.TOOL_NAME_CLEAR_WATCH, + UnityCliLoopConstants.TOOL_NAME_GET_WATCH_VALUES }; internal static bool IsUserFacingToolSettingsTool(string toolName)