aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/check
diff options
context:
space:
mode:
Diffstat (limited to 'container/check')
-rw-r--r--container/check/absolute.go19
-rw-r--r--container/check/absolute_test.go14
2 files changed, 18 insertions, 15 deletions
diff --git a/container/check/absolute.go b/container/check/absolute.go
index 26f0def6..d17d5e1a 100644
--- a/container/check/absolute.go
+++ b/container/check/absolute.go
@@ -13,15 +13,18 @@ import (
)
// AbsoluteError is returned by [NewAbs] and holds the invalid pathname.
-type AbsoluteError struct{ Pathname string }
+type AbsoluteError string
-func (e *AbsoluteError) Error() string { return fmt.Sprintf("path %q is not absolute", e.Pathname) }
-func (e *AbsoluteError) Is(target error) bool {
- var ce *AbsoluteError
+func (e AbsoluteError) Error() string {
+ return fmt.Sprintf("path %q is not absolute", string(e))
+}
+
+func (e AbsoluteError) Is(target error) bool {
+ var ce AbsoluteError
if !errors.As(target, &ce) {
return errors.Is(target, syscall.EINVAL)
}
- return *e == *ce
+ return e == ce
}
// Absolute holds a pathname checked to be absolute.
@@ -59,7 +62,7 @@ func (a *Absolute) Is(v *Absolute) bool {
// NewAbs checks pathname and returns a new [Absolute] if pathname is absolute.
func NewAbs(pathname string) (*Absolute, error) {
if !path.IsAbs(pathname) {
- return nil, &AbsoluteError{pathname}
+ return nil, AbsoluteError(pathname)
}
return unsafeAbs(pathname), nil
}
@@ -90,7 +93,7 @@ func (a *Absolute) GobEncode() ([]byte, error) {
func (a *Absolute) GobDecode(data []byte) error {
pathname := string(data)
if !path.IsAbs(pathname) {
- return &AbsoluteError{pathname}
+ return AbsoluteError(pathname)
}
a.pathname = unique.Make(pathname)
return nil
@@ -108,7 +111,7 @@ func (a *Absolute) UnmarshalJSON(data []byte) error {
return err
}
if !path.IsAbs(pathname) {
- return &AbsoluteError{pathname}
+ return AbsoluteError(pathname)
}
a.pathname = unique.Make(pathname)
return nil
diff --git a/container/check/absolute_test.go b/container/check/absolute_test.go
index 107407f3..25592a71 100644
--- a/container/check/absolute_test.go
+++ b/container/check/absolute_test.go
@@ -31,8 +31,8 @@ func TestAbsoluteError(t *testing.T) {
}{
{"EINVAL", new(AbsoluteError), syscall.EINVAL, true},
{"not EINVAL", new(AbsoluteError), syscall.EBADE, false},
- {"ne val", new(AbsoluteError), &AbsoluteError{Pathname: "etc"}, false},
- {"equals", &AbsoluteError{Pathname: "etc"}, &AbsoluteError{Pathname: "etc"}, true},
+ {"ne val", new(AbsoluteError), AbsoluteError("etc"), false},
+ {"equals", AbsoluteError("etc"), AbsoluteError("etc"), true},
}
for _, tc := range testCases {
@@ -45,7 +45,7 @@ func TestAbsoluteError(t *testing.T) {
t.Parallel()
want := `path "etc" is not absolute`
- if got := (&AbsoluteError{Pathname: "etc"}).Error(); got != want {
+ if got := (AbsoluteError("etc")).Error(); got != want {
t.Errorf("Error: %q, want %q", got, want)
}
})
@@ -62,8 +62,8 @@ func TestNewAbs(t *testing.T) {
wantErr error
}{
{"good", "/etc", MustAbs("/etc"), nil},
- {"not absolute", "etc", nil, &AbsoluteError{Pathname: "etc"}},
- {"zero", "", nil, &AbsoluteError{Pathname: ""}},
+ {"not absolute", "etc", nil, AbsoluteError("etc")},
+ {"zero", "", nil, AbsoluteError("")},
}
for _, tc := range testCases {
@@ -84,7 +84,7 @@ func TestNewAbs(t *testing.T) {
t.Parallel()
defer func() {
- wantPanic := &AbsoluteError{Pathname: "etc"}
+ wantPanic := AbsoluteError("etc")
if r := recover(); !reflect.DeepEqual(r, wantPanic) {
t.Errorf("MustAbs: panic = %v; want %v", r, wantPanic)
@@ -175,7 +175,7 @@ func TestCodecAbsolute(t *testing.T) {
`"/etc"`, `{"val":"/etc","magic":3236757504}`},
{"not absolute", nil,
- &AbsoluteError{Pathname: "etc"},
+ AbsoluteError("etc"),
"\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\a\xff\x80\x00\x03etc",
",\xff\x83\x03\x01\x01\x06sCheck\x01\xff\x84\x00\x01\x02\x01\bPathname\x01\xff\x80\x00\x01\x05Magic\x01\x06\x00\x00\x00\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\x0f\xff\x84\x01\x03etc\x01\xfb\x01\x81\xda\x00\x00\x00",