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