public void Teardown()
 {
     BuildPipelineExtensions.CancelBuildAsync();
     AssetDatabase.DeleteAsset(k_TestRootFolder);
 }
        public IEnumerator CanBuildMultipleBuildsWithActiveTargetSwitch()
        {
            m_BuildPipeline = BuildPipeline.CreateAsset(k_TestBuildBuildpipelineAssetPath,
                                                        (p) =>
            {
                p.BuildSteps.Add(new TestBuildStepSuccess());
            });

            m_SettingsWindows32 = BuildSettings.CreateAsset(k_TestBuildSettings32AssetPath, (bs) =>
            {
                bs.SetComponent(new ClassicBuildProfile()
                {
                    Target   = Standalone32Target,
                    Pipeline = m_BuildPipeline
                });
            });

            m_SettingsWindows64 = BuildSettings.CreateAsset(k_TestBuildSettings64AssetPath, (bs) =>
            {
                bs.SetComponent(new ClassicBuildProfile()
                {
                    Target   = Standalone64Target,
                    Pipeline = m_BuildPipeline
                });
            });

            m_Container           = ResultContainer.CreateInstance <ResultContainer>();
            m_Container.Results   = null;
            m_Container.Completed = false;
            AssetDatabase.CreateAsset(m_Container, k_TestsContainer);
            AssetDatabase.ImportAsset(k_TestsContainer, ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate);
            m_Container = AssetDatabase.LoadAssetAtPath <ResultContainer>(k_TestsContainer);

            m_OriginalBuildTarget      = EditorUserBuildSettings.activeBuildTarget;
            m_OriginalBuildTargetGroup = UnityEditor.BuildPipeline.GetBuildTargetGroup(m_OriginalBuildTarget);

            // Leave this for testing purposes
            //if (EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, UnityEditor.BuildTarget.Android))
            //    yield return new RecompileScripts(false);

            var serttingsToBuilds = new[] { m_SettingsWindows32, m_SettingsWindows64 };

            BuildPipelineExtensions.BuildAsync(new BuildBatchDescription()
            {
                BuildItems = serttingsToBuilds.Select(m => new BuildBatchItem()
                {
                    BuildSettings = m
                }).ToArray(),
                OnBuildCompleted = m_Container.SetCompleted
            });

            while (m_Container.Completed == false)
            {
                yield return(new RecompileScripts(false));
            }

            Assert.IsTrue(EditorUserBuildSettings.activeBuildTarget == m_OriginalBuildTarget);
            Assert.IsTrue(m_Container.Results != null);
            Assert.IsTrue(m_Container.Results.Contains(m_SettingsWindows32.name + ", Success"));
            Assert.IsTrue(m_Container.Results.Contains(m_SettingsWindows64.name + ", Success"));
        }