diff --git a/template/template.go b/template/template.go index 0d2671ca0..17d808029 100644 --- a/template/template.go +++ b/template/template.go @@ -109,6 +109,19 @@ func (t *Template) Validate() error { } } + // Verify post-processors + for i, chain := range t.PostProcessors { + for j, p := range chain { + // Validate only/except + if verr := p.OnlyExcept.Validate(t); verr != nil { + for _, e := range multierror.Append(verr).Errors { + err = multierror.Append(err, fmt.Errorf( + "post-processor %d.%d: %s", i+1, j+1, e)) + } + } + } + } + return err } diff --git a/template/template_test.go b/template/template_test.go index dbb2cf33d..d14682728 100644 --- a/template/template_test.go +++ b/template/template_test.go @@ -52,6 +52,26 @@ func TestTemplateValidate(t *testing.T) { "validate-good-prov-except.json", false, }, + + { + "validate-bad-pp-only.json", + true, + }, + + { + "validate-good-pp-only.json", + false, + }, + + { + "validate-bad-pp-except.json", + true, + }, + + { + "validate-good-pp-except.json", + false, + }, } for _, tc := range cases { diff --git a/template/test-fixtures/validate-bad-pp-except.json b/template/test-fixtures/validate-bad-pp-except.json new file mode 100644 index 000000000..3f66cd8ca --- /dev/null +++ b/template/test-fixtures/validate-bad-pp-except.json @@ -0,0 +1,10 @@ +{ + "builders": [{ + "type": "foo" + }], + + "post-processors": [{ + "type": "bar", + "except": ["bar"] + }] +} diff --git a/template/test-fixtures/validate-bad-pp-only.json b/template/test-fixtures/validate-bad-pp-only.json new file mode 100644 index 000000000..a79edcb80 --- /dev/null +++ b/template/test-fixtures/validate-bad-pp-only.json @@ -0,0 +1,10 @@ +{ + "builders": [{ + "type": "foo" + }], + + "post-processors": [{ + "type": "bar", + "only": ["bar"] + }] +} diff --git a/template/test-fixtures/validate-good-pp-except.json b/template/test-fixtures/validate-good-pp-except.json new file mode 100644 index 000000000..79a1b2a24 --- /dev/null +++ b/template/test-fixtures/validate-good-pp-except.json @@ -0,0 +1,10 @@ +{ + "builders": [{ + "type": "foo" + }], + + "post-processors": [{ + "type": "bar", + "except": ["foo"] + }] +} diff --git a/template/test-fixtures/validate-good-pp-only.json b/template/test-fixtures/validate-good-pp-only.json new file mode 100644 index 000000000..24ef7c95d --- /dev/null +++ b/template/test-fixtures/validate-good-pp-only.json @@ -0,0 +1,10 @@ +{ + "builders": [{ + "type": "foo" + }], + + "post-processors": [{ + "type": "bar", + "only": ["foo"] + }] +}