func (s *hookManagerSuite) TestHookTask(c *C) { // Register a handler generator for the "test-hook" hook var calledContext *hookstate.Context mockHandler := hooktest.NewMockHandler() mockHandlerGenerator := func(context *hookstate.Context) hookstate.Handler { calledContext = context return mockHandler } s.manager.Register(regexp.MustCompile("test-hook"), mockHandlerGenerator) s.manager.Ensure() s.manager.Wait() s.state.Lock() defer s.state.Unlock() c.Assert(calledContext, NotNil, Commentf("Expected handler generator to be called with a valid context")) c.Check(calledContext.SnapName(), Equals, "test-snap") c.Check(calledContext.SnapRevision(), Equals, snap.R(1)) c.Check(calledContext.HookName(), Equals, "test-hook") c.Check(s.command.Calls(), DeepEquals, [][]string{{ "snap", "run", "--hook", "test-hook", "-r", "1", "test-snap", }}) c.Check(mockHandler.BeforeCalled, Equals, true) c.Check(mockHandler.DoneCalled, Equals, true) c.Check(mockHandler.ErrorCalled, Equals, false) c.Check(s.task.Kind(), Equals, "run-hook") c.Check(s.task.Status(), Equals, state.DoneStatus) c.Check(s.change.Status(), Equals, state.DoneStatus) }