Skip to content

Commit 09749e3

Browse files
committed
fixup yaegi bug
1 parent 81be506 commit 09749e3

3 files changed

Lines changed: 12 additions & 74 deletions

File tree

.github/workflows/lint-test.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,14 @@ jobs:
5858
permissions:
5959
contents: read
6060
runs-on: ubuntu-24.04
61-
strategy:
62-
matrix:
63-
traefik: [latest]
6461
steps:
6562
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
6663

6764
- name: run
6865
run: go run test.go
6966
working-directory: ./ci
7067
env:
71-
TRAEFIK_TAG: ${{ matrix.traefik }}
68+
TRAEFIK_TAG: latest
7269

7370
- name: cleanup
7471
if: ${{ always() }}

ci/test.go

Lines changed: 2 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package main
22

33
import (
44
"encoding/json"
5-
"errors"
65
"fmt"
76
"io"
87
"log/slog"
@@ -11,7 +10,6 @@ import (
1110
"net/http"
1211
"os"
1312
"os/exec"
14-
"path/filepath"
1513
"strings"
1614
"sync"
1715
"time"
@@ -54,12 +52,6 @@ func main() {
5452
fmt.Printf("Generating %d IPs\n", numIPs)
5553
ips := generateUniquePublicIPs(numIPs)
5654

57-
statePath, err := prepareStateFile(0o777, 0o666)
58-
if err != nil {
59-
slog.Error("Failed to prepare state file", "statePath", statePath, "err", err)
60-
os.Exit(1)
61-
}
62-
6355
fmt.Println("Bringing traefik/nginx online")
6456
runCommand("docker", "compose", "up", "-d")
6557
waitForService("http://localhost")
@@ -68,12 +60,7 @@ func main() {
6860

6961
fmt.Printf("Making sure %d attempt(s) pass\n", rateLimit)
7062
runParallelChecks(ips, rateLimit, "http://localhost")
71-
72-
statePath, err = waitForStateFile(30 * time.Second)
73-
if err != nil {
74-
slog.Error("State file was not created in time", "err", err)
75-
os.Exit(1)
76-
}
63+
statePath := "./tmp/state.json"
7764
runCommand("jq", ".", statePath)
7865

7966
fmt.Printf("Making sure attempt #%d causes a redirect to the challenge page\n", rateLimit+1)
@@ -160,7 +147,7 @@ func runParallelChecks(ips []string, rateLimit int, url string) {
160147
var wg sync.WaitGroup
161148
sem := make(chan struct{}, parallelism)
162149

163-
for i := 0; i < rateLimit; i++ {
150+
for range rateLimit {
164151
for _, ip := range ips {
165152
wg.Add(1)
166153
sem <- struct{}{}
@@ -476,49 +463,3 @@ func firstUsableIPv4FromCIDRs(cidrs []string) (string, error) {
476463

477464
return "", fmt.Errorf("no usable IPv4 found in CIDR list")
478465
}
479-
480-
func waitForStateFile(timeout time.Duration) (string, error) {
481-
paths := []string{
482-
filepath.Join("tmp", "state.json"),
483-
filepath.Join("ci", "tmp", "state.json"),
484-
}
485-
486-
deadline := time.Now().Add(timeout)
487-
for time.Now().Before(deadline) {
488-
for _, p := range paths {
489-
info, err := os.Stat(p)
490-
if err == nil && !info.IsDir() {
491-
return p, nil
492-
}
493-
if err != nil && !errors.Is(err, os.ErrNotExist) {
494-
return "", fmt.Errorf("failed to stat %s: %w", p, err)
495-
}
496-
}
497-
time.Sleep(500 * time.Millisecond)
498-
}
499-
500-
return "", fmt.Errorf("state file not found; checked: %s", strings.Join(paths, ", "))
501-
}
502-
503-
func prepareStateFile(dirMode, fileMode os.FileMode) (string, error) {
504-
p := filepath.Join("tmp", "state.json")
505-
506-
dir := filepath.Dir(p)
507-
if err := os.MkdirAll(dir, dirMode); err != nil {
508-
return "", fmt.Errorf("failed to create state dir %s: %w", dir, err)
509-
}
510-
if err := os.Chmod(dir, dirMode); err != nil {
511-
return "", fmt.Errorf("failed to chmod state dir %s: %w", dir, err)
512-
}
513-
514-
f, err := os.OpenFile(p, os.O_CREATE|os.O_RDWR, fileMode)
515-
if err != nil {
516-
return "", fmt.Errorf("failed to open state file %s: %w", p, err)
517-
}
518-
_ = f.Close()
519-
if err := os.Chmod(p, fileMode); err != nil {
520-
return "", fmt.Errorf("failed to chmod state file %s: %w", p, err)
521-
}
522-
523-
return p, nil
524-
}

internal/helper/google.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"net"
99
"net/http"
1010
"net/netip"
11-
"slices"
11+
"sort"
1212
"sync"
1313
"time"
1414
)
@@ -165,21 +165,21 @@ func ReduceCIDRs(cidrs []string, log *slog.Logger) []string {
165165
prefixes = append(prefixes, prefix.Masked())
166166
}
167167

168-
slices.SortFunc(prefixes, func(a, b netip.Prefix) int {
168+
sort.Slice(prefixes, func(i, j int) bool {
169+
a := prefixes[i]
170+
b := prefixes[j]
171+
169172
aIs4 := a.Addr().Is4()
170173
bIs4 := b.Addr().Is4()
171-
if aIs4 && !bIs4 {
172-
return -1
173-
}
174-
if !aIs4 && bIs4 {
175-
return 1
174+
if aIs4 != bIs4 {
175+
return aIs4
176176
}
177177

178178
if a.Bits() != b.Bits() {
179-
return a.Bits() - b.Bits()
179+
return a.Bits() < b.Bits()
180180
}
181181

182-
return a.Addr().Compare(b.Addr())
182+
return a.Addr().Compare(b.Addr()) < 0
183183
})
184184

185185
reduced := make([]netip.Prefix, 0, len(prefixes))

0 commit comments

Comments
 (0)