aboutsummaryrefslogtreecommitdiff
path: root/errext/cleanup_test.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2026-07-29 21:56:06 +0200
committerStefan Majewsky <majewsky@gmx.net>2026-07-29 22:33:37 +0200
commit7ead3465c7fdf564ae367e1169aeb68ced9267c8 (patch)
treed6647e498a9663def6a2bbfd89dba1a59135fc25 /errext/cleanup_test.go
parente7c4ea85915d525c738ae0da5494da57926b07ca (diff)
downloadgo-gg-7ead3465c7fdf564ae367e1169aeb68ced9267c8.tar.gz
add package errext
Diffstat (limited to 'errext/cleanup_test.go')
-rw-r--r--errext/cleanup_test.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/errext/cleanup_test.go b/errext/cleanup_test.go
new file mode 100644
index 0000000..09b3173
--- /dev/null
+++ b/errext/cleanup_test.go
@@ -0,0 +1,41 @@
+// SPDX-FileCopyrightText: 2026 Stefan Majewsky <majewsky@gmx.net>
+// SPDX-License-Identifier: Apache-2.0
+
+package errext_test
+
+import (
+ "errors"
+ "testing"
+
+ "go.xyrillian.de/gg/assert"
+ "go.xyrillian.de/gg/errext"
+)
+
+type fooError struct{}
+type barError struct{}
+type bazError struct{}
+
+func (fooError) Error() string { return "foo" }
+func (barError) Error() string { return "bar" }
+func (bazError) Error() string { return "baz" }
+
+func TestIOError(t *testing.T) {
+ err := errext.WithCleanup(nil, "File.Close", nil)
+ assert.Equal(t, err == nil, true)
+
+ err = errext.WithCleanup(fooError{}, "File.Close", nil)
+ assert.ErrEqual(t, err, "foo")
+ assert.Equal(t, err, error(fooError{})) // check for no wrapping in type ioError without cleanup error
+
+ err = errext.WithCleanup(nil, "File.Close", barError{})
+ assert.ErrEqual(t, err, "during File.Close(): bar")
+ assert.Equal(t, errors.Is(err, fooError{}), false)
+ assert.Equal(t, errors.Is(err, barError{}), true)
+ assert.Equal(t, errors.Is(err, bazError{}), false)
+
+ err = errext.WithCleanup(fooError{}, "File.Close", barError{})
+ assert.ErrEqual(t, err, "foo (additional error during File.Close(): bar)")
+ assert.Equal(t, errors.Is(err, fooError{}), true)
+ assert.Equal(t, errors.Is(err, barError{}), true)
+ assert.Equal(t, errors.Is(err, bazError{}), false)
+}