tq/errors: implement MalformedObjectError
This commit is contained in:
parent
4b0f50e43f
commit
2bb2da9d5b
29
tq/errors.go
Normal file
29
tq/errors.go
Normal file
@ -0,0 +1,29 @@
|
||||
package tq
|
||||
|
||||
import "fmt"
|
||||
|
||||
type MalformedObjectError struct {
|
||||
Name string
|
||||
Oid string
|
||||
|
||||
missing bool
|
||||
}
|
||||
|
||||
func newObjectMissingError(name, oid string) error {
|
||||
return &MalformedObjectError{Name: name, Oid: oid, missing: true}
|
||||
}
|
||||
|
||||
func newCorruptObjectError(name, oid string) error {
|
||||
return &MalformedObjectError{Name: name, Oid: oid, missing: false}
|
||||
}
|
||||
|
||||
func (e MalformedObjectError) Missing() bool { return e.missing }
|
||||
|
||||
func (e MalformedObjectError) Corrupt() bool { return !e.Missing() }
|
||||
|
||||
func (e MalformedObjectError) Error() string {
|
||||
if e.Corrupt() {
|
||||
return fmt.Sprintf("corrupt object: %s (%s)", e.Name, e.Oid)
|
||||
}
|
||||
return fmt.Sprintf("missing object: %s (%s)", e.Name, e.Oid)
|
||||
}
|
23
tq/errors_test.go
Normal file
23
tq/errors_test.go
Normal file
@ -0,0 +1,23 @@
|
||||
package tq
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestMissingObjectErrorsAreRecognizable(t *testing.T) {
|
||||
err := newObjectMissingError("some-name", "some-oid").(*MalformedObjectError)
|
||||
|
||||
assert.Equal(t, "some-name", err.Name)
|
||||
assert.Equal(t, "some-oid", err.Oid)
|
||||
assert.True(t, err.Missing())
|
||||
}
|
||||
|
||||
func TestCorruptObjectErrorsAreRecognizable(t *testing.T) {
|
||||
err := newCorruptObjectError("some-name", "some-oid").(*MalformedObjectError)
|
||||
|
||||
assert.Equal(t, "some-name", err.Name)
|
||||
assert.Equal(t, "some-oid", err.Oid)
|
||||
assert.True(t, err.Corrupt())
|
||||
}
|
Loading…
Reference in New Issue
Block a user