7
. "launchpad.net/gocheck"
9
gc "launchpad.net/gocheck"
8
11
"launchpad.net/juju-core/charm"
9
12
"launchpad.net/juju-core/charm/hooks"
10
13
"launchpad.net/juju-core/utils"
11
14
"launchpad.net/juju-core/worker/uniter"
12
15
"launchpad.net/juju-core/worker/uniter/hook"
16
18
type StateFileSuite struct{}
18
var _ = Suite(&StateFileSuite{})
20
var _ = gc.Suite(&StateFileSuite{})
20
var stcurl = charm.MustParseURL("cs:series/service-name-123")
22
var stcurl = charm.MustParseURL("cs:quantal/service-name-123")
21
23
var relhook = &hook.Info{
22
24
Kind: hooks.RelationJoined,
23
25
RemoteUnit: "some-thing/123",
24
Members: map[string]map[string]interface{}{
25
"blah/0": {"cheese": "gouda"},
29
28
var stateTests = []struct {
147
func (s *StateFileSuite) TestStates(c *C) {
146
func (s *StateFileSuite) TestStates(c *gc.C) {
148
147
for i, t := range stateTests {
149
148
c.Logf("test %d", i)
150
149
path := filepath.Join(c.MkDir(), "uniter")
151
150
file := uniter.NewStateFile(path)
152
151
_, err := file.Read()
153
c.Assert(err, Equals, uniter.ErrNoStateFile)
152
c.Assert(err, gc.Equals, uniter.ErrNoStateFile)
154
153
write := func() {
155
154
err := file.Write(t.st.Started, t.st.Op, t.st.OpStep, t.st.Hook, t.st.CharmURL)
155
c.Assert(err, gc.IsNil)
159
c.Assert(write, PanicMatches, "invalid uniter state: "+t.err)
158
c.Assert(write, gc.PanicMatches, "invalid uniter state: "+t.err)
160
159
err := utils.WriteYaml(path, &t.st)
160
c.Assert(err, gc.IsNil)
162
161
_, err = file.Read()
163
c.Assert(err, ErrorMatches, "cannot read charm state at .*: invalid uniter state: "+t.err)
162
c.Assert(err, gc.ErrorMatches, "cannot read charm state at .*: invalid uniter state: "+t.err)
167
166
st, err := file.Read()
170
c.Assert(st.Hook.Members, HasLen, 0)
171
st.Hook.Members = t.st.Hook.Members
173
c.Assert(*st, DeepEquals, t.st)
167
c.Assert(err, gc.IsNil)
168
c.Assert(*st, gc.DeepEquals, t.st)