public TcProjects CreateTCProjects(Dictionary<string, string> projectConfigs) { var tcProjects = new TcProjects(); projectConfigs.Keys.ForEach(pc => { var tcProject = new ProjectFileParser().Parse(projectConfigs[pc]); tcProject.ProjectName = DirectoryAndFileOperations.GetFolderNameFromPath(pc); tcProjects.Add(tcProject); }); return tcProjects; }
public void ShouldReturnProjectWith2BuildConfigurations() { #region xml string xml = @"<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE project SYSTEM '../project-config.dtd'> <project id='project2'> <parameters /> <build-type id='bt14' name='Artifacts'> <description /> <settings> <parameters /> <build-runners /> <vcs-settings checkout-mode='ON_SERVER' labeling-type='NONE' labeling-pattern='build-%system.build.number%' /> <requirements /> <build-triggers> <build-trigger name='buildDependencyTrigger'> <parameters> <param name='afterSuccessfulBuildOnly' value='true' /> <param name='dependsOn' value='bt7' /> </parameters> </build-trigger> </build-triggers> <artifact-publishing paths='p1b.txt' /> <artifact-dependencies> <dependency sourceBuildTypeId='bt6' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p1b.txt' /> </dependency> </artifact-dependencies> <dependencies> <depend-on sourceBuildTypeId='bt12'> <options> <option name='take-started-build-with-same-revisions' value='true' /> <option name='take-successful-builds-only' value='true' /> </options> </depend-on> <depend-on sourceBuildTypeId='bt13'> <options> <option name='take-started-build-with-same-revisions' value='true' /> <option name='take-successful-builds-only' value='true' /> </options> </depend-on> </dependencies> <cleanup /> </settings> </build-type> <build-type id='bt6' name='Build'> <description /> <settings> <parameters /> <build-runners> <runner id='RUNNER_3' name='' type='simpleRunner'> <parameters> <param name='command.executable' value='build.bat' /> </parameters> </runner> </build-runners> <vcs-settings checkout-mode='ON_SERVER' labeling-type='NONE' labeling-pattern='build-%system.build.number%'> <vcs-entry-ref root-id='3' set-label='false' /> </vcs-settings> <requirements /> <build-triggers> <build-trigger name='vcsTrigger'> <parameters> <param name='quietPeriodMode' value='DO_NOT_USE' /> </parameters> </build-trigger> </build-triggers> <artifact-publishing paths='p1b.txt' /> <cleanup /> </settings> </build-type> <build-type id='bt12' name='P1ToP2ContractTest'> <description /> <settings> <parameters /> <build-runners> <runner id='RUNNER_3' name='' type='simpleRunner'> <parameters> <param name='command.executable' value='ContractTestP1ToP2.bat' /> </parameters> </runner> </build-runners> <vcs-settings checkout-mode='ON_SERVER' labeling-type='NONE' labeling-pattern='build-%system.build.number%'> <vcs-entry-ref root-id='3' set-label='false' /> </vcs-settings> <requirements /> <build-triggers /> <artifact-publishing paths='p1u.txt
p1b.txt' /> <artifact-dependencies> <dependency sourceBuildTypeId='bt6' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p1b.txt' /> </dependency> <dependency sourceBuildTypeId='bt8' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p2b.txt' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> <build-type id='bt13' name='P1ToP3ContractTest'> <description /> <settings> <parameters /> <build-runners> <runner id='RUNNER_3' name='' type='simpleRunner'> <parameters> <param name='command.executable' value='ContractTestP1ToP3.bat' /> </parameters> </runner> </build-runners> <vcs-settings checkout-mode='ON_SERVER' labeling-type='NONE' labeling-pattern='build-%system.build.number%'> <vcs-entry-ref root-id='3' set-label='false' /> </vcs-settings> <requirements /> <build-triggers /> <artifact-publishing paths='p1u.txt
p1b.txt' /> <artifact-dependencies> <dependency sourceBuildTypeId='bt6' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p1b.txt' /> </dependency> <dependency sourceBuildTypeId='bt10' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p3b.txt' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> <build-type id='bt7' name='UnitTest'> <description /> <settings> <parameters /> <build-runners> <runner id='RUNNER_3' name='' type='simpleRunner'> <parameters> <param name='command.executable' value='unitTest.bat' /> </parameters> </runner> </build-runners> <vcs-settings checkout-mode='ON_SERVER' labeling-type='NONE' labeling-pattern='build-%system.build.number%'> <vcs-entry-ref root-id='3' set-label='false' /> </vcs-settings> <requirements /> <build-triggers> <build-trigger name='buildDependencyTrigger'> <parameters> <param name='afterSuccessfulBuildOnly' value='true' /> <param name='dependsOn' value='bt6' /> </parameters> </build-trigger> </build-triggers> <artifact-publishing paths='p1u.txt
p1b.txt' /> <artifact-dependencies> <dependency sourceBuildTypeId='bt6' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p1b.txt' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> </project> "; #endregion // method under test var tcProject = new ProjectFileParser().Parse(xml); Assert.IsNotNull(tcProject); Assert.AreEqual(5,tcProject.BuildConfigurations.Count); Assert.AreEqual("project2",tcProject.Id); Assert.AreEqual("bt14", tcProject.BuildConfigurations[0].Id); Assert.AreEqual("Artifacts", tcProject.BuildConfigurations[0].Name); Assert.AreEqual(1, tcProject.BuildConfigurations[0].DependsOn.Count); Assert.AreEqual("bt7", tcProject.BuildConfigurations[0].DependsOn[0]); Assert.AreEqual(2, tcProject.BuildConfigurations[0].SnapshotDependency.Count); Assert.AreEqual("bt12", tcProject.BuildConfigurations[0].SnapshotDependency[0]); Assert.AreEqual("bt13", tcProject.BuildConfigurations[0].SnapshotDependency[1]); }
public void ShouldReturnABuildConfigurationWith3DependsOn() { #region xml string xml = @"<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE project SYSTEM '../project-config.dtd'> <project id='project6'> <parameters /> <build-type id='bt18' name='Artifacts'> <description /> <settings> <parameters /> <build-runners /> <vcs-settings checkout-mode='ON_SERVER' labeling-type='NONE' labeling-pattern='build-%system.build.number%' /> <requirements /> <build-triggers> <build-trigger name='buildDependencyTrigger'> <parameters> <param name='afterSuccessfulBuildOnly' value='true' /> <param name='dependsOn' value='bt14' /> </parameters> </build-trigger> <build-trigger name='buildDependencyTrigger'> <parameters> <param name='afterSuccessfulBuildOnly' value='true' /> <param name='dependsOn' value='bt15' /> </parameters> </build-trigger> <build-trigger name='buildDependencyTrigger'> <parameters> <param name='afterSuccessfulBuildOnly' value='true' /> <param name='dependsOn' value='bt17' /> </parameters> </build-trigger> </build-triggers> <artifact-publishing paths='p1b.txt
p2b.txt
p3b.txt' /> <artifact-dependencies> <dependency sourceBuildTypeId='bt14' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p1b.txt' /> </dependency> <dependency sourceBuildTypeId='bt15' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p2b.txt' /> </dependency> <dependency sourceBuildTypeId='bt17' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='p3b.txt' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> </project>"; #endregion // method under test var tcProject = new ProjectFileParser().Parse(xml); Assert.IsNotNull(tcProject); Assert.AreEqual(1, tcProject.BuildConfigurations.Count); Assert.AreEqual("project6", tcProject.Id); Assert.AreEqual("bt18", tcProject.BuildConfigurations[0].Id); Assert.AreEqual("Artifacts", tcProject.BuildConfigurations[0].Name); Assert.AreEqual(3, tcProject.BuildConfigurations[0].DependsOn.Count); Assert.AreEqual(0, tcProject.BuildConfigurations[0].SnapshotDependency.Count); // Assert.AreEqual(3, tcProject.BuildConfigurations[0].ArtifactsDependency.Count); }