Separate version interpretation from reporting
This commit is contained in:
@@ -463,6 +463,41 @@ func TestLoadVersionReportSuppressesReturnedErrorTextAndDefaults(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestVersionWarningDoesNotSuppressReturnedError(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
type config struct{}
|
||||
versionPath := Keys("schema_version")
|
||||
result, err := testLoad(Bytes("version.yml", []byte("{}\n")), Options[config]{
|
||||
Definition: Definition[config]{Version: &VersionRule{
|
||||
Path: versionPath,
|
||||
Check: func(_ Version, validation *Validation) error {
|
||||
validation.Warning(versionPath, "review schema compatibility")
|
||||
return errors.New("CANARY_VERSION_ERROR")
|
||||
},
|
||||
}},
|
||||
})
|
||||
if result != nil || err == nil {
|
||||
t.Fatalf("result = %#v, err = %v", result, err)
|
||||
}
|
||||
var loadError *LoadError
|
||||
if !errors.As(err, &loadError) {
|
||||
t.Fatalf("error type = %T", err)
|
||||
}
|
||||
diagnostics := loadError.Diagnostics()
|
||||
var warning, hookFailure bool
|
||||
for _, diagnostic := range diagnostics {
|
||||
if strings.Contains(diagnostic.Message, "CANARY") {
|
||||
t.Fatalf("returned checker error text was exposed: %#v", diagnostic)
|
||||
}
|
||||
warning = warning || diagnostic.Code == CodeVersionWarning && diagnostic.Severity == SeverityWarning
|
||||
hookFailure = hookFailure || diagnostic.Code == CodeVersionHookFailed && diagnostic.Severity == SeverityError
|
||||
}
|
||||
if !warning || !hookFailure {
|
||||
t.Fatalf("diagnostics = %#v", diagnostics)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadMetadataReflectsDefaultsInputAndDetachedRecords(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user