@mflrevan/ucp 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bridge/com.ucp.bridge/CHANGELOG.md +48 -0
- package/bridge/com.ucp.bridge/Editor/Bridge/BridgeServer.cs +55 -6
- package/bridge/com.ucp.bridge/Editor/Bridge/EditorStateSummary.cs +165 -0
- package/bridge/com.ucp.bridge/Editor/Bridge/EditorStateSummary.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Editor/Compatibility/UnityObjectCompat.cs +22 -5
- package/bridge/com.ucp.bridge/Editor/Controllers/EditorController.cs +1 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/HierarchyController.cs +10 -10
- package/bridge/com.ucp.bridge/Editor/Controllers/LogsController.cs +71 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/MaterialController.cs +2 -2
- package/bridge/com.ucp.bridge/Editor/Controllers/ObjectLocator.cs +4 -4
- package/bridge/com.ucp.bridge/Editor/Controllers/ObjectReferenceResolver.cs +3 -3
- package/bridge/com.ucp.bridge/Editor/Controllers/PrefabController.cs +6 -6
- package/bridge/com.ucp.bridge/Editor/Controllers/PropertyController.cs +7 -7
- package/bridge/com.ucp.bridge/Editor/Controllers/RecordingController.cs +8 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/SceneChangeTracker.cs +3 -3
- package/bridge/com.ucp.bridge/Editor/Controllers/SceneController.cs +3 -3
- package/bridge/com.ucp.bridge/Editor/Controllers/SnapshotController.cs +5 -5
- package/bridge/com.ucp.bridge/Editor/Controllers/TestRunnerController.cs +1 -1
- package/bridge/com.ucp.bridge/Editor/Controllers/TransformController.cs +1 -1
- package/bridge/com.ucp.bridge/Editor/Controllers/UiController.cs +70 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/UiController.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/ViewController.cs +1 -1
- package/bridge/com.ucp.bridge/Editor/Protocol/MiniJson.cs +1 -1
- package/bridge/com.ucp.bridge/Editor/Ui/UiHost.cs +468 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiHost.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiLintService.cs +554 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiLintService.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiOperationManager.cs +870 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiOperationManager.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioApplier.cs +496 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioApplier.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioLoader.cs +854 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioLoader.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioModels.cs +374 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioModels.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiVisualTreeInspector.cs +690 -0
- package/bridge/com.ucp.bridge/Editor/Ui/UiVisualTreeInspector.cs.meta +11 -0
- package/bridge/com.ucp.bridge/{Runtime.meta → Editor/Ui.meta} +1 -1
- package/bridge/com.ucp.bridge/Tests/Editor/ControllerSmokeTests.cs +79 -4
- package/bridge/com.ucp.bridge/Tests/Editor/SpatialVisualControllerTests.cs +2 -2
- package/bridge/com.ucp.bridge/Tests/Editor/UiControllerTests.cs +547 -0
- package/bridge/com.ucp.bridge/Tests/Editor/UiControllerTests.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Tests/Editor/UiLintServiceTests.cs +253 -0
- package/bridge/com.ucp.bridge/Tests/Editor/UiLintServiceTests.cs.meta +11 -0
- package/bridge/com.ucp.bridge/Tests/Editor/UiScenarioTests.cs +587 -0
- package/bridge/com.ucp.bridge/Tests/Editor/UiScenarioTests.cs.meta +11 -0
- package/bridge/com.ucp.bridge/package.json +1 -1
- package/package.json +1 -1
- package/bridge/com.ucp.bridge/Runtime/UCP.Bridge.Runtime.asmdef +0 -14
- package/bridge/com.ucp.bridge/Runtime/UCP.Bridge.Runtime.asmdef.meta +0 -7
|
@@ -7,6 +7,7 @@ using NUnit.Framework;
|
|
|
7
7
|
using UnityEditor;
|
|
8
8
|
using UnityEditor.SceneManagement;
|
|
9
9
|
using UnityEngine;
|
|
10
|
+
using UnityEngine.SceneManagement;
|
|
10
11
|
using UnityEngine.Profiling;
|
|
11
12
|
using UnityEngine.TestTools;
|
|
12
13
|
|
|
@@ -189,7 +190,7 @@ namespace UCP.Bridge.Tests
|
|
|
189
190
|
try
|
|
190
191
|
{
|
|
191
192
|
go.transform.localPosition = new Vector3(1.5f, 2.5f, 3.5f);
|
|
192
|
-
var id = go.
|
|
193
|
+
var id = go.GetId();
|
|
193
194
|
|
|
194
195
|
var serialized = _router.Dispatch("object/get-property", 1, "{\"instanceId\":ID,\"component\":\"Transform\",\"property\":\"m_LocalPosition\"}".Replace("ID", id.ToString()));
|
|
195
196
|
Assert.That(serialized.error, Is.Null);
|
|
@@ -657,6 +658,80 @@ namespace UCP.Bridge.Tests
|
|
|
657
658
|
Assert.That(getResult["stackTrace"], Is.EqualTo("stack line 1\nstack line 2"));
|
|
658
659
|
}
|
|
659
660
|
|
|
661
|
+
[Test]
|
|
662
|
+
public void EditorStateSummary_ReportsModeSceneAndConsoleAndCountsNewEntries()
|
|
663
|
+
{
|
|
664
|
+
var cursor = LogsController.GetLatestId();
|
|
665
|
+
var summary = EditorStateSummary.Capture(cursor);
|
|
666
|
+
|
|
667
|
+
Assert.That(summary["mode"], Is.EqualTo("edit"));
|
|
668
|
+
var scene = (Dictionary<string, object>)summary["scene"];
|
|
669
|
+
Assert.That(scene["name"], Is.EqualTo(SceneManager.GetActiveScene().name));
|
|
670
|
+
Assert.That(scene["dirty"], Is.EqualTo(SceneManager.GetActiveScene().isDirty));
|
|
671
|
+
var console = (Dictionary<string, object>)summary["console"];
|
|
672
|
+
Assert.That(Convert.ToInt32(console["errors"]), Is.GreaterThanOrEqualTo(0));
|
|
673
|
+
Assert.That(Convert.ToInt32(console["warnings"]), Is.GreaterThanOrEqualTo(0));
|
|
674
|
+
Assert.That(console.ContainsKey("newWarnings"), Is.False, "nothing was logged after the cursor");
|
|
675
|
+
Assert.That(summary.ContainsKey("recording"), Is.False);
|
|
676
|
+
|
|
677
|
+
LogAssert.Expect(LogType.Warning, "ucp summary probe warning");
|
|
678
|
+
Debug.LogWarning("ucp summary probe warning");
|
|
679
|
+
|
|
680
|
+
var after = (Dictionary<string, object>)EditorStateSummary.Capture(cursor)["console"];
|
|
681
|
+
Assert.That(Convert.ToInt32(after["newWarnings"]), Is.EqualTo(1));
|
|
682
|
+
Assert.That(after.ContainsKey("newErrors"), Is.False);
|
|
683
|
+
LogsController.CountLevels(cursor, out var errors, out var warnings);
|
|
684
|
+
Assert.That(errors, Is.EqualTo(0));
|
|
685
|
+
Assert.That(warnings, Is.EqualTo(1));
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
[Test]
|
|
689
|
+
public void EditorStateSummary_ReadsTheConsoleBadgeCounts()
|
|
690
|
+
{
|
|
691
|
+
Assert.That(EditorStateSummary.TryReadConsoleCounts(out var errors, out var warnings), Is.True,
|
|
692
|
+
"UnityEditor.LogEntries.GetCountsByType must be reachable on this editor");
|
|
693
|
+
Assert.That(errors, Is.GreaterThanOrEqualTo(0));
|
|
694
|
+
Assert.That(warnings, Is.GreaterThanOrEqualTo(0));
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
[Test]
|
|
698
|
+
public void Responses_CarryTheEditorSummaryOnlyWhenDispatchedOnTheMainThread()
|
|
699
|
+
{
|
|
700
|
+
var response = JsonRpcResponse.Success(7, new Dictionary<string, object> { ["ok"] = true });
|
|
701
|
+
|
|
702
|
+
var offThread = BridgeServer.ResponseToDict(response);
|
|
703
|
+
Assert.That(offThread.ContainsKey("editor"), Is.False);
|
|
704
|
+
|
|
705
|
+
var onThread = BridgeServer.ResponseToDict(response, LogsController.GetLatestId());
|
|
706
|
+
var editor = (Dictionary<string, object>)onThread["editor"];
|
|
707
|
+
Assert.That(editor["mode"], Is.EqualTo("edit"));
|
|
708
|
+
Assert.That(onThread["result"], Is.SameAs(response.result));
|
|
709
|
+
|
|
710
|
+
var json = MiniJson.Serialize(onThread);
|
|
711
|
+
var parsed = (Dictionary<string, object>)MiniJson.Deserialize(json);
|
|
712
|
+
Assert.That(((Dictionary<string, object>)parsed["editor"]).ContainsKey("console"), Is.True);
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
[Test]
|
|
716
|
+
public void TestGuard_IgnoresLogsInsideIgnoreFailingMessagesWindows()
|
|
717
|
+
{
|
|
718
|
+
var entries = new List<string>
|
|
719
|
+
{
|
|
720
|
+
"real error before",
|
|
721
|
+
"\n" + LogsController.IgnoreFailingMessagesOnMarker,
|
|
722
|
+
"expected importer error",
|
|
723
|
+
"expected warning",
|
|
724
|
+
LogsController.IgnoreFailingMessagesOffMarker + "\n",
|
|
725
|
+
"real error after",
|
|
726
|
+
LogsController.IgnoreFailingMessagesOnMarker,
|
|
727
|
+
"still ignored when a test never resets the flag"
|
|
728
|
+
};
|
|
729
|
+
|
|
730
|
+
var kept = LogsController.ExcludeExpectedNoise(entries, entry => entry);
|
|
731
|
+
|
|
732
|
+
Assert.That(kept, Is.EqualTo(new[] { "real error before", "real error after" }));
|
|
733
|
+
}
|
|
734
|
+
|
|
660
735
|
[Test]
|
|
661
736
|
public void ObjectLifecycle_CreateMutateAndDelete_WorksEndToEnd()
|
|
662
737
|
{
|
|
@@ -664,7 +739,7 @@ namespace UCP.Bridge.Tests
|
|
|
664
739
|
Assert.That(create.error, Is.Null);
|
|
665
740
|
|
|
666
741
|
var createResult = (Dictionary<string, object>)create.result;
|
|
667
|
-
var instanceId = Convert.
|
|
742
|
+
var instanceId = Convert.ToInt64(createResult["instanceId"]);
|
|
668
743
|
|
|
669
744
|
var rename = _router.Dispatch("object/set-name", 1, "{\"instanceId\":" + instanceId + ",\"name\":\"RenamedSmoke\"}");
|
|
670
745
|
Assert.That(rename.error, Is.Null);
|
|
@@ -1376,7 +1451,7 @@ namespace UCP.Bridge.Tests
|
|
|
1376
1451
|
{
|
|
1377
1452
|
var create = _router.Dispatch("object/create", 1, "{\"name\":\"PrefabSource\"}");
|
|
1378
1453
|
Assert.That(create.error, Is.Null);
|
|
1379
|
-
var sourceId = Convert.
|
|
1454
|
+
var sourceId = Convert.ToInt64(((Dictionary<string, object>)create.result)["instanceId"]);
|
|
1380
1455
|
|
|
1381
1456
|
var createPrefab = _router.Dispatch(
|
|
1382
1457
|
"prefab/create",
|
|
@@ -1391,7 +1466,7 @@ namespace UCP.Bridge.Tests
|
|
|
1391
1466
|
"{\"prefab\":\"Assets/UcpControllerSmoke.prefab\",\"name\":\"PrefabInstance\"}"
|
|
1392
1467
|
);
|
|
1393
1468
|
Assert.That(instantiate.error, Is.Null);
|
|
1394
|
-
var instanceId = Convert.
|
|
1469
|
+
var instanceId = Convert.ToInt64(((Dictionary<string, object>)instantiate.result)["instanceId"]);
|
|
1395
1470
|
|
|
1396
1471
|
var status = _router.Dispatch("prefab/status", 1, "{\"instanceId\":" + instanceId + "}");
|
|
1397
1472
|
Assert.That(status.error, Is.Null);
|
|
@@ -62,7 +62,7 @@ namespace UCP.Bridge.Tests
|
|
|
62
62
|
{
|
|
63
63
|
var res = Result(_router.Dispatch("object/create", 1,
|
|
64
64
|
"{\"name\":\"Greybox\",\"primitive\":\"Cube\"}"));
|
|
65
|
-
var id = Convert.
|
|
65
|
+
var id = Convert.ToInt64(res["instanceId"]);
|
|
66
66
|
var go = ObjectLocator.FindByInstanceId(id);
|
|
67
67
|
_spawned.Add(go);
|
|
68
68
|
|
|
@@ -179,7 +179,7 @@ namespace UCP.Bridge.Tests
|
|
|
179
179
|
var res = Result(_router.Dispatch("physics/raycast", 1,
|
|
180
180
|
"{\"origin\":[0,5,0],\"direction\":[0,-1,0]}"));
|
|
181
181
|
Assert.That(Convert.ToBoolean(res["hit"]), Is.True);
|
|
182
|
-
Assert.That(Convert.
|
|
182
|
+
Assert.That(Convert.ToInt64(res["instanceId"]), Is.EqualTo(ground.GetId()));
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
[Test]
|