fix: added new parse rule for correctly parsing ports without protocol specifier#812
fix: added new parse rule for correctly parsing ports without protocol specifier#812DDtKey merged 1 commit intotestcontainers:mainfrom
Conversation
✅ Deploy Preview for testcontainers-rust ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
| "18332": [], | ||
| "18332/tcp": [ |
There was a problem hiding this comment.
As far as I understand, with this fix we will be able to parse this successfully, but only the last definition will be preserved—since Ports is effectively represented as two separate hash maps.
I'm not entirely sure what the correct behavior should be here. For example, if docker/moby reorders the entries in a future version, we could end up losing the actual HostPort value 🤔
There was a problem hiding this comment.
In my opinion, this is fundamentally wrong behavior in Docker and should be fixed, because there must not be two definitions for a single port. So, I'm aiming to resolve this issue to prevent the application from crashing.
## 🤖 New release
* `testcontainers`: 0.24.0 -> 0.25.0 (⚠ API breaking changes)
### ⚠ `testcontainers` breaking changes
```text
--- failure enum_variant_added: enum variant added on exhaustive enum ---
Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.41.0/src/lints/enum_variant_added.ron
Failed in:
variant ClientError:BuildImage in /tmp/.tmp8ymZuo/testcontainers-rs/testcontainers/src/core/client.rs:71
variant ClientError:BuildImage in /tmp/.tmp8ymZuo/testcontainers-rs/testcontainers/src/core/client.rs:71
variant LogSource:BothStd in /tmp/.tmp8ymZuo/testcontainers-rs/testcontainers/src/core/logs.rs:32
--- failure trait_method_added: pub trait method added ---
Description:
A non-sealed public trait added a new method without a default implementation, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.41.0/src/lints/trait_method_added.ron
Failed in:
trait method testcontainers::core::ImageExt::with_ready_conditions in file /tmp/.tmp8ymZuo/testcontainers-rs/testcontainers/src/core/image/image_ext.rs:184
trait method testcontainers::core::ImageExt::with_health_check in file /tmp/.tmp8ymZuo/testcontainers-rs/testcontainers/src/core/image/image_ext.rs:206
trait method testcontainers::ImageExt::with_ready_conditions in file /tmp/.tmp8ymZuo/testcontainers-rs/testcontainers/src/core/image/image_ext.rs:184
trait method testcontainers::ImageExt::with_health_check in file /tmp/.tmp8ymZuo/testcontainers-rs/testcontainers/src/core/image/image_ext.rs:206
```
<details><summary><i><b>Changelog</b></i></summary><p>
<blockquote>
## [0.25.0] - 2025-07-27
### Details
#### Bug Fixes
- Make tls features optional
([#806](#806))
- Add `Send` trait to `stderr` & `stdout` of `ExecResult`
([#809](#809))
- Added new parse rule for correctly parsing ports without protocol
specifier
([#812](#812))
#### Features
- Allow ready conditions customization via ImageExt
([#794](#794))
- Allow to wait for log line on either stdout or stderr
([#795](#795))
- Add `Container*::exit_code`
([#791](#791))
- Add `Container*::is_running`
([#790](#790))
- Add custom health check support for containers
([#816](#816))
- Introduce container builder api
([#801](#801))
#### Miscellaneous Tasks
- [❗] Update bollard to 1.19.1
([#817](#817))
#### Refactor
- Testimages and tests to use builder API
([#804](#804))
</blockquote>
</p></details>
---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Also edited corresponding test.
It would be great if you could merge it into the 24 release.
Problem
After update of docker from
27.5.1to28.3.0, build 38b7060error related to port parsing occured. Specifically port parsing fails on port without protocol specifier.Maybe this issue will help clarify things.
Here is
docker inspecton runningscylladb/scylla:6.0docker container, created with testcontainers api using different version of docker.docker inspect(27.5.1 version)docker inspect(28.3.0 version)