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);
        }
Example #2
0
        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);
            }
        }