Esempio n. 1
0
        public void DisabledBuildSteps_DoesNotRun()
        {
            var pipeline = BuildPipeline.CreateInstance((p) =>
            {
                p.BuildSteps.Add(new TestBuildStep1());
                p.BuildSteps.Add(new TestBuildStep2(enabled: false));
                p.BuildSteps.Add(new TestBuildStep3());
            });
            var settings = BuildSettings.CreateInstance();
            var result   = pipeline.Build(settings, mutator: (context) =>
            {
                context.SetValue(new TestBuildStep1.Data {
                    Value = nameof(TestBuildStep1)
                });
                context.SetValue(new TestBuildStep2.Data {
                    Value = nameof(TestBuildStep2)
                });
                context.SetValue(new TestBuildStep3.Data {
                    Value = nameof(TestBuildStep3)
                });
            });

            Assert.That(result.Succeeded, Is.True);
            Assert.That(result.BuildStepsResults.Any(r => r.Failed), Is.False);

            var artifacts = BuildArtifacts.GetBuildArtifact <TestBuildArtifacts>(settings);

            Assert.That(artifacts, Is.Not.Null);
            Assert.That(artifacts.BuildStepsRan, Is.EqualTo(new List <string> {
                nameof(TestBuildStep1), nameof(TestBuildStep3)
            }));
            Assert.That(artifacts.CleanupStepsRan, Is.EqualTo(new List <string> {
                nameof(TestBuildStep3), nameof(TestBuildStep1)
            }));
        }
Esempio n. 2
0
        public void WhenNestedBuildPipelineFails_ParentBuildPipelineFails()
        {
            var nestedPipeline = BuildPipeline.CreateInstance((p) =>
            {
                p.BuildSteps.Add(new TestBuildStep1());
                p.BuildSteps.Add(new TestBuildStep2());
                p.BuildSteps.Add(new TestBuildStep3());
            });
            var pipeline = BuildPipeline.CreateInstance(p => p.BuildSteps.Add(nestedPipeline));
            var settings = BuildSettings.CreateInstance();
            var result   = pipeline.Build(settings, mutator: (context) =>
            {
                context.SetValue(new TestBuildStep1.Data {
                    Value = nameof(TestBuildStep1)
                });
                // Here we make TestStep2 fails by not providing its data
                context.SetValue(new TestBuildStep3.Data {
                    Value = nameof(TestBuildStep3)
                });
            });

            Assert.That(result.Succeeded, Is.False);
            Assert.That(result.BuildStepsResults.Any(r => r.Failed), Is.True);

            var artifacts = BuildArtifacts.GetBuildArtifact <TestBuildArtifacts>(settings);

            Assert.That(artifacts, Is.Not.Null);
            Assert.That(artifacts.BuildStepsRan, Is.EqualTo(new List <string> {
                nameof(TestBuildStep1), nameof(TestBuildStep2)
            }));
            Assert.That(artifacts.CleanupStepsRan, Is.EqualTo(new List <string> {
                nameof(TestBuildStep2), nameof(TestBuildStep1)
            }));
        }
        public void ConvertGameObject_WithFilteredBuildSettings_ConversionDoesntRun()
        {
            var scene = SceneManager.GetActiveScene();
            var go    = CreateGameObject("Test Conversion");

            go.transform.localPosition = new Vector3(1, 2, 3);

            var buildSettings = BuildSettings.CreateInstance((bs) =>
            {
                bs.hideFlags = HideFlags.HideAndDontSave;
                bs.SetComponent(new ConversionSystemFilterSettings("Unity.Transforms.Hybrid"));
            });

            var conversionSettings = new GameObjectConversionSettings
            {
                DestinationWorld = World,
                BuildSettings    = buildSettings
            };

            GameObjectConversionUtility.ConvertScene(scene, conversionSettings);

            // We still expect to find an Entity, just with nothing on it, because
            // entities are eagerly created for every GameObject even if no components
            // get converted on them.
            EntitiesAssert.ContainsOnly(m_Manager, EntityMatch.Exact());
        }
Esempio n. 4
0
        internal static BuildPipelineResult DoBuild(NPath asmdef, BuildTarget buildTarget, bool runBee = true, Action <BuildContext> onBuildCompleted = null)
        {
            var relativePath = asmdef.RelativeTo(".");
            var name         = asmdef.FileNameWithoutExtension;
            var outputDir    = new DirectoryInfo("./Library/DotsRuntimeBuild");
            var stagingDir   = outputDir.Combine(name);
            var dataDir      = stagingDir.Combine("Data");

            var profile = new DotsRuntimeBuildProfile
            {
                RootAssembly  = AssetDatabase.LoadAssetAtPath <AssemblyDefinitionAsset>(relativePath.ToString()),
                Target        = buildTarget,
                Configuration = BuildConfiguration.Debug
            };

            var buildSettings = BuildSettings.CreateInstance((bs) =>
            {
                bs.hideFlags = HideFlags.HideAndDontSave;
                bs.SetComponent(profile);
                bs.SetComponent(new OutputBuildDirectory {
                    OutputDirectory = $"Library/DotsRuntimeBuild/build/Mole3D/{profile.BeeTargetName}"
                });
            });

            var convSettings = new ConversionSystemFilterSettings("Unity.Rendering.Hybrid");

            buildSettings.SetComponent(convSettings);

            var sceneList     = new SceneList();
            var rootScenePath = ConversionUtils.GetScenePathForSceneWithName(name);
            var scene         = AssetDatabase.LoadAssetAtPath <SceneAsset>(rootScenePath);

            sceneList.Scenes.Add(GlobalObjectId.GetGlobalObjectIdSlow(scene));
            buildSettings.SetComponent(sceneList);

            var buildPipeline = BuildPipeline.CreateInstance((pipeline) =>
            {
                pipeline.hideFlags = HideFlags.HideAndDontSave;
                pipeline.BuildSteps.Add(new BuildStepExportEntities());
                pipeline.BuildSteps.Add(new BuildStepExportConfiguration());
                pipeline.BuildSteps.Add(new BuildStepGenerateBeeFiles());
                if (runBee)
                {
                    pipeline.BuildSteps.Add(new BuildStepRunBee());
                }
                ;
            });

            // Run build pipeline
            using (var progress = new BuildProgress($"Build {profile.Target.DisplayName} {profile.Configuration}", "Building..."))
            {
                return(buildPipeline.Build(buildSettings, progress));
            }
        }
Esempio n. 5
0
 public TestData(params Type[] components)
 {
     BuildStep     = new TestBuildStep();
     BuildPipeline = BuildPipeline.CreateInstance(p => p.BuildSteps.Add(BuildStep));
     BuildSettings = BuildSettings.CreateInstance((s) =>
     {
         s.SetComponent(new PipelineComponent {
             Pipeline = BuildPipeline
         });
         foreach (var component in components)
         {
             s.SetComponent(component, TypeConstruction.Construct <IBuildSettingsComponent>(component));
         }
     });
     BuildContext = new BuildContext(BuildPipeline, BuildSettings, null);
 }
 public void OneTimeSetup()
 {
     m_BuildPipeline = BuildPipeline.CreateInstance(pipeline => pipeline.name = "TestPipeline");
     m_BuildSettings = BuildSettings.CreateInstance(settings => settings.name = "TestSettings");
 }