1package agent
2
3import "testing"
4
5func TestVersionLess(t *testing.T) {
6 pseudo := "0.3.35-0.20260809165004-9e3c28d4b65"
7 cases := []struct {
8 name string
9 a, b string
10 want bool
11 }{
12 {name: "older release", a: "0.3.33", b: "0.3.34", want: true},
13 {name: "newer release", a: "0.3.35", b: "0.3.34", want: false},
14 {name: "pseudo after prior release", a: pseudo, b: "0.3.34", want: false},
15 {name: "pseudo before final release", a: pseudo, b: "0.3.35", want: true},
16 {name: "prior release before pseudo", a: "0.3.34", b: pseudo, want: true},
17 {name: "decorated build", a: "0.3.33 (abc1234, 2026-08-09)", b: "0.3.34", want: true},
18 {name: "invalid current", a: "not-a-version", b: "0.3.34", want: false},
19 }
20 for _, tc := range cases {
21 t.Run(tc.name, func(t *testing.T) {
22 if got := versionLess(tc.a, tc.b); got != tc.want {
23 t.Fatalf("versionLess(%q, %q) = %v, want %v", tc.a, tc.b, got, tc.want)
24 }
25 })
26 }
27}
28
29func TestBuildInfoDoesNotOfferPseudoVersionDowngrade(t *testing.T) {
30 current := "0.3.35-0.20260809165004-9e3c28d4b65"
31 info := buildInfo(current, "v0.3.34", "https://example.com/release")
32 if info.Available {
33 t.Fatalf("buildInfo(%q, %q) offered a downgrade", current, info.Latest)
34 }
35}