58 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using UnityEditor;
 | |
| using UnityEditor.TestRunner.CommandLineParser;
 | |
| using UnityEditor.TestTools.TestRunner.Api;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace Unity.PerformanceTesting.Editor
 | |
| {
 | |
|     [InitializeOnLoad]
 | |
|     class TestRunnerInitializer
 | |
|     {
 | |
|         static TestRunnerInitializer()
 | |
|         {
 | |
|             var args = GetCmdLineArguments();
 | |
|             var resultsHandler = args.IsCmdLineRun && !string.IsNullOrEmpty(args.PerfTestResults) 
 | |
|                 ? CreateCmdLineResultsHandler(args) 
 | |
|                 : ScriptableObject.CreateInstance<PerformanceTestRunSaver>();
 | |
| 
 | |
|             var api = ScriptableObject.CreateInstance<TestRunnerApi>();
 | |
|             api.RegisterCallbacks(resultsHandler);
 | |
|         }
 | |
| 
 | |
|         static ICallbacks CreateCmdLineResultsHandler(CmdLineArguments cmdLineArguments)
 | |
|         {
 | |
|             var callbacks = ScriptableObject.CreateInstance<CmdLineResultsSavingCallbacks>();
 | |
|             callbacks.SetResultsLocation(cmdLineArguments.PerfTestResults);
 | |
|             return callbacks;
 | |
|         }
 | |
| 
 | |
|         static CmdLineArguments GetCmdLineArguments()
 | |
|         {
 | |
|             var isCmdLineTestRun = false;
 | |
|             string resultFilePath = null;
 | |
|             
 | |
|             var optionSet = new CommandLineOptionSet(
 | |
|                 new CommandLineOption("runTests", () => { isCmdLineTestRun = true; }),
 | |
|                 new CommandLineOption("runEditorTests", () => { isCmdLineTestRun = true; }),
 | |
|                 new CommandLineOption("perfTestResults", filePath => { resultFilePath = filePath; })
 | |
|             );
 | |
|             optionSet.Parse(Environment.GetCommandLineArgs());
 | |
| 
 | |
|             return new CmdLineArguments(isCmdLineTestRun, resultFilePath);
 | |
|         }
 | |
| 
 | |
|         class CmdLineArguments
 | |
|         {
 | |
|             public bool IsCmdLineRun;
 | |
|             public string PerfTestResults;
 | |
| 
 | |
|             public CmdLineArguments(bool isCmdLineRun, string perfTestResults)
 | |
|             {
 | |
|                 IsCmdLineRun = isCmdLineRun;
 | |
|                 PerfTestResults = perfTestResults;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |