func (s *repositorySuite) TestAddHandlerGenerator(c *C) { repository := newRepository() var calledContext *Context mockHandlerGenerator := func(context *Context) Handler { calledContext = context return hooktest.NewMockHandler() } // Verify that a handler generator can be added to the repository repository.addHandlerGenerator(regexp.MustCompile("test-hook"), mockHandlerGenerator) state := state.New(nil) state.Lock() task := state.NewTask("test-task", "my test task") setup := &HookSetup{Snap: "test-snap", Revision: snap.R(1), Hook: "test-hook"} context := &Context{task: task, setup: setup} state.Unlock() c.Assert(context, NotNil) // Verify that the handler can be generated handlers := repository.generateHandlers(context) c.Check(handlers, HasLen, 1) c.Check(calledContext, DeepEquals, context) // Add another handler repository.addHandlerGenerator(regexp.MustCompile(".*-hook"), mockHandlerGenerator) // Verify that two handlers are generated for the test-hook, now handlers = repository.generateHandlers(context) c.Check(handlers, HasLen, 2) c.Check(calledContext, DeepEquals, context) }
func (s *getSuite) TestGetTests(c *C) { for _, test := range getTests { c.Logf("Test: %s", test.args) mockHandler := hooktest.NewMockHandler() state := state.New(nil) state.Lock() task := state.NewTask("test-task", "my test task") setup := &hookstate.HookSetup{Snap: "test-snap", Revision: snap.R(1), Hook: "test-hook"} var err error mockContext, err := hookstate.NewContext(task, setup, mockHandler) c.Check(err, IsNil) // Initialize configuration t := configstate.NewTransaction(state) t.Set("test-snap", "test-key1", "test-value1") t.Set("test-snap", "test-key2", 2) t.Commit() state.Unlock() stdout, stderr, err := ctlcmd.Run(mockContext, strings.Fields(test.args)) if test.error != "" { c.Check(err, ErrorMatches, test.error) } else { c.Check(err, IsNil) c.Check(string(stderr), Equals, "") c.Check(string(stdout), Equals, test.stdout) } } }
func (s *contextSuite) SetUpTest(c *C) { state := state.New(nil) state.Lock() defer state.Unlock() s.task = state.NewTask("test-task", "my test task") s.setup = &HookSetup{Snap: "test-snap", Revision: snap.R(1), Hook: "test-hook"} var err error s.context, err = NewContext(s.task, s.setup, nil) c.Check(err, IsNil) }
func (s *setSuite) SetUpTest(c *C) { s.mockHandler = hooktest.NewMockHandler() state := state.New(nil) state.Lock() defer state.Unlock() task := state.NewTask("test-task", "my test task") setup := &hookstate.HookSetup{Snap: "test-snap", Revision: snap.R(1), Hook: "test-hook"} var err error s.mockContext, err = hookstate.NewContext(task, setup, s.mockHandler) c.Assert(err, IsNil) }
func (s *getSuite) SetUpTest(c *C) { s.mockHandler = hooktest.NewMockHandler() state := state.New(nil) state.Lock() defer state.Unlock() task := state.NewTask("test-task", "my test task") setup := &hookstate.HookSetup{Snap: "test-snap", Revision: snap.R(1), Hook: "test-hook"} var err error s.mockContext, err = hookstate.NewContext(task, setup, s.mockHandler) c.Assert(err, IsNil) // Initialize configuration transaction := configstate.NewTransaction(state) transaction.Set("test-snap", "initial-key", "initial-value") transaction.Commit() }