mirror of
https://github.com/kidoman/embd
synced 2025-01-03 10:31:36 +01:00
fixed parsing of the raspberry pi's kernel version
This commit is contained in:
parent
02defd2cc0
commit
d0cc5f4e35
@ -30,25 +30,34 @@ func nodeName() (string, error) {
|
||||
return execOutput("uname", "-n")
|
||||
}
|
||||
|
||||
func parseVersion(str string) (major, minor, patch int, err error) {
|
||||
parts := strings.Split(str, ".")
|
||||
len := len(parts)
|
||||
|
||||
if major, err = strconv.Atoi(parts[0]); err != nil {
|
||||
return 0, 0, 0, err
|
||||
}
|
||||
if minor, err = strconv.Atoi(parts[1]); err != nil {
|
||||
return 0, 0, 0, err
|
||||
}
|
||||
if len > 2 {
|
||||
part := parts[2]
|
||||
part = strings.TrimSuffix(part, "+")
|
||||
if patch, err = strconv.Atoi(part); err != nil {
|
||||
return 0, 0, 0, err
|
||||
}
|
||||
}
|
||||
|
||||
return major, minor, patch, err
|
||||
}
|
||||
|
||||
func kernelVersion() (major, minor, patch int, err error) {
|
||||
output, err := execOutput("uname", "-r")
|
||||
if err != nil {
|
||||
return
|
||||
return 0, 0, 0, err
|
||||
}
|
||||
|
||||
parts := strings.Split(output, ".")
|
||||
|
||||
if major, err = strconv.Atoi(parts[0]); err != nil {
|
||||
return
|
||||
}
|
||||
if minor, err = strconv.Atoi(parts[1]); err != nil {
|
||||
return
|
||||
}
|
||||
if patch, err = strconv.Atoi(parts[2]); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
return parseVersion(output)
|
||||
}
|
||||
|
||||
func Detect() (Host, int, error) {
|
||||
|
37
host/detect_test.go
Normal file
37
host/detect_test.go
Normal file
@ -0,0 +1,37 @@
|
||||
package host
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestKernelVersionParse(t *testing.T) {
|
||||
var tests = []struct {
|
||||
versionStr string
|
||||
major, minor, patch int
|
||||
}{
|
||||
{
|
||||
"3.8",
|
||||
3, 8, 0,
|
||||
},
|
||||
{
|
||||
"3.7",
|
||||
3, 7, 0,
|
||||
},
|
||||
{
|
||||
"3.8.2",
|
||||
3, 8, 2,
|
||||
},
|
||||
{
|
||||
"3.8.10+",
|
||||
3, 8, 10,
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
major, minor, patch, err := parseVersion(test.versionStr)
|
||||
if err != nil {
|
||||
t.Errorf("Failed parsing %q: %v", test.versionStr, err)
|
||||
continue
|
||||
}
|
||||
if major != test.major || minor != test.minor || patch != test.patch {
|
||||
t.Errorf("Parse of %q: got (%v, %v, %v) want (%v, %v, %v)", test.versionStr, major, minor, patch, test.major, test.minor, test.patch)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user