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) })); }
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()); }
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)); } }
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"); }