VR4Medical/ICI/Library/PackageCache/com.unity.test-framework.performance@92d1d09a72ed/Editor/CmdLineResultsSavingCallbacks.cs
2025-07-29 13:45:50 +03:00

62 lines
1.9 KiB
C#

using System;
using System.IO;
using UnityEditor.TestTools.TestRunner.Api;
using UnityEngine;
namespace Unity.PerformanceTesting.Editor
{
[Serializable]
class CmdLineResultsSavingCallbacks : ScriptableObject, ICallbacks
{
[SerializeField]
string resultsLocation;
void ICallbacks.RunStarted(ITestAdaptor testsToRun)
{
PerformanceTest.Active = null;
}
void ICallbacks.RunFinished(ITestResultAdaptor result)
{
PlayerCallbacks.Saved = false;
try
{
var performanceTestRun = TestResultsParser.GetPerformanceTestRunData(result);
if (performanceTestRun == null)
{
return;
}
Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Saving performance results to: {0}", resultsLocation);
var jsonContents = JsonUtility.ToJson(performanceTestRun, true);
CreateDirectoryIfNecessary(resultsLocation);
File.WriteAllText(resultsLocation, jsonContents);
}
catch (Exception e)
{
Debug.LogError("Saving performance results file failed.");
Debug.LogException(e);
}
}
static void CreateDirectoryIfNecessary(string filePath)
{
var directoryPath = Path.GetDirectoryName(filePath);
if (!string.IsNullOrEmpty(directoryPath) && !Directory.Exists(directoryPath))
{
Directory.CreateDirectory(directoryPath);
}
}
void ICallbacks.TestStarted(ITestAdaptor test) { }
void ICallbacks.TestFinished(ITestResultAdaptor result) { }
public void SetResultsLocation(string perfTestResultsPath)
{
resultsLocation = perfTestResultsPath;
}
}
}