@Override public void makePipelineUseTemplate(CaseInsensitiveString pipelineName, CaseInsensitiveString templateName) { pipelineConfigByName(pipelineName).templatize(templateName); }
@Test public void shouldTemplatizeAPipeline() { PipelineConfig config = PipelineConfigMother.createPipelineConfigWithStages("pipeline", "stage1", "stage2"); config.templatize(new CaseInsensitiveString("template")); assertThat(config.hasTemplate(), is(true)); assertThat(config.hasTemplateApplied(), is(false)); assertThat(config.getTemplateName(), is(new CaseInsensitiveString("template"))); assertThat(config.isEmpty(), is(true)); config.templatize(new CaseInsensitiveString("")); assertThat(config.hasTemplate(), is(false)); config.templatize(null); assertThat(config.hasTemplate(), is(false)); }
@Test public void shouldNotExpandWhenTemplateAssociatedWithPipelineDoesNotExist() throws Exception { PipelineConfig pipelineConfig = new PipelineConfig(new CaseInsensitiveString("p"), new MaterialConfigs()); pipelineConfig.templatize(new CaseInsensitiveString("does_not_exist")); preprocessor.process(new BasicCruiseConfig(new BasicPipelineConfigs(pipelineConfig))); assertThat(pipelineConfig.hasTemplateApplied(), is(false)); }
@Test public void shouldValidatePipelineToCheckItDoesNotAllowBothTemplateAndStages() throws Exception { PipelineConfig pipelineConfig = new PipelineConfig(new CaseInsensitiveString("p"), new MaterialConfigs()); pipelineConfig.templatize(new CaseInsensitiveString("template")); pipelineConfig.addStageWithoutValidityAssertion(new StageConfig(new CaseInsensitiveString("stage"), new JobConfigs())); preprocessor.process(new BasicCruiseConfig(new BasicPipelineConfigs(pipelineConfig))); assertThat(pipelineConfig.hasTemplateApplied(), is(false)); assertThat(pipelineConfig.errors().on("stages"), is("Cannot add stages to pipeline 'p' which already references template 'template'")); assertThat(pipelineConfig.errors().on("template"), is("Cannot set template 'template' on pipeline 'p' because it already has stages defined")); }