From 7ead3465c7fdf564ae367e1169aeb68ced9267c8 Mon Sep 17 00:00:00 2001 From: Stefan Majewsky Date: Wed, 29 Jul 2026 21:56:06 +0200 Subject: add package errext --- errext/cleanup_test.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 errext/cleanup_test.go (limited to 'errext/cleanup_test.go') 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 +// 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) +} -- cgit v1.3.1