@@ -9,6 +9,18 @@ import (
99 "testing"
1010)
1111
12+ // Based on the fact Go 1.18+ supports Linux >= 2.6.32, and
13+ // - CAP_MAC_ADMIN (33) was added in 2.6.25;
14+ // - CAP_SYSLOG (34) was added in 2.6.38;
15+ // - CAP_CHECKPOINT_RESTORE (40) was added in 5.9, and it is
16+ // the last added capability as of today (July 2024);
17+ //
18+ // LastCap return value should be between minLastCap and maxLastCap.
19+ const (
20+ minLastCap = CAP_MAC_ADMIN
21+ maxLastCap = CAP_CHECKPOINT_RESTORE
22+ )
23+
1224func TestLastCap (t * testing.T ) {
1325 last , err := LastCap ()
1426 switch runtime .GOOS {
@@ -24,21 +36,35 @@ func TestLastCap(t *testing.T) {
2436 }
2537
2638 // Sanity checks (Linux only).
27- //
28- // Based on the fact Go 1.18+ supports Linux >= 2.6.32, and
29- // - CAP_MAC_ADMIN (33) was added in 2.6.25;
30- // - CAP_SYSLOG (34) was added in 2.6.38;
31- // - CAP_CHECKPOINT_RESTORE (40) was added in 5.9, and it is
32- // the last added capability as of today (July 2024);
33- // LastCap return value should be between minCap and maxCap.
34- minCap := CAP_MAC_ADMIN
35- maxCap := CAP_CHECKPOINT_RESTORE
36- if last < minCap {
39+ if last < minLastCap {
3740 t .Fatalf ("LastCap returned %d (%s), expected >= %d (%s)" ,
38- last , last , minCap , minCap )
41+ last , last , minLastCap , minLastCap )
3942 }
40- if last > maxCap {
43+ if last > maxLastCap {
4144 t .Fatalf ("LastCap returned %d, expected <= %d (%s). Package needs to be updated." ,
42- last , maxCap , maxCap )
45+ last , maxLastCap , maxLastCap )
46+ }
47+ }
48+
49+ func TestListSupported (t * testing.T ) {
50+ list , err := ListSupported ()
51+ switch runtime .GOOS {
52+ case "linux" :
53+ if err != nil {
54+ t .Fatal (err )
55+ }
56+ default :
57+ if err == nil {
58+ t .Fatal (runtime .GOOS , ": want error, got nil" )
59+ }
60+ }
61+ if runtime .GOOS != "linux" {
62+ return
63+ }
64+ // Sanity check (Linux only).
65+ t .Logf ("got +%v (len %d)" , list , len (list ))
66+ minLen := int (minLastCap ) + 1
67+ if len (list ) < minLen {
68+ t .Fatalf ("result is too short (got %d, want %d): +%v" , len (list ), minLen , list )
4369 }
4470}
0 commit comments