No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CreateBootstrapSceneTask.cs 3.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System;
  2. using System.Collections;
  3. using System.Linq;
  4. using UnityEditor.SceneManagement;
  5. using UnityEngine;
  6. using UnityEngine.TestTools;
  7. using UnityEngine.TestTools.TestRunner;
  8. using Object = UnityEngine.Object;
  9. namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks
  10. {
  11. internal class CreateBootstrapSceneTask : TestTaskBase
  12. {
  13. private bool m_includeTestController;
  14. private bool m_saveScene;
  15. private NewSceneSetup m_SceneSetup;
  16. public CreateBootstrapSceneTask(bool mIncludeTestController, bool saveScene, NewSceneSetup sceneSetup)
  17. {
  18. m_includeTestController = mIncludeTestController;
  19. m_saveScene = saveScene;
  20. m_SceneSetup = sceneSetup;
  21. }
  22. public override IEnumerator Execute(TestJobData testJobData)
  23. {
  24. if (m_saveScene)
  25. {
  26. testJobData.InitTestScenePath = "Assets/InitTestScene" + Guid.NewGuid() + ".unity";
  27. }
  28. testJobData.InitTestScene = EditorSceneManager.NewScene(m_SceneSetup, NewSceneMode.Single);
  29. /* This code from 2.0 is likely not needed and can be removed once backporting has finished.
  30. while (PlaymodeTestsController.IsControllerOnScene())
  31. {
  32. var gameObject = PlaymodeTestsController.GetController().gameObject;
  33. Object.DestroyImmediate(gameObject);
  34. }
  35. */
  36. var settings = PlaymodeTestsControllerSettings.CreateRunnerSettings(testJobData.executionSettings.filters
  37. .Select(filter => filter.ToRuntimeTestRunnerFilter(testJobData.executionSettings.runSynchronously)).ToArray(), testJobData.executionSettings.orderedTestNames,
  38. testJobData.executionSettings.randomOrderSeed, testJobData.executionSettings.featureFlags, testJobData.executionSettings.retryCount, testJobData.executionSettings.repeatCount, IsAutomated());
  39. if (m_includeTestController)
  40. {
  41. var go = new GameObject(PlaymodeTestsController.kPlaymodeTestControllerName);
  42. var editorLoadedTestAssemblyProvider =
  43. new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(),
  44. new EditorAssembliesProxy());
  45. var runner = go.AddComponent<PlaymodeTestsController>();
  46. runner.AssembliesWithTests = editorLoadedTestAssemblyProvider
  47. .GetAssembliesGroupedByType(TestPlatform.PlayMode).Select(x => x.Assembly.GetName().Name)
  48. .ToList();
  49. runner.settings = settings;
  50. testJobData.PlaymodeTestsController = runner;
  51. }
  52. testJobData.PlayModeSettings = settings;
  53. if (m_saveScene)
  54. {
  55. EditorSceneManager.MarkSceneDirty(testJobData.InitTestScene);
  56. AssetDatabase.SaveAssets();
  57. EditorSceneManager.SaveScene(testJobData.InitTestScene, testJobData.InitTestScenePath, false);
  58. }
  59. yield break;
  60. }
  61. }
  62. }