Skip to content

Commit f86f73d

Browse files
committed
uname: add KernelVersionGE
...together with some simple tests. This is a subset of https://go-review.googlesource.com/c/go/+/700796 (currently in review). Signed-off-by: Kir Kolyshkin <[email protected]>
1 parent 8d8524b commit f86f73d

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

uname/kernel_version_ge.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Copyright 2025 The uname Authors.
2+
3+
package uname
4+
5+
// KernelVersionGE checks if the running kernel version
6+
// is greater than or equal to the provided version.
7+
func KernelVersionGE(x, y int) bool {
8+
xx, yy := KernelVersion()
9+
10+
return xx > x || (xx == x && yy >= y)
11+
}

uname/kernel_version_ge_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// Copyright 2025 The uname Authors.
2+
3+
package uname
4+
5+
import (
6+
"testing"
7+
)
8+
9+
func TestKernelVersionGE(t *testing.T) {
10+
major, minor := KernelVersion()
11+
t.Logf("Running on kernel %d.%d", major, minor)
12+
13+
tests := []struct {
14+
name string
15+
x, y int
16+
want bool
17+
}{
18+
{
19+
name: "current version equals itself",
20+
x: major,
21+
y: minor,
22+
want: true,
23+
},
24+
{
25+
name: "older major version",
26+
x: major - 1,
27+
y: 0,
28+
want: true,
29+
},
30+
{
31+
name: "same major, older minor version",
32+
x: major,
33+
y: minor - 1,
34+
want: true,
35+
},
36+
{
37+
name: "newer major version",
38+
x: major + 1,
39+
y: 0,
40+
want: false,
41+
},
42+
{
43+
name: "same major, newer minor version",
44+
x: major,
45+
y: minor + 1,
46+
want: false,
47+
},
48+
{
49+
name: "min version (0.0)",
50+
x: 0,
51+
y: 0,
52+
want: true,
53+
},
54+
}
55+
56+
for _, tt := range tests {
57+
t.Run(tt.name, func(t *testing.T) {
58+
got := KernelVersionGE(tt.x, tt.y)
59+
if got != tt.want {
60+
t.Errorf("KernelVersionGE(%d, %d): got %v, want %v", tt.x, tt.y, got, tt.want)
61+
}
62+
})
63+
}
64+
}

0 commit comments

Comments
 (0)