summaryrefslogtreecommitdiff
diff options
authorMichael Vogt <mvo@ubuntu.com>2018-09-26 11:32:15 +0200
committerMichael Vogt <mvo@ubuntu.com>2018-09-26 15:42:35 +0200
commitf7393517c49c47beb72baafd6950fadde9592787 (patch)
treead2de7e7ebb7c931e3d569e78827f30133b4ee03
parentf98f78adfa6991d1420101f2cdb29e4004b07fa7 (diff)
selftest: fix kernel version compare on 14.04 selftestfix-selftest
-rw-r--r--selftest/version.go13
-rw-r--r--selftest/version_test.go16
2 files changed, 27 insertions, 2 deletions
diff --git a/selftest/version.go b/selftest/version.go
index dc0d599328..e14cfa6057 100644
--- a/selftest/version.go
+++ b/selftest/version.go
@@ -21,7 +21,9 @@ package selftest
import (
"fmt"
+ "strings"
+ "github.com/snapcore/snapd/logger"
"github.com/snapcore/snapd/osutil"
"github.com/snapcore/snapd/release"
"github.com/snapcore/snapd/strutil"
@@ -31,7 +33,16 @@ import (
// encounter and provides advice on how to resolve them.
func checkKernelVersion() error {
if release.OnClassic && release.ReleaseInfo.ID == "ubuntu" && release.ReleaseInfo.VersionID == "14.04" {
- if cmp, _ := strutil.VersionCompare(osutil.KernelVersion(), "3.13"); cmp <= 0 {
+ kver := osutil.KernelVersion()
+ // a kernel version looks like this: "4.4.0-112-generic" and
+ // we are only interested in the bits before the "-"
+ kver = strings.SplitN(kver, "-", 2)[0]
+ cmp, err := strutil.VersionCompare(kver, "3.13.0")
+ if err != nil {
+ logger.Noticef("cannot check kernel: %v", err)
+ return nil
+ }
+ if cmp <= 0 {
return fmt.Errorf("you need to reboot into a 4.4 kernel to start using snapd")
}
}
diff --git a/selftest/version_test.go b/selftest/version_test.go
index c36fe6a705..94392c6b81 100644
--- a/selftest/version_test.go
+++ b/selftest/version_test.go
@@ -32,7 +32,7 @@ type versionSuite struct{}
var _ = Suite(&versionSuite{})
func (s *selftestSuite) TestFreshInstallOfSnapdOnTrusty(c *C) {
- // Mock an Ubuntu 14.04 system running a 3.13 kernel
+ // Mock an Ubuntu 14.04 system running a 3.13.0 kernel
restore := release.MockOnClassic(true)
defer restore()
restore = release.MockReleaseInfo(&release.OS{ID: "ubuntu", VersionID: "14.04"})
@@ -44,3 +44,17 @@ func (s *selftestSuite) TestFreshInstallOfSnapdOnTrusty(c *C) {
err := selftest.CheckKernelVersion()
c.Assert(err, ErrorMatches, "you need to reboot into a 4.4 kernel to start using snapd")
}
+
+func (s *selftestSuite) TestRebootedOnTrusty(c *C) {
+ // Mock an Ubuntu 14.04 system running a 4.4.0 kernel
+ restore := release.MockOnClassic(true)
+ defer restore()
+ restore = release.MockReleaseInfo(&release.OS{ID: "ubuntu", VersionID: "14.04"})
+ defer restore()
+ restore = osutil.MockKernelVersion("4.4.0-112-generic")
+ defer restore()
+
+ // Check for the given advice.
+ err := selftest.CheckKernelVersion()
+ c.Assert(err, IsNil)
+}