From 15e48202446c2174e59e6d51f39ad7a616d52a31 Mon Sep 17 00:00:00 2001 From: JF Technology <57098161+jf-tech@users.noreply.github.com> Date: Sat, 17 Oct 2020 10:09:44 +1300 Subject: [PATCH] make json schema validation multi-error sorted --- schema_test.go | 2 +- validation/jsonvalidate.go | 2 ++ validation/jsonvalidate_test.go | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/schema_test.go b/schema_test.go index 011db71..6aadd7e 100644 --- a/schema_test.go +++ b/schema_test.go @@ -39,7 +39,7 @@ func TestNewSchema(t *testing.T) { name: "json schema validation for header failed", schema: `{"parser_settings": {"versionx": "9999", "file_format_type": "exe" }}`, exts: nil, - err: "schema 'test-schema' validation failed:\nparser_settings: version is required\nparser_settings: Additional property versionx is not allowed", + err: "schema 'test-schema' validation failed:\nparser_settings: Additional property versionx is not allowed\nparser_settings: version is required", }, { name: "no supported schema handler", diff --git a/validation/jsonvalidate.go b/validation/jsonvalidate.go index 1b24493..b9353a0 100644 --- a/validation/jsonvalidate.go +++ b/validation/jsonvalidate.go @@ -4,6 +4,7 @@ package validation import ( "fmt" + "sort" "strings" "github.com/xeipuuv/gojsonschema" @@ -25,6 +26,7 @@ func SchemaValidate(schemaName string, schemaContent []byte, jsonSchema string) for _, err := range result.Errors() { errs = append(errs, err.String()) } + sort.Strings(errs) if len(errs) == 1 { return fmt.Errorf("schema '%s' validation failed: %s", schemaName, errs[0]) } diff --git a/validation/jsonvalidate_test.go b/validation/jsonvalidate_test.go index b2dfd6e..cd29ac9 100644 --- a/validation/jsonvalidate_test.go +++ b/validation/jsonvalidate_test.go @@ -57,7 +57,7 @@ func TestSchemaValidate(t *testing.T) { "unknown": "blah" } }`, - expectedErr: "schema 'test-schema' validation failed:\nparser_settings: file_format_type is required\nparser_settings: Additional property unknown is not allowed", + expectedErr: "schema 'test-schema' validation failed:\nparser_settings: Additional property unknown is not allowed\nparser_settings: file_format_type is required", }, } { t.Run(test.name, func(t *testing.T) {