func (s *kernelOSSuite) TestSetNextBootForKernel(c *C) { restore := release.MockOnClassic(false) defer restore() info := &snap.Info{} info.Type = snap.TypeKernel info.RealName = "krnl" info.Revision = snap.R(42) err := boot.SetNextBoot(info) c.Assert(err, IsNil) c.Assert(s.bootloader.BootVars, DeepEquals, map[string]string{ "snap_try_kernel": "krnl_42.snap", "snap_mode": "try", }) s.bootloader.BootVars["snap_kernel"] = "krnl_40.snap" s.bootloader.BootVars["snap_try_kernel"] = "krnl_42.snap" c.Check(boot.KernelOrOsRebootRequired(info), Equals, true) // simulate good boot s.bootloader.BootVars["snap_kernel"] = "krnl_42.snap" c.Check(boot.KernelOrOsRebootRequired(info), Equals, false) }
// SetNextBoot should do nothing on classic LP: #1580403 func (s *kernelOSSuite) TestSetNextBootOnClassic(c *C) { restore := release.MockOnClassic(true) defer restore() // Create a fake OS snap that we try to update snapInfo := snaptest.MockSnap(c, "name: os\ntype: os", "SNAP", &snap.SideInfo{Revision: snap.R(42)}) err := boot.SetNextBoot(snapInfo) c.Assert(err, IsNil) c.Assert(s.bootloader.BootVars, HasLen, 0) }
// LinkSnap makes the snap available by generating wrappers and setting the current symlinks. func (b Backend) LinkSnap(info *snap.Info) error { if err := generateWrappers(info); err != nil { return err } // XXX/TODO: this needs to be a task with proper undo and tests! if err := boot.SetNextBoot(info); err != nil { return err } return updateCurrentSymlinks(info) }
func (s *kernelOSSuite) TestSetNextBootForKernelForTheSameKernel(c *C) { restore := release.MockOnClassic(false) defer restore() info := &snap.Info{} info.Type = snap.TypeKernel info.RealName = "krnl" info.Revision = snap.R(40) s.bootloader.BootVars["snap_kernel"] = "krnl_40.snap" err := boot.SetNextBoot(info) c.Assert(err, IsNil) c.Assert(s.bootloader.BootVars, DeepEquals, map[string]string{ "snap_kernel": "krnl_40.snap", }) }
func (s *kernelOSSuite) TestSetNextBootForCore(c *C) { restore := release.MockOnClassic(false) defer restore() info := &snap.Info{} info.Type = snap.TypeOS info.RealName = "core" info.Revision = snap.R(100) err := boot.SetNextBoot(info) c.Assert(err, IsNil) c.Assert(s.bootloader.BootVars, DeepEquals, map[string]string{ "snap_try_core": "core_100.snap", "snap_mode": "try", }) c.Check(boot.KernelOrOsRebootRequired(info), Equals, true) }