Rasagar/Library/PackageCache/com.unity.test-framework/UnityEditor.TestRunner/TestRun/Tasks/TestTaskBase.cs
2024-08-26 23:07:20 +03:00

81 lines
2.3 KiB
C#

using System;
using System.Collections;
using UnityEngine;
using System.Linq;
namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks
{
internal abstract class TestTaskBase
{
public ErrorRunMode RunOnError = ErrorRunMode.DoNotRunOnError;
public bool RerunAfterResume;
public bool RerunAfterEnteredEditMode;
public bool SupportsResumingEnumerator;
public bool RunOnCancel;
public bool CanRunInstantly = true;
public abstract IEnumerator Execute(TestJobData testJobData);
public enum ErrorRunMode
{
DoNotRunOnError,
RunOnlyOnError,
RunAlways
}
public virtual string GetName()
{
return GetType().Name;
}
public string GetTitle()
{
var name = GetName();
if (name.EndsWith("Task")) // Trim away the Task part of the title in the end.
{
name = name.Substring(0, name.Length - 4);
}
var title = string.Empty;
for (var i = 0; i < name.Length; i++)
{
var nameChar = name[i];
if (i == 0 || (nameChar >= 'a' && nameChar <= 'z'))
{
title += nameChar;
}
else
{
title += " " + nameChar;
}
}
return title;
}
public bool ShouldExecute(TaskInfo taskInfo)
{
switch (taskInfo.taskMode)
{
case TaskMode.Error:
return RunOnError == ErrorRunMode.RunAlways || RunOnError == ErrorRunMode.RunOnlyOnError;
case TaskMode.Resume:
return RerunAfterResume;
case TaskMode.EnteredEditMode:
return RerunAfterEnteredEditMode;
case TaskMode.Canceled:
return RunOnCancel;
default:
return RunOnError != ErrorRunMode.RunOnlyOnError;
}
}
protected static bool IsAutomated()
{
var commandLineArgs = Environment.GetCommandLineArgs();
return commandLineArgs.Contains("-automated");
}
}
}