Skip to content

Commit 96e1101

Browse files
committed
Add Test Timeout server settings
1 parent de5b694 commit 96e1101

File tree

4 files changed

+29
-8
lines changed

4 files changed

+29
-8
lines changed

Editor/Services/ITestRunnerService.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,10 @@ public interface ITestRunnerService
2626
/// <param name="testMode">Test mode to run</param>
2727
/// <param name="testFilter">Optional test filter</param>
2828
/// <param name="completionSource">TaskCompletionSource to resolve when tests are complete</param>
29-
/// <param name="timeoutMinutes">Timeout in minutes, defaults to 10</param>
3029
/// <returns>Task that resolves with test results when tests are complete</returns>
3130
void ExecuteTests(
3231
TestMode testMode,
3332
string testFilter,
34-
TaskCompletionSource<JObject> completionSource,
35-
int timeoutMinutes = 1);
33+
TaskCompletionSource<JObject> completionSource);
3634
}
3735
}

Editor/Services/TestRunnerService.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,11 @@ public List<TestItemInfo> GetAllTests()
4949
/// <param name="testMode">Test mode to run</param>
5050
/// <param name="testFilter">Optional test filter</param>
5151
/// <param name="completionSource">TaskCompletionSource to resolve when tests are complete</param>
52-
/// <param name="timeoutMinutes">Timeout in minutes, defaults to 10</param>
5352
/// <returns>Task that resolves with test results when tests are complete</returns>
5453
public async void ExecuteTests(
5554
TestMode testMode,
5655
string testFilter,
57-
TaskCompletionSource<JObject> completionSource,
58-
int timeoutMinutes = 1)
56+
TaskCompletionSource<JObject> completionSource)
5957
{
6058
// Create filter
6159
var filter = new Filter
@@ -72,15 +70,18 @@ public async void ExecuteTests(
7270
// Execute tests
7371
_testRunnerApi.Execute(new ExecutionSettings(filter));
7472

73+
// Use timeout from settings if not specified
74+
var timeoutSeconds = McpUnitySettings.Instance.TestTimeoutSeconds;
75+
7576
Task completedTask = await Task.WhenAny(
7677
completionSource.Task,
77-
Task.Delay(TimeSpan.FromMinutes(timeoutMinutes))
78+
Task.Delay(TimeSpan.FromSeconds(timeoutSeconds))
7879
);
7980

8081
if (completedTask != completionSource.Task)
8182
{
8283
completionSource.SetResult(McpUnitySocketHandler.CreateErrorResponse(
83-
$"Test run timed out after {timeoutMinutes} minutes",
84+
$"Test run timed out after {timeoutSeconds} seconds",
8485
"test_runner_timeout"
8586
));
8687
}

Editor/UnityBridge/McpUnityEditorWindow.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,24 @@ private void DrawServerTab()
107107

108108
EditorGUILayout.Space();
109109

110+
// Test timeout setting
111+
EditorGUILayout.BeginHorizontal();
112+
int newTimeout = EditorGUILayout.IntField(new GUIContent("Test Timeout (seconds)", "Timeout in seconds for test execution"), settings.TestTimeoutSeconds);
113+
if (newTimeout < 60)
114+
{
115+
newTimeout = 60;
116+
Debug.LogError("Test timeout must be at least 60 seconds.");
117+
}
118+
119+
if (newTimeout != settings.TestTimeoutSeconds)
120+
{
121+
settings.TestTimeoutSeconds = newTimeout;
122+
settings.SaveSettings();
123+
}
124+
EditorGUILayout.EndHorizontal();
125+
126+
EditorGUILayout.Space();
127+
110128
// Auto start server toggle
111129
bool autoStartServer = EditorGUILayout.Toggle(new GUIContent("Auto Start Server", "Automatically starts the MCP server when Unity opens"), settings.AutoStartServer);
112130
if (autoStartServer != settings.AutoStartServer)

Editor/UnityBridge/McpUnitySettings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using McpUnity.Utils;
44
using UnityEngine;
55
using UnityEditor;
6+
using UnityEngine.Serialization;
67

78
namespace McpUnity.Unity
89
{
@@ -27,6 +28,9 @@ public class McpUnitySettings
2728

2829
[Tooltip("Whether to show info logs in the Unity console")]
2930
public bool EnableInfoLogs = true;
31+
32+
[Tooltip("Timeout in seconds for test execution")]
33+
public int TestTimeoutSeconds = 60;
3034

3135
/// <summary>
3236
/// Singleton instance of settings

0 commit comments

Comments
 (0)