81 lines
2.3 KiB
C#
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");
|
||
|
}
|
||
|
}
|
||
|
}
|