From 6655204442ec70e22105aa35139f3a139dff357a Mon Sep 17 00:00:00 2001 From: Yann Hamon Date: Sun, 7 Jun 2020 11:53:05 +0200 Subject: [PATCH] fix validation logic - only first resource with a missing schema was reported --- main.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/main.go b/main.go index 50b4ac7..eb7a65f 100644 --- a/main.go +++ b/main.go @@ -98,26 +98,27 @@ func ValidateStream(r io.Reader, regs []registry.Registry, k8sVersion string, c cacheKey = cache.Key(sig.Kind, sig.Version, k8sVersion) schema, ok = c.Get(cacheKey) } + if !ok { schema, err = downloadSchema(regs, sig.Kind, sig.Version, k8sVersion) if err != nil { validationResults = append(validationResults, validationResult{kind: sig.Kind, version: sig.Version, err: err, skipped: false}) continue - } else if schema == nil { // skip if no schema was found, but there was no error TODO: Fail by default, provide a -skip-missing-schema - if ignoreMissingSchemas { - validationResults = append(validationResults, validationResult{kind: sig.Kind, version: sig.Version, err: nil, skipped: true}) - } else { - validationResults = append(validationResults, validationResult{kind: sig.Kind, version: sig.Version, err: fmt.Errorf("could not find schema for %s", sig.Kind), skipped: false}) - } - if c != nil { - c.Set(cacheKey, nil) - } - continue - } else if c != nil { + } + + if c != nil { c.Set(cacheKey, schema) } } + if schema == nil { + if ignoreMissingSchemas { + validationResults = append(validationResults, validationResult{kind: sig.Kind, version: sig.Version, err: nil, skipped: true}) + } else { + validationResults = append(validationResults, validationResult{kind: sig.Kind, version: sig.Version, err: fmt.Errorf("could not find schema for %s", sig.Kind), skipped: false}) + } + } + err = validator.Validate(rawResource, schema) validationResults = append(validationResults, validationResult{kind: sig.Kind, version: sig.Version, err: err}) }