aboutsummaryrefslogtreecommitdiff
path: root/testcapture/testcapture.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2026-08-18 13:40:30 +0200
committerStefan Majewsky <majewsky@gmx.net>2026-08-18 13:40:30 +0200
commit5cc0f9db288ffaf44d104974707338d52530cece (patch)
treef0ad530dd072c55c6f46dfea23af993fb31333d4 /testcapture/testcapture.go
parentab5012e0083ff6623ffab78f52f9ea1120d80ffb (diff)
parenta3ccdd9f491c20771cfda343ebebd4b5d0ea6602 (diff)
downloadgo-gg-5cc0f9db288ffaf44d104974707338d52530cece.tar.gz
Merge branch 'microprom'
Diffstat (limited to 'testcapture/testcapture.go')
-rw-r--r--testcapture/testcapture.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/testcapture/testcapture.go b/testcapture/testcapture.go
new file mode 100644
index 0000000..b0c0fac
--- /dev/null
+++ b/testcapture/testcapture.go
@@ -0,0 +1,43 @@
+// SPDX-FileCopyrightText: 2026 Stefan Majewsky <majewsky@gmx.net>
+// SPDX-License-Identifier: Apache-2.0
+
+// Package testcapture contains [Capture], a function that executes test code in a way that captures error messages and side effects without failing the overall test.
+//
+// The main intended use case is testing test assertions where calls to e.g. t.Error() are an expected part of a successful test run.
+package testcapture
+
+import (
+ "context"
+ "io"
+ "testing"
+)
+
+// TestingTB contains all the public functions of [testing.TB] (as of Go 1.26).
+// Functions in this package use this type instead of [testing.TB] because the capture device used by package testcapture cannot implement [testing.TB]: It contains methods that are private to the standard library.
+type TestingTB interface {
+ ArtifactDir() string
+ Attr(key, value string)
+ Chdir(dir string)
+ Cleanup(func())
+ Context() context.Context
+ Error(args ...any)
+ Errorf(format string, args ...any)
+ Fail()
+ Failed() bool
+ FailNow()
+ Fatal(args ...any)
+ Fatalf(format string, args ...any)
+ Helper()
+ Log(args ...any)
+ Logf(format string, args ...any)
+ Name() string
+ Output() io.Writer
+ Setenv(key, value string)
+ Skip(args ...any)
+ Skipf(format string, args ...any)
+ SkipNow()
+ Skipped() bool
+ TempDir() string
+}
+
+var _ TestingTB = testing.TB(nil)