@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.
Files changed (51) hide show
  1. package/README.md +1 -1
  2. package/bridge/com.ucp.bridge/CHANGELOG.md +48 -0
  3. package/bridge/com.ucp.bridge/Editor/Bridge/BridgeServer.cs +55 -6
  4. package/bridge/com.ucp.bridge/Editor/Bridge/EditorStateSummary.cs +165 -0
  5. package/bridge/com.ucp.bridge/Editor/Bridge/EditorStateSummary.cs.meta +11 -0
  6. package/bridge/com.ucp.bridge/Editor/Compatibility/UnityObjectCompat.cs +22 -5
  7. package/bridge/com.ucp.bridge/Editor/Controllers/EditorController.cs +1 -0
  8. package/bridge/com.ucp.bridge/Editor/Controllers/HierarchyController.cs +10 -10
  9. package/bridge/com.ucp.bridge/Editor/Controllers/LogsController.cs +71 -0
  10. package/bridge/com.ucp.bridge/Editor/Controllers/MaterialController.cs +2 -2
  11. package/bridge/com.ucp.bridge/Editor/Controllers/ObjectLocator.cs +4 -4
  12. package/bridge/com.ucp.bridge/Editor/Controllers/ObjectReferenceResolver.cs +3 -3
  13. package/bridge/com.ucp.bridge/Editor/Controllers/PrefabController.cs +6 -6
  14. package/bridge/com.ucp.bridge/Editor/Controllers/PropertyController.cs +7 -7
  15. package/bridge/com.ucp.bridge/Editor/Controllers/RecordingController.cs +8 -0
  16. package/bridge/com.ucp.bridge/Editor/Controllers/SceneChangeTracker.cs +3 -3
  17. package/bridge/com.ucp.bridge/Editor/Controllers/SceneController.cs +3 -3
  18. package/bridge/com.ucp.bridge/Editor/Controllers/SnapshotController.cs +5 -5
  19. package/bridge/com.ucp.bridge/Editor/Controllers/TestRunnerController.cs +1 -1
  20. package/bridge/com.ucp.bridge/Editor/Controllers/TransformController.cs +1 -1
  21. package/bridge/com.ucp.bridge/Editor/Controllers/UiController.cs +70 -0
  22. package/bridge/com.ucp.bridge/Editor/Controllers/UiController.cs.meta +11 -0
  23. package/bridge/com.ucp.bridge/Editor/Controllers/ViewController.cs +1 -1
  24. package/bridge/com.ucp.bridge/Editor/Protocol/MiniJson.cs +1 -1
  25. package/bridge/com.ucp.bridge/Editor/Ui/UiHost.cs +468 -0
  26. package/bridge/com.ucp.bridge/Editor/Ui/UiHost.cs.meta +11 -0
  27. package/bridge/com.ucp.bridge/Editor/Ui/UiLintService.cs +554 -0
  28. package/bridge/com.ucp.bridge/Editor/Ui/UiLintService.cs.meta +11 -0
  29. package/bridge/com.ucp.bridge/Editor/Ui/UiOperationManager.cs +870 -0
  30. package/bridge/com.ucp.bridge/Editor/Ui/UiOperationManager.cs.meta +11 -0
  31. package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioApplier.cs +496 -0
  32. package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioApplier.cs.meta +11 -0
  33. package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioLoader.cs +854 -0
  34. package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioLoader.cs.meta +11 -0
  35. package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioModels.cs +374 -0
  36. package/bridge/com.ucp.bridge/Editor/Ui/UiScenarioModels.cs.meta +11 -0
  37. package/bridge/com.ucp.bridge/Editor/Ui/UiVisualTreeInspector.cs +690 -0
  38. package/bridge/com.ucp.bridge/Editor/Ui/UiVisualTreeInspector.cs.meta +11 -0
  39. package/bridge/com.ucp.bridge/{Runtime.meta → Editor/Ui.meta} +1 -1
  40. package/bridge/com.ucp.bridge/Tests/Editor/ControllerSmokeTests.cs +79 -4
  41. package/bridge/com.ucp.bridge/Tests/Editor/SpatialVisualControllerTests.cs +2 -2
  42. package/bridge/com.ucp.bridge/Tests/Editor/UiControllerTests.cs +547 -0
  43. package/bridge/com.ucp.bridge/Tests/Editor/UiControllerTests.cs.meta +11 -0
  44. package/bridge/com.ucp.bridge/Tests/Editor/UiLintServiceTests.cs +253 -0
  45. package/bridge/com.ucp.bridge/Tests/Editor/UiLintServiceTests.cs.meta +11 -0
  46. package/bridge/com.ucp.bridge/Tests/Editor/UiScenarioTests.cs +587 -0
  47. package/bridge/com.ucp.bridge/Tests/Editor/UiScenarioTests.cs.meta +11 -0
  48. package/bridge/com.ucp.bridge/package.json +1 -1
  49. package/package.json +1 -1
  50. package/bridge/com.ucp.bridge/Runtime/UCP.Bridge.Runtime.asmdef +0 -14
  51. package/bridge/com.ucp.bridge/Runtime/UCP.Bridge.Runtime.asmdef.meta +0 -7
@@ -1,5 +1,5 @@
1
1
  fileFormatVersion: 2
2
- guid: ed1329cd64b53ba45b1a53c86007094a
2
+ guid: 72ee32817b4f45abac53f471c69e899e
3
3
  folderAsset: yes
4
4
  DefaultImporter:
5
5
  externalObjects: {}
@@ -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.GetInstanceID();
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.ToInt32(createResult["instanceId"]);
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.ToInt32(((Dictionary<string, object>)create.result)["instanceId"]);
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.ToInt32(((Dictionary<string, object>)instantiate.result)["instanceId"]);
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.ToInt32(res["instanceId"]);
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.ToInt32(res["instanceId"]), Is.EqualTo(ground.GetId()));
182
+ Assert.That(Convert.ToInt64(res["instanceId"]), Is.EqualTo(ground.GetId()));
183
183
  }
184
184
 
185
185
  [Test]