Skip to content

Conversation

@mdelapenya
Copy link
Member

@mdelapenya mdelapenya commented Oct 31, 2025

Summary

  • Add String() method to all wait strategy types for human-readable descriptions
  • Update container lifecycle logging to display wait strategy descriptions
  • Improve user experience by showing clear wait conditions instead of raw struct output

Changes

This PR adds String() methods to all wait strategy implementations:

  • HTTPStrategy: Shows HTTP/HTTPS method, port, and path
  • HealthStrategy: Shows 'container to become healthy'
  • LogStrategy: Shows log message/pattern with occurrence count
  • HostPortStrategy: Shows port and check type (listening/mapped/accessible)
  • FileStrategy: Shows file path and matcher condition
  • ExecStrategy: Shows command being executed
  • ExitStrategy: Shows 'container to exit'
  • waitForSQL: Shows database driver, port, and custom query
  • MultiStrategy: Shows all nested strategies
  • NopStrategy: Shows 'custom wait condition'
  • TLSStrategy: Shows certificate files being waited for

Example Output

Before:
Waiting for container to be ready containerID=0fc8e4de4995 image=nginx:alpine Waiting for: &{timeout: deadline:0x140001c7190 Strategies:[0x1400032e1d0]}

After:
Waiting for container to be ready containerID=0fc8e4de4995 image=nginx:alpine strategy='HTTP GET request on port 8080 path /health'

Test plan

  • All existing tests pass
  • Build completes successfully
  • Each wait strategy returns appropriate human-readable string

🤖 Generated with Claude Code

@mdelapenya mdelapenya requested a review from a team as a code owner October 31, 2025 17:08
@netlify
Copy link

netlify bot commented Oct 31, 2025

Deploy Preview for testcontainers-go ready!

Name Link
🔨 Latest commit b27b748
🔍 Latest deploy log https://app.netlify.com/projects/testcontainers-go/deploys/69088657d0de230008532a51
😎 Deploy Preview https://deploy-preview-3461--testcontainers-go.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link

coderabbitai bot commented Oct 31, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Summary by CodeRabbit

  • New Features
    • All container wait strategies now provide human-readable descriptions in logs and diagnostic output, clearly indicating what the system is waiting for—including port accessibility, health checks, file existence, and HTTP endpoints.
    • Enhanced debugging and troubleshooting experience with meaningful strategy descriptions replacing generic representations, making container readiness conditions more transparent and easier to understand.

Walkthrough

Adds String() methods to many wait strategies to produce human-readable descriptions, updates lifecycle readiness logging to use those descriptions, and changes WaitUntilReady invocation to pass the DockerContainer receiver. (≤50 words)

Changes

Cohort / File(s) Summary
Aggregate strategy
wait/all.go
Added imports (fmt, strings) and (*MultiStrategy).String() returning "all of: (none)" or "all of: [..]", skipping nil strategies and using fmt.Stringer when available.
Exec / Exit / Nop / Health
wait/exec.go, wait/exit.go, wait/nop.go, wait/health.go
Added String() methods: ExecStrategy (describes command and args), ExitStrategy ("container to exit"), NopStrategy ("custom wait condition"), HealthStrategy ("container to become healthy").
File / Log / SQL / TLS
wait/file.go, wait/log.go, wait/sql.go, wait/tls.go
Added String() methods: FileStrategy (file name and optional matcher), LogStrategy (message/pattern with occurrence), waitForSQL (port/default and optional query), TLSStrategy (lists rootCAs and cert/key files or "TLS certificates"); tls.go adds strings import.
Host port / HTTP
wait/host_port.go, wait/http.go
Added String() methods: HostPortStrategy (port description and readiness variant based on skipInternalCheck/skipExternalCheck), HTTPStrategy (protocol, method, port, and path).
Readiness hook update
lifecycle.go
Compute strategyDesc via fmt.Stringer when available, log "Waiting for container to be ready" with (containerID, image, strategyDesc), and call WaitUntilReady with the DockerContainer receiver.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Hook as readinessHook
  participant Logger as logger
  participant Strat as WaitStrategy
  participant DC as DockerContainer

  Hook->>Strat: if strategy != nil
  note right of Strat #EEF6FF: use fmt.Stringer.String() if implemented
  Strat-->>Hook: strategyDesc
  Hook->>Logger: log "Waiting for container to be ready" (containerID, image, strategyDesc)
  Hook->>DC: DC.WaitUntilReady(ctx, strategy)
  DC->>Strat: WaitUntilReady(ctx, container)
  Strat-->>DC: result / error
  DC-->>Hook: done / error
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Repetitive, localized additions of String() across many strategy types; single small change in lifecycle.go.
  • Pay attention to:
    • Correct nil handling and fmt.Stringer usage in wait/all.go.
    • lifecycle.go: correct receiver/argument when calling WaitUntilReady.
    • Accurate default values and phrasing in host_port.go, http.go, log.go, sql.go, and tls.go.

Poem

🐰 I gave each wait a tiny voice,

Ports and logs and files rejoice,
Health and execs now proudly say,
What they wait for, come what may,
Hop — readiness speaks today!

Pre-merge checks and finishing touches

✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title 'feat(wait): add human-readable String() methods to all wait strategies' is clear, specific, and directly summarizes the main objective of the changeset. It accurately reflects that String() methods are being added to wait strategy types for human readability, which aligns with the primary purpose shown across all modified files.
Description check ✅ Passed The pull request description is well-structured and directly related to the changeset. It provides a clear summary of changes, lists specific String() method implementations for each wait strategy type, shows concrete examples with before/after logging output, and includes a test plan. The description accurately conveys the purpose and scope of adding human-readable String() methods to all wait strategies.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4065930 and b27b748.

📒 Files selected for processing (1)
  • lifecycle.go (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • lifecycle.go
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
  • GitHub Check: lint (modules/valkey) / lint: modules/valkey
  • GitHub Check: lint (modules/yugabytedb) / lint: modules/yugabytedb
  • GitHub Check: lint (modules/solace) / lint: modules/solace
  • GitHub Check: lint (modules/dockermcpgateway) / lint: modules/dockermcpgateway
  • GitHub Check: lint (modules/minio) / lint: modules/minio
  • GitHub Check: lint (modules/surrealdb) / lint: modules/surrealdb
  • GitHub Check: lint (modules/mongodb) / lint: modules/mongodb
  • GitHub Check: lint (modules/couchbase) / lint: modules/couchbase
  • GitHub Check: lint (modules/rabbitmq) / lint: modules/rabbitmq
  • GitHub Check: lint (modules/mysql) / lint: modules/mysql
  • GitHub Check: lint (modules/k3s) / lint: modules/k3s
  • GitHub Check: lint (modules/arangodb) / lint: modules/arangodb
  • GitHub Check: lint (examples/nginx) / lint: examples/nginx
  • GitHub Check: lint (modules/vault) / lint: modules/vault
  • GitHub Check: lint (modules/meilisearch) / lint: modules/meilisearch
  • GitHub Check: lint (modules/mssql) / lint: modules/mssql
  • GitHub Check: lint (modules/grafana-lgtm) / lint: modules/grafana-lgtm
  • GitHub Check: lint (modules/clickhouse) / lint: modules/clickhouse
  • GitHub Check: lint (modules/elasticsearch) / lint: modules/elasticsearch
  • GitHub Check: Analyze (go)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@mdelapenya mdelapenya self-assigned this Oct 31, 2025
@mdelapenya mdelapenya added the chore Changes that do not impact the existing functionality label Oct 31, 2025
@mdelapenya mdelapenya requested a review from Copilot October 31, 2025 17:09
@echo "Running $* tests..."
gotestsum \
--format short-verbose \
--rerun-fails=5 \
Copy link
Member Author

Choose a reason for hiding this comment

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

Added by mistake, reverting. I'll submit a separated PR for this.

Copy link

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 implements the fmt.Stringer interface for all wait strategies by adding String() methods that return human-readable descriptions of each strategy's configuration. This enhances debugging and logging capabilities by providing clear, descriptive output for each wait strategy.

Key changes:

  • Added String() methods to all strategy types (HTTP, SQL, TLS, HostPort, Log, File, Exec, Exit, Health, Nop, and MultiStrategy)
  • Imported necessary packages (fmt, strings) where needed
  • Removed --rerun-fails=5 flag from test configuration

Reviewed Changes

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

Show a summary per file
File Description
wait/all.go Implements String() for MultiStrategy with recursive formatting of nested strategies
wait/exec.go Implements String() for ExecStrategy showing the command being executed
wait/exit.go Implements String() for ExitStrategy with static description
wait/file.go Implements String() for FileStrategy showing file path and optional matcher
wait/health.go Implements String() for HealthStrategy with static description
wait/host_port.go Implements String() for HostPortStrategy with port and check type details
wait/http.go Implements String() for HTTPStrategy showing protocol, method, port, and path
wait/log.go Implements String() for LogStrategy showing log type and occurrence count
wait/nop.go Implements String() for NopStrategy with static description
wait/sql.go Implements String() for waitForSQL showing port, driver, and optional query
wait/tls.go Implements String() for TLSStrategy showing certificate and key file paths
commons-test.mk Removes --rerun-fails=5 flag from test runner configuration

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

@mdelapenya
Copy link
Member Author

@copilot add a commit to this pull request to apply changes based on the comments in this thread

Add String() method to all wait strategy types to provide human-readable
descriptions that are displayed in container lifecycle logs. This improves
the user experience by showing clear wait conditions instead of raw struct
output.

Changes:
- Add String() method to HTTPStrategy, HealthStrategy, LogStrategy,
  HostPortStrategy, FileStrategy, ExecStrategy, ExitStrategy,
  waitForSQL, MultiStrategy, NopStrategy, and TLSStrategy
- Update lifecycle logging to use strategy String() output
- Each strategy provides contextual information (ports, paths, conditions)

Example output changes:
Before: Waiting for: &{timeout:<nil> deadline:0x140001c7190 Strategies:[0x1400032e1d0]}
After: Waiting for container to be ready strategy="HTTP GET request on port 8080 path /health"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@mdelapenya mdelapenya force-pushed the wait-strategy-stringer branch from 9e7fc5c to ca83ad1 Compare November 3, 2025 07:04
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 70d5fd5 and ca83ad1.

📒 Files selected for processing (12)
  • commons-test.mk (0 hunks)
  • wait/all.go (2 hunks)
  • wait/exec.go (2 hunks)
  • wait/exit.go (1 hunks)
  • wait/file.go (1 hunks)
  • wait/health.go (1 hunks)
  • wait/host_port.go (1 hunks)
  • wait/http.go (1 hunks)
  • wait/log.go (1 hunks)
  • wait/nop.go (1 hunks)
  • wait/sql.go (1 hunks)
  • wait/tls.go (2 hunks)
💤 Files with no reviewable changes (1)
  • commons-test.mk
🚧 Files skipped from review as they are similar to previous changes (8)
  • wait/http.go
  • wait/all.go
  • wait/exit.go
  • wait/file.go
  • wait/health.go
  • wait/tls.go
  • wait/host_port.go
  • wait/sql.go
🧰 Additional context used
🧬 Code graph analysis (1)
wait/log.go (1)
logconsumer.go (1)
  • Log (14-17)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (19)
  • GitHub Check: lint (modules/weaviate) / lint: modules/weaviate
  • GitHub Check: lint (modules/influxdb) / lint: modules/influxdb
  • GitHub Check: lint (modules/milvus) / lint: modules/milvus
  • GitHub Check: lint (modules/mongodb) / lint: modules/mongodb
  • GitHub Check: lint (modules/dind) / lint: modules/dind
  • GitHub Check: lint (modules/scylladb) / lint: modules/scylladb
  • GitHub Check: lint (modules/yugabytedb) / lint: modules/yugabytedb
  • GitHub Check: lint (modules/inbucket) / lint: modules/inbucket
  • GitHub Check: lint (modules/databend) / lint: modules/databend
  • GitHub Check: lint (modules/gcloud) / lint: modules/gcloud
  • GitHub Check: lint (modules/k3s) / lint: modules/k3s
  • GitHub Check: lint (modules/neo4j) / lint: modules/neo4j
  • GitHub Check: lint (modules/mssql) / lint: modules/mssql
  • GitHub Check: lint (modules/qdrant) / lint: modules/qdrant
  • GitHub Check: lint (modules/pinecone) / lint: modules/pinecone
  • GitHub Check: lint (modules/arangodb) / lint: modules/arangodb
  • GitHub Check: lint (modules/couchbase) / lint: modules/couchbase
  • GitHub Check: lint (modules/dockermodelrunner) / lint: modules/dockermodelrunner
  • GitHub Check: Analyze (go)
🔇 Additional comments (3)
wait/log.go (1)

126-138: LGTM!

The String() implementation is clear and provides useful context. The conditional logic for "log message" vs "log pattern" and the optional occurrence count make the output informative without being verbose.

wait/nop.go (1)

36-38: LGTM!

The generic description "custom wait condition" is appropriate for NopStrategy since the actual wait behavior is user-defined via the waitUntilReady function parameter.

wait/exec.go (1)

5-5: LGTM!

The fmt import is necessary for the new String() method implementation.

mdelapenya and others added 4 commits November 3, 2025 10:55
Modify ExecStrategy.String() to only show the command name and argument
count instead of full command with all arguments. This prevents sensitive
information (passwords, API tokens, credentials) from being exposed in
container lifecycle logs.

Changes:
- Show only command name when no arguments present
- Show command name with argument count when arguments present
- Never expose actual argument values

Example output:
- Before: exec command ["mysql" "-u" "root" "-pSecretPass"]
- After: exec command "mysql" with 3 arguments

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Update container readiness logging to use structured logging format and
leverage the new String() methods on wait strategies. This provides
human-readable strategy descriptions in logs instead of raw Go struct
output.

Changes:
- Extract strategy to variable for type assertion
- Check if strategy implements fmt.Stringer interface
- Use strategy.String() for description when available
- Fall back to "unknown strategy" if String() not implemented
- Convert to structured logging with key-value pairs
- Improves log readability and parseability

Example output:
Before: ⏳ Waiting for container id abc123 image: nginx. Waiting for: &{timeout:<nil> deadline:0x140001c7190 Strategies:[0x1400032e1d0]}
After: Waiting for container to be ready containerID=abc123 image=nginx strategy="HTTP GET request on port 8080 path /health"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Remove special case that would omit the "all of:" prefix when only one
strategy remains after filtering nils. Always include the prefix to make
it clear that a MultiStrategy (ForAll) is being used, improving clarity
and consistency in logs.

Changes:
- Remove single-strategy special case from MultiStrategy.String()
- Always return "all of: [...]" format regardless of strategy count
- Add comment explaining the rationale

Example output:
Before: log message 'ready' (when only 1 strategy)
After: all of: [log message 'ready']

This makes it explicit that ForAll() is being used, which helps with
debugging and understanding wait behavior.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5d39d10 and 98942f7.

📒 Files selected for processing (2)
  • lifecycle.go (1 hunks)
  • wait/all.go (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • wait/all.go
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: mdelapenya
Repo: testcontainers/testcontainers-go PR: 3319
File: modules/arangodb/arangodb.go:46-57
Timestamp: 2025-09-29T13:57:14.636Z
Learning: In testcontainers-go ArangoDB module, the wait strategy combines port listening check with HTTP readiness check using wait.ForAll - both strategies are required and complementary, not redundant.
📚 Learning: 2025-09-29T13:57:14.636Z
Learnt from: mdelapenya
Repo: testcontainers/testcontainers-go PR: 3319
File: modules/arangodb/arangodb.go:46-57
Timestamp: 2025-09-29T13:57:14.636Z
Learning: In testcontainers-go ArangoDB module, the wait strategy combines port listening check with HTTP readiness check using wait.ForAll - both strategies are required and complementary, not redundant.

Applied to files:

  • lifecycle.go
🧬 Code graph analysis (1)
lifecycle.go (1)
log/logger.go (1)
  • Printf (47-49)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
  • GitHub Check: lint (modules/cassandra) / lint: modules/cassandra
  • GitHub Check: lint (modules/couchbase) / lint: modules/couchbase
  • GitHub Check: lint (modules/nebulagraph) / lint: modules/nebulagraph
  • GitHub Check: lint (modules/dind) / lint: modules/dind
  • GitHub Check: lint (modules/openfga) / lint: modules/openfga
  • GitHub Check: lint (modules/pinecone) / lint: modules/pinecone
  • GitHub Check: lint (modules/mssql) / lint: modules/mssql
  • GitHub Check: lint (modules/socat) / lint: modules/socat
  • GitHub Check: lint (modules/yugabytedb) / lint: modules/yugabytedb
  • GitHub Check: lint (modules/mysql) / lint: modules/mysql
  • GitHub Check: lint (modules/openldap) / lint: modules/openldap
  • GitHub Check: lint (modules/dolt) / lint: modules/dolt
  • GitHub Check: lint (modules/aerospike) / lint: modules/aerospike
  • GitHub Check: lint (modules/mockserver) / lint: modules/mockserver
  • GitHub Check: lint (modules/minio) / lint: modules/minio
  • GitHub Check: lint (modules/compose) / lint: modules/compose
  • GitHub Check: lint (modules/k3s) / lint: modules/k3s
  • GitHub Check: lint (modules/artemis) / lint: modules/artemis
  • GitHub Check: lint (modules/chroma) / lint: modules/chroma
  • GitHub Check: Analyze (go)

mdelapenya and others added 2 commits November 3, 2025 11:10
Use proper singular/plural grammar when displaying argument count:
- "exec command 'foo'" when no arguments
- "exec command 'foo' with 1 argument" when one argument
- "exec command 'foo' with N arguments" when multiple arguments

Also adds comment explaining security consideration to avoid exposing
sensitive data in command arguments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add standard Go documentation comments to all String() method
implementations across wait strategies for better code documentation
and godoc generation.

Changes:
- Add "String returns a human-readable description of the wait strategy"
  comment to all String() methods in:
  - ExecStrategy
  - HealthStrategy
  - LogStrategy
  - HostPortStrategy
  - FileStrategy
  - ExitStrategy
  - NopStrategy
  - waitForSQL
  - TLSStrategy
  - MultiStrategy

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
wait/tls.go (1)

103-120: LGTM with a minor formatting suggestion.

The String() method correctly builds a description from the TLS configuration elements. File paths are appropriately included for debugging purposes.

Minor suggestion: Consider using consistent formatting for file paths. Currently line 108 uses %v for rootFiles while line 112 uses %q for cert/key files. Using %q consistently would provide uniform output, though the current approach is acceptable.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 98942f7 and 4065930.

📒 Files selected for processing (10)
  • wait/all.go (2 hunks)
  • wait/exec.go (2 hunks)
  • wait/exit.go (1 hunks)
  • wait/file.go (1 hunks)
  • wait/health.go (1 hunks)
  • wait/host_port.go (1 hunks)
  • wait/log.go (1 hunks)
  • wait/nop.go (1 hunks)
  • wait/sql.go (1 hunks)
  • wait/tls.go (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (7)
  • wait/sql.go
  • wait/host_port.go
  • wait/exit.go
  • wait/nop.go
  • wait/file.go
  • wait/log.go
  • wait/all.go
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: mdelapenya
Repo: testcontainers/testcontainers-go PR: 3319
File: modules/arangodb/arangodb.go:46-57
Timestamp: 2025-09-29T13:57:14.636Z
Learning: In testcontainers-go ArangoDB module, the wait strategy combines port listening check with HTTP readiness check using wait.ForAll - both strategies are required and complementary, not redundant.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (10)
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
  • GitHub Check: test (1.24.x, modulegen) / test: modulegen/1.24.x
🔇 Additional comments (2)
wait/health.go (1)

63-66: LGTM!

The String() method provides a clear, concise description of the health wait strategy.

wait/exec.go (1)

80-94: LGTM - Good security consideration!

The String() method correctly avoids exposing potentially sensitive argument values by only displaying the command name and argument count. This addresses the security concern from the previous review.

@mdelapenya mdelapenya merged commit bddd936 into testcontainers:main Nov 3, 2025
213 checks passed
@mdelapenya mdelapenya deleted the wait-strategy-stringer branch November 3, 2025 11:04
mdelapenya added a commit that referenced this pull request Nov 3, 2025
* main:
  chore(deps): bump github.com/docker/docker from 28.3.3+incompatible to 28.5.1+incompatible (#3464)
  feat(wait): add human-readable String() methods to all wait strategies (#3461)
  chore(deps): bump mkdocs-include-markdown-plugin from 7.1.6 to 7.2.0 (#3463)
  chore(deps): bump actions/setup-go from 5.4.0 to 6.0.0 (#3462)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Changes that do not impact the existing functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant