From 58c95cde9b49e0490d6927096517723dbfec9c0e Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Thu, 24 Jul 2025 16:43:50 -0700 Subject: [PATCH] Replace uses of code which requires 1.24+ Signed-off-by: Derek McGowan --- .../network/bridge/bridge_linux_test.go | 4 +++- .../nftablesdoc/nftablesdoc_linux_test.go | 21 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/integration/network/bridge/bridge_linux_test.go b/integration/network/bridge/bridge_linux_test.go index 0c1c5eeb8f..85a89bac13 100644 --- a/integration/network/bridge/bridge_linux_test.go +++ b/integration/network/bridge/bridge_linux_test.go @@ -889,7 +889,9 @@ func TestFirewallBackendSwitch(t *testing.T) { dump = icmd.RunCommand("iptables-save").Combined() dump += icmd.RunCommand("ip6tables-save").Combined() }) - for line := range strings.Lines(dump) { + + // TODO: (When Go 1.24 is min version) Replace with `strings.Lines(dump)`. + for _, line := range strings.Split(dump, "\n") { line = strings.TrimSpace(line) if line == "" { continue diff --git a/integration/network/bridge/nftablesdoc/nftablesdoc_linux_test.go b/integration/network/bridge/nftablesdoc/nftablesdoc_linux_test.go index 3b9e6532ca..0a04d21b33 100644 --- a/integration/network/bridge/nftablesdoc/nftablesdoc_linux_test.go +++ b/integration/network/bridge/nftablesdoc/nftablesdoc_linux_test.go @@ -20,6 +20,7 @@ package nftablesdoc import ( "context" "fmt" + "iter" "net/netip" "os" "path/filepath" @@ -413,7 +414,7 @@ func runNftables(t *testing.T, host networking.Host) map[string]string { // {{index . "map filter-forward-out-jumps"}} var sb strings.Builder - for line := range strings.Lines(out) { + for line := range lines(out) { if line == "\n" || (line != "" && line[0] == '}') { block := sb.String() sb.Reset() @@ -428,6 +429,24 @@ func runNftables(t *testing.T, host networking.Host) map[string]string { return res } +// lines produces a line iterator +// TODO: (When Go 1.24 is min version) Replace with `strings.Lines(out)`. +func lines(s string) iter.Seq[string] { + return func(yield func(string) bool) { + for s != "" { + var line string + if i := strings.IndexByte(s, '\n'); i >= 0 { + line, s = s[:i+1], s[i+1:] + } else { + line, s = s, "" + } + if !yield(line) { + return + } + } + } +} + func generate(t *testing.T, name string, data map[string]string) string { t.Helper() templ, err := template.New(name).ParseFiles(filepath.Join("templates", name))