public void ShouldGetAllTemplatesFromTeamCity() { var templateParser = new TemplateParser(Directory.GetCurrentDirectory() + "..\\..\\..\\TestData\\config"); // method under test var allTemplates = templateParser.GetAllTemplates(); Assert.IsNotNull(allTemplates); }
private Dictionary<string, XElement> ExtractTemplates(string rootFolder) { var templateParser = new TemplateParser(rootFolder); return templateParser.GetAllTemplates(); }
public void ShouldExtraxt3TempletesFromXml() { #region xml string xml = @"<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE project SYSTEM '../project-config.dtd'> <project id='project4'> <parameters /> <template id='btTemplate3' name='build'> <settings> <options> <option name='allowExternalStatus' value='true' /> <option name='buildNumberPattern' value='%build.number.format%' /> <option name='maximumNumberOfBuilds' value='1' /> </options> <parameters> <param name='build.number.format' value='1.0.0.{0}' /> <param name='checkout.dir' value='' /> </parameters> <build-runners> <runner id='RUNNER_8' name='' type='simpleRunner'> <parameters> <param name='command.executable' value='build.bat' /> </parameters> </runner> </build-runners> <vcs-settings checkout-mode='ON_AGENT' checkout-dir='%checkout.dir%' labeling-type='NONE' labeling-pattern='build-%system.build.number%' /> <requirements> <equals name='system.os.name' value='Windows Server 2008 R2' /> <does-not-contain name='system.agent.name' value='migration' /> </requirements> <build-triggers> <build-trigger name='vcsTrigger'> <parameters> <param name='quietPeriodMode' value='DO_NOT_USE' /> <param name='triggerRules' value='-:Tests.Contracts.*/**' /> </parameters> </build-trigger> </build-triggers> <build-extensions> <extension id='BUILD_EXT_3' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='build/Unit-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> </build-extensions> <artifact-publishing paths='build/*.zip
build/*.xml
build/*.html
build/package/poshsplice.yml' /> <cleanup /> </settings> </template> <template id='btTemplate7' name='coverage'> <settings> <options> <option name='buildNumberPattern' value='%build.number%' /> </options> <parameters /> <build-runners> <runner id='RUNNER_6' name='' type='simpleRunner'> <parameters> <param name='command.executable' value='test.bat' /> <param name='command.parameters' value='-testType Unit -Coverage true' /> <param name='teamcity.build.workingDir' value='controller' /> </parameters> </runner> </build-runners> <vcs-settings checkout-mode='ON_AGENT' checkout-dir='%checkout.dir%' labeling-type='NONE' labeling-pattern='build-%system.build.number%'> <vcs-entry-ref root-id='1' set-label='false'> <checkout-rule rule='+:BuildAndRelease/DeployScripts => .' /> </vcs-entry-ref> </vcs-settings> <requirements /> <build-triggers /> <build-extensions> <extension id='BUILD_EXT_4' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='Unit-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> </build-extensions> <artifact-publishing paths='build/*.xml
build/*.html' /> <cleanup /> </settings> </template> <template id='btTemplate4' name='deploy / test'> <settings> <options> <option name='buildNumberPattern' value='%build.number%' /> <option name='maximumNumberOfBuilds' value='1' /> </options> <parameters> <param name='app' value='' /> <param name='build.number' value='' /> <param name='checkout.dir' value='' /> <param name='dependency.build.number' value='%build.number%' /> <param name='deploy.environment' value='functional-test-pie' /> <param name='optional.parameters' value='' /> <param name='test.type' value='Functional' /> </parameters> <build-runners> <runner id='RUNNER_9' name='' type='simpleRunner'> <parameters> <param name='command.executable' value='deploy.bat' /> <param name='command.parameters' value='-env %deploy.environment% -app %app% -ver %dependency.build.number%' /> <param name='teamcity.build.workingDir' value='controller' /> </parameters> </runner> <runner id='RUNNER_10' name='' type='simpleRunner'> <parameters> <param name='command.executable' value='controller\test.bat' /> <param name='command.parameters' value='-env %deploy.environment% -testType %test.type% -app %app% %optional.parameters%' /> <param name='teamcity.build.workingDir' value='controller' /> </parameters> </runner> </build-runners> <vcs-settings checkout-mode='ON_AGENT' checkout-dir='%checkout.dir%' labeling-type='NONE' labeling-pattern='build-%system.build.number%'> <vcs-entry-ref root-id='1' set-label='false'> <checkout-rule rule='+:BuildAndRelease/DeployScripts => .' /> </vcs-entry-ref> </vcs-settings> <requirements> <equals name='system.os.name' value='Windows Server 2008 R2' /> </requirements> <build-triggers /> <build-extensions> <extension id='BUILD_EXT_5' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> </build-extensions> <artifact-publishing paths='*.zip
poshsplice.yml
Tests.Contracts.*/*.log' /> <cleanup> <keep cleanup-level='ARTIFACTS' builds='5' /> </cleanup> </settings> </template> <build-type id='bt85' name='ais / contract test'> <description /> <settings ref='btTemplate9'> <parameters> <param name='app' value='ais' /> <param name='build.number' value='%dep.bt6.build.number%' /> <param name='checkout.dir' value='cpe%app%deploycontractstest' /> <param name='dependency.build.number' value='%dep.bt79.build.number%' /> <param name='optional.parameters' value='-testFixture AddressService ' /> </parameters> <build-runners /> <requirements /> <build-triggers /> <build-extensions> <extension id='BUILD_EXT_7' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> <extension id='BUILD_EXT_6' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> </build-extensions> <artifact-dependencies> <dependency sourceBuildTypeId='bt79' destinationPath='.' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='poshsplice.yml' /> </dependency> <dependency sourceBuildTypeId='bt6' destinationPath='.' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='*.zip' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> <build-type id='bt86' name='Artifacts'> <description /> <settings ref='btTemplate8'> <parameters> <param name='build.number' value='%dep.bt324.build.number%' /> </parameters> <build-runners /> <requirements /> <build-triggers> <build-trigger name='buildDependencyTrigger'> <parameters> <param name='afterSuccessfulBuildOnly' value='true' /> <param name='dependsOn' value='bt324' /> </parameters> </build-trigger> </build-triggers> <artifact-dependencies> <dependency sourceBuildTypeId='bt324' destinationPath='Artifacts' cleanDestination='true'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='InventoryManagement.CPE.zip' /> <artifact sourcePath='poshsplice.yml' /> <artifact sourcePath='Tests.Contracts.InventoryManagement.zip' /> </dependency> </artifact-dependencies> <dependencies> <depend-on sourceBuildTypeId='bt85'> <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='bt87'> <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='bt90'> <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='bt323' /> <depend-on sourceBuildTypeId='bt483'> <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='bt5' name='build'> <description /> <settings ref='btTemplate3'> <parameters> <param name='build.number.format' value='1.1.0.%build.vcs.number.1%' /> <param name='checkout.dir' value='cpebuild' /> </parameters> <build-runners /> <vcs-settings checkout-mode='INHERITED' labeling-type='INHERITED'> <vcs-entry-ref root-id='2' set-label='false' /> </vcs-settings> <requirements /> <build-triggers /> <build-extensions> <extension id='BUILD_EXT_3' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='build/Unit-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> </build-extensions> <cleanup /> </settings> </build-type> <build-type id='bt87' name='cdi / contract test'> <description /> <settings ref='btTemplate9'> <parameters> <param name='app' value='cdi' /> <param name='build.number' value='%dep.bt6.build.number%' /> <param name='checkout.dir' value='cpe%app%deploycontractstest' /> <param name='dependency.build.number' value='%dep.bt77.build.number%' /> <param name='optional.parameters' value='-testFixture CustomerManagementService ' /> </parameters> <build-runners /> <requirements /> <build-triggers /> <build-extensions> <extension id='BUILD_EXT_7' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> <extension id='BUILD_EXT_6' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> </build-extensions> <artifact-dependencies> <dependency sourceBuildTypeId='bt77' destinationPath='.' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='poshsplice.yml' /> </dependency> <dependency sourceBuildTypeId='bt6' destinationPath='.' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='*.zip' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> <build-type id='bt324' name='deploy / cpe / for contract test'> <description /> <settings ref='btTemplate10'> <parameters> <param name='app' value='cpe' /> <param name='build.number' value='%dep.bt6.build.number%' /> <param name='dependency.build.number' value='%dep.bt6.build.number%' /> </parameters> <build-runners /> <requirements /> <build-triggers> <build-trigger name='buildDependencyTrigger'> <parameters> <param name='afterSuccessfulBuildOnly' value='true' /> <param name='dependsOn' value='bt6' /> </parameters> </build-trigger> </build-triggers> <artifact-dependencies> <dependency sourceBuildTypeId='bt6' destinationPath='Artifacts' cleanDestination='true'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='*.zip' /> <artifact sourcePath='poshsplice.yml' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> <build-type id='bt6' name='deploy / test'> <description /> <settings ref='btTemplate4'> <parameters> <param name='app' value='cpe' /> <param name='build.number' value='%dep.bt5.build.number%' /> <param name='checkout.dir' value='cpedeploytest' /> </parameters> <build-runners /> <requirements /> <build-triggers> <build-trigger name='buildDependencyTrigger'> <parameters> <param name='afterSuccessfulBuildOnly' value='true' /> <param name='dependsOn' value='bt5' /> </parameters> </build-trigger> </build-triggers> <build-extensions> <extension id='BUILD_EXT_5' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> <extension id='BUILD_EXT_4' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> </build-extensions> <artifact-dependencies> <dependency sourceBuildTypeId='bt5' destinationPath='.' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='*.zip' /> <artifact sourcePath='poshsplice.yml' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> <build-type id='bt90' name='ffm / contract test'> <description /> <settings ref='btTemplate9'> <parameters> <param name='app' value='ffm' /> <param name='build.number' value='%dep.bt6.build.number%' /> <param name='checkout.dir' value='cpe%app%deploycontractstest' /> <param name='dependency.build.number' value='%dep.bt88.build.number%' /> <param name='optional.parameters' value='-testFixture FieldForceManagementService' /> </parameters> <build-runners /> <requirements /> <build-triggers /> <build-extensions> <extension id='BUILD_EXT_7' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> <extension id='BUILD_EXT_6' type='xml-report-plugin'> <parameters> <param name='xmlReportParsing.reportDirs' value='%test.type%-Test-Reports.xml' /> <param name='xmlReportParsing.reportType' value='nunit' /> </parameters> </extension> </build-extensions> <artifact-dependencies> <dependency sourceBuildTypeId='bt88' destinationPath='.' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='poshsplice.yml' /> </dependency> <dependency sourceBuildTypeId='bt6' destinationPath='.' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='*.zip' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> <build-type id='bt171' name='Pin'> <description /> <settings ref='btTemplate14'> <parameters> <param name='bt.id' value='bt86' /> <param name='build.number' value='%system.Build.To.Pin%' /> <param name='dependency.build.number' value='%dep.bt86.build.number%' /> </parameters> <build-runners /> <requirements /> <build-triggers /> <artifact-dependencies> <dependency sourceBuildTypeId='bt86' destinationPath='.' cleanDestination='false'> <revisionRule name='lastSuccessful' revision='latest.lastSuccessful' /> <artifact sourcePath='poshsplice.yml' /> </dependency> </artifact-dependencies> <cleanup /> </settings> </build-type> </project> "; #endregion // method under test var templates = new TemplateParser("pathToRootFolder").Parse(xml); Assert.IsNotNull(templates); Assert.AreEqual(3,templates.Count); var list = templates.Keys.ToList(); Assert.AreEqual("btTemplate3",list[0]); Assert.AreEqual("btTemplate7",list[1]); Assert.AreEqual("btTemplate4",list[2]); string[] arr1= new string[2]; arr1[0] = "sds"; arr1[1] = "sds"; string[] arr2 = new string[5]; arr2[0] = "ggg"; arr2[1] = "ggg"; arr2[2] = "ggg"; arr2[3] = "ggg"; arr2[4] = "ggg"; var array = arr1.Concat(arr2).ToArray(); }