func snapRemove(inst *snapInstruction, st *state.State) (string, []*state.TaskSet, error) { ts, err := snapstate.Remove(st, inst.Snaps[0], inst.Revision) if err != nil { return "", nil, err } msg := fmt.Sprintf(i18n.G("Remove %q snap"), inst.Snaps[0]) return msg, []*state.TaskSet{ts}, nil }
func (ms *mgrsSuite) removeSnap(c *C, name string) { st := ms.o.State() ts, err := snapstate.Remove(st, name, snap.R(0)) c.Assert(err, IsNil) chg := st.NewChange("remove-snap", "...") chg.AddAll(ts) st.Unlock() err = ms.o.Settle() st.Lock() c.Assert(err, IsNil) c.Assert(chg.Err(), IsNil) c.Assert(chg.Status(), Equals, state.DoneStatus, Commentf("remove-snap change failed with: %v", chg.Err())) }
func (ms *mgrsSuite) TestHappyRemove(c *C) { st := ms.o.State() st.Lock() defer st.Unlock() snapYamlContent := `name: foo apps: bar: command: bin/bar ` snapInfo := ms.installLocalTestSnap(c, snapYamlContent+"version: 1.0") ts, err := snapstate.Remove(st, "foo", snap.R(0)) c.Assert(err, IsNil) chg := st.NewChange("remove-snap", "...") chg.AddAll(ts) st.Unlock() err = ms.o.Settle() st.Lock() c.Assert(err, IsNil) c.Assert(chg.Status(), Equals, state.DoneStatus, Commentf("remove-snap change failed with: %v", chg.Err())) // ensure that the binary wrapper file got removed binaryWrapper := filepath.Join(dirs.SnapBinariesDir, "foo.bar") c.Assert(osutil.FileExists(binaryWrapper), Equals, false) // data dirs c.Assert(osutil.FileExists(snapInfo.DataDir()), Equals, false) c.Assert(osutil.FileExists(snapInfo.CommonDataDir()), Equals, false) // snap file and its mount c.Assert(osutil.FileExists(filepath.Join(dirs.SnapBlobDir, "foo_x1.snap")), Equals, false) mup := systemd.MountUnitPath("/snap/foo/x1") c.Assert(osutil.FileExists(mup), Equals, false) }