public void TargetDependencyChain2() { ProjectDefinition project1 = new ProjectDefinition(FullProjectPath("1.proj")); TargetDefinition target1 = new TargetDefinition("Target1", null, "Target2;Target3", project1.ProjectXmlDocument); TargetDefinition target2 = new TargetDefinition("Target2", null, null, project1.ProjectXmlDocument); TargetDefinition target3 = new TargetDefinition("Target3", null, "Target4", project1.ProjectXmlDocument); TargetDefinition target4 = new TargetDefinition("Target4", null, null, project1.ProjectXmlDocument); TaskDefinition task1 = new TaskDefinition(RequestDefinition.defaultTaskName, null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); TaskDefinition task2 = new TaskDefinition(RequestDefinition.defaultTaskName, null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); TaskDefinition task3 = new TaskDefinition(RequestDefinition.defaultTaskName, null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); TaskDefinition task4 = new TaskDefinition(RequestDefinition.defaultTaskName, null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); RequestDefinition test1 = new RequestDefinition(FullProjectPath("1.proj"), "2.0", new string[1] { "Target1" }, null, 100, null, (IBuildComponentHost)_commonTests.Host); target1.AddTask(task1); target2.AddTask(task2); target3.AddTask(task3); target4.AddTask(task4); project1.AddTarget(target1); project1.AddTarget(target2); project1.AddTarget(target3); project1.AddTarget(target4); test1.ProjectDefinition = project1; test1.SubmitBuildRequest(); task2.WaitForTaskToComplete(); task4.WaitForTaskToComplete(); task3.WaitForTaskToComplete(); task1.WaitForTaskToComplete(); test1.WaitForResults(); test1.ValidateTargetEndResult("Target1", TargetResultCode.Success, null); test1.ValidateNonPrimaryTargetEndResult("Target2", TargetResultCode.Success, null); test1.ValidateNonPrimaryTargetEndResult("Target3", TargetResultCode.Success, null); test1.ValidateNonPrimaryTargetEndResult("Target4", TargetResultCode.Success, null); }
public void OnErrorTargetIsBuilt() { RequestDefinition r1 = new RequestDefinition(FullProjectPath("1.proj"), "2.0", new string[1] { "tar1" }, null, 0, null, (IBuildComponentHost)_commonTests.Host); ProjectDefinition p1 = r1.ProjectDefinition; TargetDefinition tar1 = new TargetDefinition("tar1", p1.ProjectXmlDocument); TargetDefinition tarOnError = new TargetDefinition("error", p1.ProjectXmlDocument); TaskDefinition tas1 = new TaskDefinition("tas1", p1.ProjectXmlDocument, TestUtilities.GetStopWithErrorResult()); tar1.AddTask(tas1); tar1.AddOnError("error", null); p1.AddTarget(tar1); p1.AddTarget(tarOnError); r1.SubmitBuildRequest(); r1.WaitForResults(); r1.ValidateTargetEndResult("tar1", TargetResultCode.Failure, null); r1.ValidateNonPrimaryTargetEndResult("error", TargetResultCode.Success, null); }
/// <summary> /// Constructor allows you to set the filname, toolsversion, targets to build, build properties and execution time. /// Following are the defaults: /// ToolsVersion = "ToolsVersion" /// GlobalProperties = new BuildPropertyGroup() /// ExecutionTime = 0; /// Targets to build = "target1" /// </summary> public RequestDefinition(string fileName, string toolsVersion, string[] targets, PropertyDictionary <ProjectPropertyInstance> properties, int executionTime, RequestDefinition[] childDefinitions, IBuildComponentHost host, bool noTargetsToBuild) { if (noTargetsToBuild || targets == null) { this.targetsToBuild = new string[] { }; } else { this.targetsToBuild = targets; } this.globalProperties = ((properties == null) ? new PropertyDictionary <ProjectPropertyInstance>() : properties); this.toolsVersion = ((toolsVersion == null) ? RequestDefinition.defaultToolsVersion : toolsVersion); this.fileName = fileName; if (childDefinitions != null) { this.childDefinitions = new List <RequestDefinition>(childDefinitions); foreach (RequestDefinition bd in childDefinitions) { this.childDefinitions.Add(bd); } } else { this.childDefinitions = new List <RequestDefinition>(); } this.testProjectCompletedEvent = new AutoResetEvent(false); this.executionTime = executionTime; this.requestEngine = (IBuildRequestEngine)host.GetComponent(BuildComponentType.RequestEngine); this.testDataProvider = (ITestDataProvider)host.GetComponent(BuildComponentType.TestDataProvider); this.resultsCache = (IResultsCache)host.GetComponent(BuildComponentType.ResultsCache); this.testDataProvider.AddDefinition(this); this.projectDefinition = new ProjectDefinition(this.fileName); this.waitForCancel = false; }
public void BuildProjectWith1TargetWhichDependsOn1TargetWhichErrors() { ProjectDefinition project1 = new ProjectDefinition(FullProjectPath("1.proj")); TargetDefinition target1 = new TargetDefinition("Target1", null, "Target2", project1.ProjectXmlDocument); TargetDefinition target2 = new TargetDefinition("Target2", null, project1.ProjectXmlDocument); TaskDefinition task1 = new TaskDefinition(RequestDefinition.defaultTaskName, null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); TaskDefinition task2 = new TaskDefinition(RequestDefinition.defaultTaskName, null, false, project1.ProjectXmlDocument, TestUtilities.GetStopWithErrorResult()); target1.AddTask(task1); target2.AddTask(task2); project1.AddTarget(target1); project1.AddTarget(target2); RequestDefinition test1 = new RequestDefinition(FullProjectPath("1.proj"), "2.0", new string[1] { "Target1" }, null, 100, null, (IBuildComponentHost)_commonTests.Host); test1.ProjectDefinition = project1; test1.SubmitBuildRequest(); task2.WaitForTaskToComplete(); test1.WaitForResults(); test1.ValidateNonPrimaryTargetEndResult("Target2", TargetResultCode.Failure, null); test1.ValidateTargetEndResult("Target1", TargetResultCode.Failure, null); }
/// <summary> /// Constructor allows you to set the filname, toolsversion, targets to build, build properties and execution time. /// Following are the defaults: /// ToolsVersion = "ToolsVersion" /// GlobalProperties = new BuildPropertyGroup() /// ExecutionTime = 0; /// Targets to build = "target1" /// </summary> public RequestDefinition(string fileName, string toolsVersion, string[] targets, PropertyDictionary<ProjectPropertyInstance> properties, int executionTime, RequestDefinition[] childDefinitions, IBuildComponentHost host, bool noTargetsToBuild) { if (noTargetsToBuild || targets == null) { _targetsToBuild = new string[] { }; } else { _targetsToBuild = targets; } _globalProperties = ((properties == null) ? new PropertyDictionary<ProjectPropertyInstance>() : properties); _toolsVersion = ((toolsVersion == null) ? RequestDefinition.defaultToolsVersion : toolsVersion); _fileName = fileName; if (childDefinitions != null) { _childDefinitions = new List<RequestDefinition>(childDefinitions); foreach (RequestDefinition bd in childDefinitions) { _childDefinitions.Add(bd); } } else { _childDefinitions = new List<RequestDefinition>(); } _testProjectCompletedEvent = new AutoResetEvent(false); _executionTime = executionTime; _requestEngine = (IBuildRequestEngine)host.GetComponent(BuildComponentType.RequestEngine); _testDataProvider = (ITestDataProvider)host.GetComponent(BuildComponentType.TestDataProvider); _resultsCache = (IResultsCache)host.GetComponent(BuildComponentType.ResultsCache); _testDataProvider.AddDefinition(this); _projectDefinition = new ProjectDefinition(_fileName); _waitForCancel = false; }
public void TasksContinueToExecuteAfterContinueOnError() { ProjectDefinition project1 = new ProjectDefinition(FullProjectPath("1.proj")); TargetDefinition target1 = new TargetDefinition("Target1", null, "Target2", project1.ProjectXmlDocument); TargetDefinition target2 = new TargetDefinition("Target2", null, project1.ProjectXmlDocument); TaskDefinition task1 = new TaskDefinition("t1-1", null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); TaskDefinition task2 = new TaskDefinition("t2-1", null, false, project1.ProjectXmlDocument, TestUtilities.GetContinueWithErrorResult()); TaskDefinition task3 = new TaskDefinition("t2-2", null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); target1.AddTask(task1); target2.AddTask(task2); target2.AddTask(task3); project1.AddTarget(target1); project1.AddTarget(target2); RequestDefinition test1 = new RequestDefinition(FullProjectPath("1.proj"), "2.0", new string[1] { "Target1" }, null, 100, null, (IBuildComponentHost)_commonTests.Host); test1.ProjectDefinition = project1; test1.SubmitBuildRequest(); task2.WaitForTaskToComplete(); task1.WaitForTaskToComplete(); test1.WaitForResults(); test1.ValidateNonPrimaryTargetEndResult("Target2", TargetResultCode.Success, null); test1.ValidateTargetEndResult("Target1", TargetResultCode.Success, null); }
public void CircularDependencyInvolvingTargetsWithinDefaultTargets() { ProjectDefinition project = new ProjectDefinition(FullProjectPath("1.proj"), null, "target1", "2.0", true); TargetDefinition target1 = new TargetDefinition("target1", null, "target2", project.ProjectXmlDocument); TargetDefinition target2 = new TargetDefinition("target2", null, "target1", project.ProjectXmlDocument); project.AddTarget(target1); project.AddTarget(target2); RequestDefinition request = new RequestDefinition(FullProjectPath("1.proj"), "2.0", new string[1] { "target1" }, null, 0, null, (IBuildComponentHost)_commonTests.Host); request.ProjectDefinition = project; request.SubmitBuildRequest(); request.WaitForResultsThrowException(); }
public void BuildDependentTargetWithFalseCondition() { ProjectDefinition project1 = new ProjectDefinition(FullProjectPath("1.proj")); TargetDefinition target1 = new TargetDefinition("Target1", null, "Target2", project1.ProjectXmlDocument); TargetDefinition target2 = new TargetDefinition("Target2", @"'1' == '2'", project1.ProjectXmlDocument); TaskDefinition task1 = new TaskDefinition(RequestDefinition.defaultTaskName, null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); TaskDefinition task2 = new TaskDefinition(RequestDefinition.defaultTaskName, null, false, project1.ProjectXmlDocument, TestUtilities.GetSuccessResult()); target1.AddTask(task1); target2.AddTask(task2); project1.AddTarget(target1); project1.AddTarget(target2); RequestDefinition test1 = new RequestDefinition(FullProjectPath("1.proj"), "2.0", new string[1] { "Target1" }, null, 100, null, (IBuildComponentHost)this.commonTests.Host); test1.ProjectDefinition = project1; test1.SubmitBuildRequest(); task1.WaitForTaskToComplete(); test1.WaitForResults(); test1.ValidateTargetBuilt("Target1"); test1.ValidateNonPrimaryTargetEndResult("Target2", TargetResultCode.Skipped, null); test1.ValidateTargetEndResult("Target1", TargetResultCode.Success, null); }
/// <summary> /// Given a string containing the project file content return a RequestBuilder with all the information of the project /// populated. /// </summary> private RequestDefinition GetRequestUsingProject(string projectFileContents, string projectName, string targetName, out ProjectInstance project) { ProjectDefinition p1 = new ProjectDefinition(projectName); project = p1.MSBuildProjectInstance = GenerateProjectInstanceFromXml(projectFileContents); string[] targetNames = null; if (targetName != null) { targetNames = targetName.Split(';'); } projectName = System.IO.Path.Combine(_tempPath, projectName); RequestDefinition r1 = new RequestDefinition(projectName, "2.0", targetNames, null, 0, null, (IBuildComponentHost)_commonTests.Host); r1.ProjectDefinition = p1; return r1; }