Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
fix: sort results of nerdctl ps and nerdctl compose ps alphabetic…
…ally

The current implementation can cause the unit test for `FormatPorts` in
`pkg/formatter` to fail intermittently, as shown below:

```bash
$ go test -run TestFormatPorts -count 10
--- FAIL: TestFormatPorts (0.00s)
	--- FAIL: TestFormatPorts/mixed_tcp_and_udp_with_consecutive_ports_on_anyhost (0.00s)
		formatter_test.go:191: assertion failed: 0.0.0.0:3000-3001->8080-8081/tcp, 0.0.0.0:3002-3003->8082-8083/udp (tt.expected string) != 0.0.0.0:3002-3003->8082-8083/udp, 0.0.0.0:3000-3001->8080-8081/tcp (result string)
--- FAIL: TestFormatPorts (0.00s)
	--- FAIL: TestFormatPorts/mixed_tcp_and_udp_with_consecutive_ports_on_anyhost (0.00s)
		formatter_test.go:191: assertion failed: 0.0.0.0:3000-3001->8080-8081/tcp, 0.0.0.0:3002-3003->8082-8083/udp (tt.expected string) != 0.0.0.0:3002-3003->8082-8083/udp, 0.0.0.0:3000-3001->8080-8081/tcp (result string)
--- FAIL: TestFormatPorts (0.00s)
	--- FAIL: TestFormatPorts/mixed_tcp_and_udp_with_consecutive_ports_on_anyhost (0.00s)
		formatter_test.go:191: assertion failed: 0.0.0.0:3000-3001->8080-8081/tcp, 0.0.0.0:3002-3003->8082-8083/udp (tt.expected string) != 0.0.0.0:3002-3003->8082-8083/udp, 0.0.0.0:3000-3001->8080-8081/tcp (result string)
FAIL
exit status 1
FAIL	github.com/containerd/nerdctl/v2/pkg/formatter	0.005s
```

This occurs because the `FormatPorts` function iterates over a map, whose
iteration order is non-deterministic.
As a result, the output string may vary between test runs.

This behavior has been reported in issue/#4626.

To address this, this commit ensures that the string returned by
`FormatPorts` is sorted alphabetically, resulting in stable and predictable
output.

Signed-off-by: Hayato Kiwata <[email protected]>
  • Loading branch information
haytok committed Dec 1, 2025
commit 3baeb0fee0e0ede2434a919b3ec1019260d92e04
2 changes: 2 additions & 0 deletions pkg/formatter/formatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@ func FormatPorts(ports []cni.PortMapping) string {
)
}

sort.Strings(displayPorts)

return strings.Join(displayPorts, ", ")
}

Expand Down
Loading