public static void BuildAndRunInPlayer(PlatformRunnerConfiguration configuration)
{
NetworkResultsReceiver.StopReceiver();
var settings = new PlayerSettingConfigurator(false);
if (configuration.sendResultsOverNetwork)
{
try
{
var l = new TcpListener(IPAddress.Any, configuration.port);
l.Start();
configuration.port = ((IPEndPoint)l.Server.LocalEndPoint).Port;
l.Stop();
}
catch (SocketException e)
{
Debug.LogException(e);
if (InternalEditorUtility.inBatchMode)
EditorApplication.Exit(Batch.returnCodeRunError);
}
}
if (InternalEditorUtility.inBatchMode)
settings.AddConfigurationFile(TestRunnerConfigurator.batchRunFileMarker, "");
if (configuration.sendResultsOverNetwork)
settings.AddConfigurationFile(TestRunnerConfigurator.integrationTestsNetwork,
string.Join("\n", configuration.GetConnectionIPs()));
settings.AddConfigurationFile (TestRunnerConfigurator.testScenesToRun, string.Join ("\n", configuration.testScenes.ToArray()));
settings.ChangeSettingsForIntegrationTests();
AssetDatabase.Refresh();
var result = BuildPipeline.BuildPlayer(configuration.testScenes.Concat(configuration.buildScenes).ToArray(),
configuration.GetTempPath(),
configuration.buildTarget,
BuildOptions.AutoRunPlayer | BuildOptions.Development);
settings.RevertSettingsChanges();
settings.RemoveAllConfigurationFiles();
AssetDatabase.Refresh();
if (!string.IsNullOrEmpty(result))
{
if (InternalEditorUtility.inBatchMode)
EditorApplication.Exit(Batch.returnCodeRunError);
return;
}
if (configuration.sendResultsOverNetwork)
NetworkResultsReceiver.StartReceiver(configuration);
else if (InternalEditorUtility.inBatchMode)
EditorApplication.Exit(Batch.returnCodeTestsOk);
}