Check for duplicate resource_type names
This commit is contained in:
@@ -46,6 +46,10 @@ public class ConcourseValueParsers {
|
||||
return acceptOnlyUniqueNames(models::getJobNames, "job name");
|
||||
}
|
||||
|
||||
public static SchemaContextAware<ValueParser> resourceTypeNameDef(ConcourseModel models) {
|
||||
return acceptOnlyUniqueNames(models::getResourceTypeNames, "resource-type name");
|
||||
}
|
||||
|
||||
public static SchemaContextAware<ValueParser> acceptOnlyUniqueNames(
|
||||
Function<IDocument, Multiset<String>> getDefinedNameCounts,
|
||||
String typeName
|
||||
@@ -70,6 +74,4 @@ public class ConcourseValueParsers {
|
||||
+ " '2h45m'. Valid time units are 'ns', 'us' (or 'µs'), 'ms', 's', "
|
||||
+ "'m', 'h'."
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -143,6 +143,8 @@ public class PipelineYmlSchema implements YamlSchema {
|
||||
resourceNameDef.parseWith(ConcourseValueParsers.resourceNameDef(models));
|
||||
YAtomicType jobNameDef = f.yatomic("Job Name");
|
||||
jobNameDef.parseWith(ConcourseValueParsers.jobNameDef(models));
|
||||
YAtomicType resourceTypeNameDef = f.yatomic("ResourceType Name");
|
||||
resourceTypeNameDef.parseWith(ConcourseValueParsers.resourceTypeNameDef(models));
|
||||
|
||||
YBeanType getStep = f.ybean("GetStep");
|
||||
addProp(getStep, "get", t_resource_name);
|
||||
@@ -221,7 +223,7 @@ public class PipelineYmlSchema implements YamlSchema {
|
||||
addProp(job, "disable_manual_trigger", t_boolean);
|
||||
|
||||
YBeanType resourceType = f.ybean("ResourceType");
|
||||
addProp(resourceType, "name", t_ne_string).isRequired(true);
|
||||
addProp(resourceType, "name", resourceTypeNameDef).isRequired(true);
|
||||
addProp(resourceType, "type", t_image_type).isRequired(true);
|
||||
addProp(resourceType, "source", resourceSource);
|
||||
|
||||
|
||||
@@ -520,6 +520,21 @@ public class PipelineYamlEditorTest {
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void reconcileDuplicateResourceTypeNames() throws Exception {
|
||||
Editor editor = harness.newEditor(
|
||||
"resource_types:\n" +
|
||||
"- name: slack-notification\n" +
|
||||
" type: docker_image\n" +
|
||||
"- name: slack-notification\n" +
|
||||
" type: docker_image"
|
||||
);
|
||||
editor.assertProblems(
|
||||
"slack-notification|Duplicate resource-type name",
|
||||
"slack-notification|Duplicate resource-type name"
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void reconcileDuplicateJobNames() throws Exception {
|
||||
Editor editor = harness.newEditor(
|
||||
|
||||
Reference in New Issue
Block a user