@@ -3,13 +3,14 @@ package source
3
3
import (
4
4
"os"
5
5
"path"
6
+ "strings"
6
7
"testing"
7
8
8
9
"github.com/stretchr/testify/assert"
9
10
"github.com/stretchr/testify/require"
10
11
)
11
12
12
- func writeOSRelease (root , id , versionID , name , platformID , variantID string ) error {
13
+ func writeOSRelease (root , id , versionID , name , platformID , variantID , idLike string ) error {
13
14
err := os .MkdirAll (path .Join (root , "etc" ), 0755 )
14
15
if err != nil {
15
16
return err
@@ -31,6 +32,9 @@ func writeOSRelease(root, id, versionID, name, platformID, variantID string) err
31
32
if variantID != "" {
32
33
buf += "VARIANT_ID=" + variantID + "\n "
33
34
}
35
+ if idLike != "" {
36
+ buf += "ID_LIKE=" + idLike + "\n "
37
+ }
34
38
35
39
return os .WriteFile (path .Join (root , "etc/os-release" ), []byte (buf ), 0644 )
36
40
}
@@ -52,21 +56,23 @@ func TestLoadInfo(t *testing.T) {
52
56
uefiVendor string
53
57
platformID string
54
58
variantID string
59
+ idLike string
55
60
errorStr string
56
61
}{
57
- {"happy" , "fedora" , "40" , "Fedora Linux" , "fedora" , "platform:f40" , "coreos" , "" },
58
- {"happy-no-uefi" , "fedora" , "40" , "Fedora Linux" , "" , "platform:f40" , "coreos" , "" },
59
- {"happy-no-variant_id" , "fedora" , "40" , "Fedora Linux" , "" , "platform:f40" , "" , "" },
60
- {"sad-no-id" , "" , "40" , "Fedora Linux" , "fedora" , "platform:f40" , "" , "missing ID in os-release" },
61
- {"sad-no-id" , "fedora" , "" , "Fedora Linux" , "fedora" , "platform:f40" , "" , "missing VERSION_ID in os-release" },
62
- {"sad-no-id" , "fedora" , "40" , "" , "fedora" , "platform:f40" , "" , "missing NAME in os-release" },
63
- {"sad-no-id" , "fedora" , "40" , "Fedora Linux" , "fedora" , "" , "" , "missing PLATFORM_ID in os-release" },
62
+ {"happy" , "fedora" , "40" , "Fedora Linux" , "fedora" , "platform:f40" , "coreos" , "" , "" },
63
+ {"happy-no-uefi" , "fedora" , "40" , "Fedora Linux" , "" , "platform:f40" , "coreos" , "" , "" },
64
+ {"happy-no-variant_id" , "fedora" , "40" , "Fedora Linux" , "" , "platform:f40" , "" , "" , "" },
65
+ {"happy-with-id-like" , "centos" , "9" , "CentOS Stream" , "" , "platform:el9" , "" , "rhel fedora" , "" },
66
+ {"sad-no-id" , "" , "40" , "Fedora Linux" , "fedora" , "platform:f40" , "" , "" , "missing ID in os-release" },
67
+ {"sad-no-id" , "fedora" , "" , "Fedora Linux" , "fedora" , "platform:f40" , "" , "" , "missing VERSION_ID in os-release" },
68
+ {"sad-no-id" , "fedora" , "40" , "" , "fedora" , "platform:f40" , "" , "" , "missing NAME in os-release" },
69
+ {"sad-no-id" , "fedora" , "40" , "Fedora Linux" , "fedora" , "" , "" , "" , "missing PLATFORM_ID in os-release" },
64
70
}
65
71
66
72
for _ , c := range cases {
67
73
t .Run (c .desc , func (t * testing.T ) {
68
74
root := t .TempDir ()
69
- require .NoError (t , writeOSRelease (root , c .id , c .versionID , c .name , c .platformID , c .variantID ))
75
+ require .NoError (t , writeOSRelease (root , c .id , c .versionID , c .name , c .platformID , c .variantID , c . idLike ))
70
76
if c .uefiVendor != "" {
71
77
require .NoError (t , createBootupdEFI (root , c .uefiVendor ))
72
78
@@ -85,7 +91,12 @@ func TestLoadInfo(t *testing.T) {
85
91
assert .Equal (t , c .uefiVendor , info .UEFIVendor )
86
92
assert .Equal (t , c .platformID , info .OSRelease .PlatformID )
87
93
assert .Equal (t , c .variantID , info .OSRelease .VariantID )
88
-
94
+ if c .idLike == "" {
95
+ assert .Equal (t , len (info .OSRelease .IDLike ), 0 )
96
+ } else {
97
+ expected := strings .Split (c .idLike , " " )
98
+ assert .Equal (t , expected , info .OSRelease .IDLike )
99
+ }
89
100
})
90
101
}
91
102
}
0 commit comments