diff options
| author | Michael Vogt <mvo@ubuntu.com> | 2018-09-26 11:32:15 +0200 |
|---|---|---|
| committer | Michael Vogt <mvo@ubuntu.com> | 2018-09-26 15:42:35 +0200 |
| commit | f7393517c49c47beb72baafd6950fadde9592787 (patch) | |
| tree | ad2de7e7ebb7c931e3d569e78827f30133b4ee03 | |
| parent | f98f78adfa6991d1420101f2cdb29e4004b07fa7 (diff) | |
selftest: fix kernel version compare on 14.04 selftestfix-selftest
| -rw-r--r-- | selftest/version.go | 13 | ||||
| -rw-r--r-- | selftest/version_test.go | 16 |
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) +} |
