func (s *snapmgrTestSuite) TestInstallPathConflict(c *C) { s.state.Lock() defer s.state.Unlock() _, err := snapstate.Install(s.state, "some-snap", "some-channel", 0, 0) c.Assert(err, IsNil) mockSnap := makeTestSnap(c, "name: some-snap\nversion: 1.0") _, err = snapstate.InstallPath(s.state, mockSnap, "", 0) c.Assert(err, ErrorMatches, `snap "some-snap" has changes in progress`) }
func (s *snapmgrTestSuite) TestInstallFirstLocalIntegration(c *C) { s.state.Lock() defer s.state.Unlock() mockSnap := makeTestSnap(c, `name: mock version: 1.0`) chg := s.state.NewChange("install", "install a local snap") ts, err := snapstate.InstallPath(s.state, mockSnap, "", 0) c.Assert(err, IsNil) chg.AddAll(ts) s.state.Unlock() defer s.snapmgr.Stop() s.settle() s.state.Lock() // ensure only local install was run, i.e. first action is check-snap c.Assert(s.fakeBackend.ops, HasLen, 5) c.Check(s.fakeBackend.ops[0].op, Equals, "check-snap") c.Check(s.fakeBackend.ops[0].name, Matches, `.*/mock_1.0_all.snap`) c.Check(s.fakeBackend.ops[3].op, Equals, "candidate") c.Check(s.fakeBackend.ops[3].sinfo, DeepEquals, snap.SideInfo{Revision: 100001}) c.Check(s.fakeBackend.ops[4].op, Equals, "link-snap") c.Check(s.fakeBackend.ops[4].name, Equals, "/snap/mock/100001") // verify snapSetup info var ss snapstate.SnapSetup task := ts.Tasks()[0] err = task.Get("snap-setup", &ss) c.Assert(err, IsNil) c.Assert(ss, DeepEquals, snapstate.SnapSetup{ Name: "mock", Revision: 100001, SnapPath: mockSnap, }) // verify snaps in the system state var snapst snapstate.SnapState err = snapstate.Get(s.state, "mock", &snapst) c.Assert(err, IsNil) c.Assert(snapst.Active, Equals, true) c.Assert(snapst.Candidate, IsNil) c.Assert(snapst.Sequence[0], DeepEquals, &snap.SideInfo{ OfficialName: "", Channel: "", Revision: 100001, }) c.Assert(snapst.LocalRevision, Equals, 100001) }