Skip to content

fix mixed assertion libraries in tests#13689

Merged
glours merged 1 commit intodocker:mainfrom
thaJeztah:unify_asserts
Mar 31, 2026
Merged

fix mixed assertion libraries in tests#13689
glours merged 1 commit intodocker:mainfrom
thaJeztah:unify_asserts

Conversation

@thaJeztah
Copy link
Copy Markdown
Member

Before this, assertion libraries were mixed, sometimes even in the same file.

git grep -l '"gotest.tools/v3/' | wc -l
75
git grep -l '"github.com/stretchr/testify' | wc -l
24

What I did

Related issue

(not mandatory) A picture of a cute animal, if possible in relation to what you did

@thaJeztah thaJeztah force-pushed the unify_asserts branch 7 times, most recently from 2b7112a to 0344090 Compare March 30, 2026 15:35
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 30, 2026

Codecov Report

❌ Patch coverage is 0% with 8 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
pkg/utils/safebuffer.go 0.00% 8 Missing ⚠️

📢 Thoughts on this report? Let us know!

Comment on lines -67 to +84
require.Eventuallyf(t, func() bool {
poll.WaitOn(t, func(logt poll.LogT) poll.Result {
bufContents.Reset()
b.m.Lock()
defer b.m.Unlock()
if _, err := b.b.WriteTo(&bufContents); err != nil {
require.FailNowf(t, "Failed to copy from buffer",
"Error: %v", err)
return poll.Error(fmt.Errorf("failed to copy from buffer. Error: %w", err))
}
return strings.Contains(bufContents.String(), v)
}, 2*time.Second, 20*time.Millisecond,
"Buffer did not contain %q\n============\n%s\n============",
v, &bufContents)
if !strings.Contains(bufContents.String(), v) {
return poll.Continue(
"buffer does not contain %q\n============\n%s\n============",
v, &bufContents)
}
return poll.Success()
},
poll.WithTimeout(2*time.Second),
poll.WithDelay(20*time.Millisecond),
)
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeCov is complaining about a test-utility, but probably doesn't ignore it, because it's not in a _test.go

Before this, assertion libraries were mixed, sometimes
even in the same file.

    git grep -l '"gotest.tools/v3/' | wc -l
    75
    git grep -l '"github.com/stretchr/testify' | wc -l
    24

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztah thaJeztah marked this pull request as ready for review March 31, 2026 15:11
@thaJeztah thaJeztah requested a review from a team as a code owner March 31, 2026 15:11
@thaJeztah thaJeztah requested review from Copilot, glours and ndeloof March 31, 2026 15:11
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR standardizes the Go test assertion library usage across the repository by migrating tests away from stretchr/testify to gotest.tools/v3/assert, and tightens lint enforcement to prevent reintroducing testify.

Changes:

  • Replace testify/assert + testify/require usages in multiple unit/e2e tests with gotest.tools/v3/assert (and assert/cmp where needed).
  • Remove github.com/stretchr/testify from go.mod and add golangci-lint forbidigo rules to forbid testify imports going forward.
  • Adjust a few tests that depended on testify-specific helpers (e.g., element matching) by sorting or switching to deep-equality/regex comparisons.

Reviewed changes

Copilot reviewed 31 out of 31 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
pkg/watch/watcher_naive_test.go Switch require assertions to gotest.tools assert.NilError.
pkg/watch/paths_test.go Switch to gotest.tools asserts; update Windows path literal; use ErrorContains.
pkg/watch/notify_test.go Replace testify asserts with gotest.tools equivalents.
pkg/watch/ephemeral_test.go Replace testify formatting assertions with gotest.tools NilError/Assert.
pkg/utils/set_test.go Replace testify checks; sort set elements before deep-equality where needed.
pkg/utils/safebuffer.go Replace require.Eventuallyf with poll.WaitOn for eventual assertions.
pkg/e2e/watch_test.go Replace require usage with assert.NilError.
pkg/e2e/up_test.go Replace require usage with gotest.tools assertions.
pkg/e2e/start_stop_test.go Replace testify regex assertions with gotest.tools assert/cmp regex comparison.
pkg/e2e/scale_test.go Remove testify failure helper usage; fail via t.Fatalf.
pkg/e2e/restart_test.go Replace testify regex assertions with gotest.tools assert/cmp.
pkg/e2e/ps_test.go Replace testify assert/require with gotest.tools asserts + assert/cmp.
pkg/e2e/pause_test.go Replace require usage; add extra error-type assertion for network error.
pkg/e2e/networks_test.go Replace strings.Contains assertion with gotest.tools is.Contains.
pkg/e2e/framework.go Replace require usage with gotest.tools (and t.Fatal in one spot).
pkg/e2e/compose_test.go Replace testify regex assertion with gotest.tools assert/cmp.
pkg/e2e/build_test.go Replace require usage with gotest.tools assert/cmp contains.
pkg/e2e/assert.go Replace require usage with gotest.tools assertions + assert/cmp.
pkg/compose/watch_test.go Replace ElementsMatch with deterministic sort + assert.DeepEqual.
pkg/compose/viz_test.go Replace testify assertions with gotest.tools asserts + assert/cmp.
pkg/compose/logs_test.go Replace testify assertions with gotest.tools asserts + assert/cmp.
pkg/compose/loader_test.go Replace testify assertions with gotest.tools asserts + assert/cmp.
pkg/compose/dependencies_test.go Replace testify assertions with gotest.tools asserts + assert/cmp.
internal/tracing/tracing_test.go Replace require with gotest.tools assertions.
internal/tracing/attributes_test.go Replace require with gotest.tools assertions.
internal/desktop/client_test.go Replace require with gotest.tools assertions.
cmd/compose/viz_test.go Replace testify assertions with gotest.tools asserts; adjust error expectation.
cmd/compose/top_test.go Replace testify assertions with gotest.tools deep-equality and NilError.
cmd/compose/options_test.go Replace require assertions with gotest.tools assertions.
go.mod Remove testify (and related indirect deps) from module requirements.
.golangci.yml Add forbidigo rules to forbid testify imports (assert/require/suite).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


src, err := os.Open(sourceFile)
require.NoError(t, err, "Failed to open source file: %s")
assert.NilError(t, err, "Failed to open source file: %s")
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The failure message uses a %s format verb but no argument is provided, so the output will show a formatting "(MISSING)" placeholder. Pass sourceFile as the formatting argument (or remove the verb) so the error message is meaningful.

Suggested change
assert.NilError(t, err, "Failed to open source file: %s")
assert.NilError(t, err, "Failed to open source file: %s", sourceFile)

Copilot uses AI. Check for mistakes.
Comment on lines 43 to 48
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
github.com/spf13/cobra v1.10.2
github.com/spf13/pflag v1.0.10
github.com/stretchr/testify v1.11.1
github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0
go.opentelemetry.io/otel v1.42.0
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

go.mod removes github.com/stretchr/testify (and related indirect deps), but go.sum is not updated in this PR. The repo's vendor-validate target runs go mod tidy and fails if go.sum differs, so please run make go-mod-tidy (or go mod tidy) and commit the resulting go.sum changes.

Copilot uses AI. Check for mistakes.
@glours glours merged commit 92a7ac1 into docker:main Mar 31, 2026
47 of 48 checks passed
@thaJeztah thaJeztah deleted the unify_asserts branch March 31, 2026 16:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants