Esempio n. 1
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var taskInfo = testJobData.taskInfoStack.Peek();

            if (taskInfo.taskMode == TestJobData.TaskMode.PredictSteps)
            {
                testJobData.taskInfoStack.Pop();
                yield break;
            }

            var previousStage = testJobData.currentStage;

            testJobData.currentStage = new TestJobData.StageInfo()
            {
                index             = previousStage != null ? previousStage.index + 1 : 0,
                title             = m_Title,
                totalStepsInStage = 1
            };

            testJobData.currentStep = new TestJobData.StepInfo()
            {
                index = 1,
                title = "Calculating stages"
            };

            testJobData.taskInfoStack.Push(new TestJobData.TaskInfo()
            {
                index    = taskInfo.index + 1,
                pc       = 0,
                taskMode = TestJobData.TaskMode.PredictSteps
            });
        }
 public BuildConfigurationPlayerLauncher(PlaymodeTestsControllerSettings settings, TestJobData jobData)
 {
     m_Settings                   = settings;
     m_JobData                    = jobData;
     m_TargetPlatform             = ExecutionSettings.targetPlatform ?? EditorUserBuildSettings.activeBuildTarget;
     m_BuildConfigurationPlatform = m_TargetPlatform.GetPlatform() ?? throw new Exception($"Cannot resolve platform for {m_TargetPlatform}");
 }
Esempio n. 3
0
 public override IEnumerator Execute(TestJobData testJobData)
 {
     testJobData.RunStartedEvent   = new RunStartedEvent();
     testJobData.TestStartedEvent  = new TestStartedEvent();
     testJobData.TestFinishedEvent = new TestFinishedEvent();
     testJobData.RunFinishedEvent  = new RunFinishedEvent();
     yield break;
 }
 public override IEnumerator Execute(TestJobData testJobData)
 {
     testJobData.RunStartedEvent.AddListener(ApiCallbacksDelegator.RunStarted);
     testJobData.TestStartedEvent.AddListener(ApiCallbacksDelegator.TestStarted);
     testJobData.TestFinishedEvent.AddListener(ApiCallbacksDelegator.TestFinished);
     testJobData.RunFinishedEvent.AddListener(ApiCallbacksDelegator.RunFinished);
     yield break;
 }
 public override IEnumerator Execute(TestJobData testJobData)
 {
     m_Listener = GetListener();
     testJobData.RunStartedEvent.AddListener(v => m_Listener.RunStarted(v));
     testJobData.TestStartedEvent.AddListener(v => m_Listener.TestStarted(v));
     testJobData.TestFinishedEvent.AddListener(v => m_Listener.TestFinished(v));
     testJobData.RunFinishedEvent.AddListener(v => m_Listener.RunFinished(v));
     yield break;
 }
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var executionSettings = testJobData.executionSettings;
            var settings          = PlaymodeTestsControllerSettings.CreateRunnerSettings(executionSettings.filters.Select(filter => filter.ToRuntimeTestRunnerFilter(executionSettings.runSynchronously)).ToArray());
            var launcher          = new PlayerLauncher(settings, executionSettings.targetPlatform, executionSettings.overloadTestRunSettings, executionSettings.playerHeartbeatTimeout, executionSettings.playerSavePath);

            launcher.Run();
            yield return(null);
        }
Esempio n. 7
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var cancelled = !SaveCurrentModifiedScenesIfUserWantsTo();

            if (cancelled)
            {
                throw new TestRunCanceledException();
            }

            yield break;
        }
        public override IEnumerator Execute(TestJobData testJobData)
        {
            if (StateChangeCallbackRegistered)
            {
                UnsubscribeLogMessageReceivedThreaded(LogReceived);
            }

            SubscribeLogMessageReceivedThreaded(LogReceived);
            StateChangeCallbackRegistered = true;
            yield break;
        }
Esempio n. 9
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var testLauncher = new EditModeLauncher(testJobData.executionSettings.filters, TestPlatform.EditMode, testJobData.executionSettings.runSynchronously);

            testLauncher.Run();

            while (EditModeLauncher.IsRunning)
            {
                yield return(null);
            }
        }
Esempio n. 10
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var currentFiles  = GetAllFilesInAssetsDirectory();
            var existingFiles = testJobData.existingFiles;

            if (currentFiles.Length != existingFiles.Length)
            {
                LogWarningForFilesIfAny(currentFiles.Where(file => !testJobData.existingFiles.Contains(file)).ToArray());
            }

            yield return(null);
        }
Esempio n. 11
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var testLauncher = new EditModeLauncher(testJobData.executionSettings.filters, TestPlatform.EditMode, testJobData.executionSettings.runSynchronously);

            testJobData.editModeRunner = testLauncher.m_EditModeRunner;
            testLauncher.Run();

            while (testJobData.editModeRunner != null && !testJobData.editModeRunner.RunFinished)
            {
                yield return(null);
            }
        }
Esempio n. 12
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var settings = PlaymodeTestsControllerSettings.CreateRunnerSettings(testJobData.executionSettings.filters.Select(filter => filter.ToTestRunnerFilter()).ToArray());
            var launcher = new PlaymodeLauncher(settings);

            launcher.Run();

            while (PlaymodeLauncher.IsRunning)
            {
                yield return(null);
            }
        }
Esempio n. 13
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            if (GetSceneCount() == 1 && string.IsNullOrEmpty(GetSceneAt(0).path))
            {
                NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);
                yield break;
            }

            var scene = NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive);

            SetActiveScene(scene);
        }
Esempio n. 14
0
            public override IEnumerator Execute(TestJobData testJobData)
            {
                var settings = PlaymodeTestsControllerSettings.CreateRunnerSettings(testJobData.executionSettings.filters.Select(filter => filter.ToTestRunnerFilter()).ToArray());
                var launcher = new BuildConfigurationPlayerLauncher(settings, testJobData);

                launcher.Run();
                yield return(null);

                while (!RemoteTestRunController.instance.RunHasFinished)
                {
                    yield return(null);
                }
            }
        public override IEnumerator Execute(TestJobData testJobData)
        {
            if (testJobData.testTree == null)
            {
                throw new RequiredTestRunDataMissingException(nameof(testJobData.testTree));
            }

            var allTests =
                GetTestsExpectedToRun(testJobData.testTree, testJobData.executionSettings.BuildNUnitFilter());

            testJobData.testProgress = new TestProgress(allTests.ToArray());
            yield break;
        }
Esempio n. 16
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            if (testJobData.testTree == null)
            {
                throw new Exception($"Test tree is not available for {GetType().Name}.");
            }

            var enumerator = ExecuteMethods(testJobData.testTree, testJobData.executionSettings.BuildNUnitFilter());

            while (enumerator.MoveNext())
            {
                yield return(null);
            }
        }
Esempio n. 17
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var sceneSetup = testJobData.SceneSetup;

            if (sceneSetup != null && sceneSetup.Length > 0)
            {
                RestoreSceneManagerSetup(sceneSetup);
            }
            else
            {
                NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);
            }

            yield break;
        }
Esempio n. 18
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            for (var i = 0; i < GetSceneCount(); i++)
            {
                var scene        = GetSceneAt(i);
                var isSceneSaved = !string.IsNullOrEmpty(scene.path);
                var isSceneDirty = scene.isDirty;
                if (isSceneSaved && isSceneDirty)
                {
                    ReloadScene(scene);
                }
            }

            yield break;
        }
        public BuildConfigurationPlayerLauncher(PlaymodeTestsControllerSettings settings, TestJobData jobData)
        {
            m_Settings       = settings;
            m_JobData        = jobData;
            m_TargetPlatform = ExecutionSettings.targetPlatform ?? EditorUserBuildSettings.activeBuildTarget;

            switch (m_TargetPlatform)
            {
            case BuildTarget.StandaloneWindows64:
                m_BuildConfigurationPlatform = new WindowsPlatform();
                break;

            case BuildTarget.StandaloneOSX:
                m_BuildConfigurationPlatform = new MacOSXPlatform();
                break;

            case BuildTarget.StandaloneLinux64:
                m_BuildConfigurationPlatform = new LinuxPlatform();
                break;

            case BuildTarget.Android:
                m_BuildConfigurationPlatform = new AndroidPlatform();
                break;

            case BuildTarget.iOS:
                m_BuildConfigurationPlatform = new IosPlatform();
                break;

            case BuildTarget.XboxOne:
                m_BuildConfigurationPlatform = new XboxOnePlatform();
                break;

            case BuildTarget.PS4:
                m_BuildConfigurationPlatform = new PS4Platform();
                break;

            case BuildTarget.WSAPlayer:
                m_BuildConfigurationPlatform = new UniversalWindowsPlatform();
                break;

            default:
                throw new Exception($"Cannot resolve platform for {m_TargetPlatform}");
            }
        }
Esempio n. 20
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            if (testJobData.taskInfoStack.Peek().taskMode == TestJobData.TaskMode.PredictSteps)
            {
                testJobData.currentStage.totalStepsInStage += GetNumSteps(testJobData);
                yield break;
            }

            testJobData.currentStep.indexBeforeCurrentTask = testJobData.currentStep.index;

            var editModeRunner = ScriptableObject.CreateInstance <EditModeRunner>();

            editModeRunner.UnityTestAssemblyRunnerFactory = new UnityTestAssemblyRunnerFactory();
            editModeRunner.Init(testJobData.executionSettings.filters, TestPlatform.EditMode, testJobData.executionSettings.runSynchronously, testJobData.testTree,
                                testJobData.RunStartedEvent, testJobData.TestStartedEvent, testJobData.TestFinishedEvent, testJobData.RunFinishedEvent);

            var callback = editModeRunner.AddEventHandler <EditModeRunnerCallback>();

            callback.runner = editModeRunner;

            editModeRunner.Run();

            testJobData.editModeRunner = editModeRunner;

            while (testJobData.editModeRunner != null && !testJobData.editModeRunner.RunFinished)
            {
                var runner = testJobData.editModeRunner;
                if (runner.m_ResumeAfterDomainReload && !m_WaitForDomainReload)
                {
                    if (testJobData.testTree == null)
                    {
                        throw new Exception("Test tree is required to resume test execution.");
                    }
                    runner.Resume(testJobData.testTree, testJobData.RunStartedEvent, testJobData.TestStartedEvent, testJobData.TestFinishedEvent, testJobData.RunFinishedEvent);
                }
                runner.TestConsumer();
                m_WaitForDomainReload = runner.m_ResumeAfterDomainReload;
                if (!testJobData.executionSettings.runSynchronously)
                {
                    UpdateStepCount(testJobData);
                    yield return(null);
                }
            }
        }
        public override IEnumerator Execute(TestJobData testJobData)
        {
            var sceneCount = GetSceneCount();

            if (sceneCount <= 1)
            {
                yield break;
            }

            for (int i = 0; i < sceneCount; i++)
            {
                var scene = GetSceneAt(i);
                if (string.IsNullOrEmpty(scene.path))
                {
                    CloseScene(scene, true);
                    yield break;
                }
            }
        }
Esempio n. 22
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            if (testJobData.undoGroup < 0)
            {
                yield break;
            }

            DisplayProgressBar("Undo", "Reverting changes to the scene", 0);

            var undoStartTime = TimeNow();

            RevertAllDownToGroup(testJobData.undoGroup);

            var timeDelta = TimeNow() - undoStartTime;

            if (timeDelta.TotalMilliseconds >= warningThreshold)
            {
                LogWarning($"Undo after editor test run took {timeDelta.Seconds} second{(timeDelta.Seconds == 1 ? "" : "s")}.");
            }

            ClearProgressBar();
        }
Esempio n. 23
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            if (testJobData.testTree != null)
            {
                yield break;
            }

            var assembliesEnumerator = m_testAssemblyProvider.GetAssembliesGroupedByTypeAsync(m_TestPlatform);

            while (assembliesEnumerator.MoveNext())
            {
                yield return(null);
            }

            if (assembliesEnumerator.Current == null)
            {
                throw new Exception("Assemblies not retrieved.");
            }

            var assemblies    = assembliesEnumerator.Current.Where(pair => m_TestPlatform.IsFlagIncluded(pair.Key)).SelectMany(pair => pair.Value).Select(x => x.Assembly).ToArray();
            var buildSettings = UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(m_TestPlatform);
            var enumerator    = m_testAssemblyBuilder.BuildAsync(assemblies, Enumerable.Repeat(m_TestPlatform, assemblies.Length).ToArray(), buildSettings);

            while (enumerator.MoveNext())
            {
                yield return(null);
            }

            var testList = enumerator.Current;

            if (testList == null)
            {
                throw new Exception("Test list not retrieved.");
            }

            testList.ParseForNameDuplicates();
            testJobData.testTree = testList;
            m_CallbacksDelegator.TestTreeRebuild(testList);
        }
Esempio n. 24
0
        public override IEnumerator Execute(TestJobData testJobData)
        {
            if (testJobData.testProgress == null)
            {
                throw new RequiredTestRunDataMissingException(nameof(testJobData.testProgress));
            }

            if (testJobData.TestStartedEvent == null)
            {
                throw new RequiredTestRunDataMissingException(nameof(testJobData.TestStartedEvent));
            }

            if (testJobData.TestFinishedEvent == null)
            {
                throw new RequiredTestRunDataMissingException(nameof(testJobData.TestFinishedEvent));
            }

            m_TestProgress = testJobData.testProgress;
            testJobData.TestStartedEvent.AddListener(TestStarted);
            testJobData.TestFinishedEvent.AddListener(TestFinished);

            yield break;
        }
Esempio n. 25
0
 public override IEnumerator Execute(TestJobData testJobData)
 {
     testJobData.existingFiles = GetAllFilesInAssetsDirectory();
     yield return(null);
 }
Esempio n. 26
0
 public override IEnumerator Execute(TestJobData testJobData)
 {
     testJobData.SceneSetup = GetSceneManagerSetup();
     yield break;
 }
Esempio n. 27
0
 public override IEnumerator Execute(TestJobData testJobData)
 {
     ClearProgressBar();
     yield break;
 }
Esempio n. 28
0
 private void UpdateStepCount(TestJobData testJobData)
 {
     testJobData.currentStep.index =
         testJobData.currentStep.indexBeforeCurrentTask + GetCurrentStepNumber(testJobData);
     testJobData.currentStep.title = GetCurrentStepTitle(testJobData);
 }
Esempio n. 29
0
 private string GetCurrentStepTitle(TestJobData testJobData)
 {
     return(testJobData.testProgress.CurrentTest);
 }
Esempio n. 30
0
 public abstract IEnumerator Execute(TestJobData testJobData);