tq/errors: implement MalformedObjectError

This commit is contained in:
Taylor Blau 2017-03-24 14:36:59 -06:00
parent 4b0f50e43f
commit 2bb2da9d5b
2 changed files with 52 additions and 0 deletions

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

@ -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())
}