1202
func (s *changesSuite) assertParseData(c *gc.C, content string, expected []record) {
1203
// Retrieve and validate the bundle data.
1204
data, err := charm.ReadBundleData(strings.NewReader(content))
1205
c.Assert(err, jc.ErrorIsNil)
1206
err = data.Verify(nil, nil)
1207
c.Assert(err, jc.ErrorIsNil)
1209
// Retrieve the changes, and convert them to a sequence of records.
1210
changes := bundlechanges.FromData(data)
1211
records := make([]record, len(changes))
1212
for i, change := range changes {
1215
Requires: change.Requires(),
1216
Method: change.Method(),
1217
GUIArgs: change.GUIArgs(),
1219
r.Params = reflect.ValueOf(change).Elem().FieldByName("Params").Interface()
1223
// Output the records for debugging.
1224
b, err := json.MarshalIndent(records, "", " ")
1225
c.Assert(err, jc.ErrorIsNil)
1226
c.Logf("obtained records: %s", b)
1228
// Check that the obtained records are what we expect.
1229
c.Assert(records, jc.DeepEquals, expected)
1198
1232
func (s *changesSuite) TestFromData(c *gc.C) {
1199
1233
for i, test := range fromDataTests {
1200
1234
c.Logf("test %d: %s", i, test.about)
1202
// Retrieve and validate the bundle data.
1203
data, err := charm.ReadBundleData(strings.NewReader(test.content))
1204
c.Assert(err, jc.ErrorIsNil)
1205
err = data.Verify(nil, nil)
1206
c.Assert(err, jc.ErrorIsNil)
1208
// Retrieve the changes, and convert them to a sequence of records.
1209
changes := bundlechanges.FromData(data)
1210
records := make([]record, len(changes))
1211
for i, change := range changes {
1214
Requires: change.Requires(),
1215
Method: change.Method(),
1216
GUIArgs: change.GUIArgs(),
1218
r.Params = reflect.ValueOf(change).Elem().FieldByName("Params").Interface()
1222
// Output the records for debugging.
1223
b, err := json.MarshalIndent(records, "", " ")
1224
c.Assert(err, jc.ErrorIsNil)
1225
c.Logf("obtained records: %s", b)
1227
// Check that the obtained records are what we expect.
1228
c.Assert(records, jc.DeepEquals, test.expected)
1235
s.assertParseData(c, test.content, test.expected)
1239
func (s *changesSuite) TestLocalCharmWithSeries(c *gc.C) {
1240
charmDir := c.MkDir()
1241
content := fmt.Sprintf(`
1247
expected := []record{{
1250
Params: bundlechanges.AddCharmParams{
1254
GUIArgs: []interface{}{charmDir},
1258
Params: bundlechanges.AddServiceParams{
1259
Charm: "$addCharm-0",
1262
GUIArgs: []interface{}{
1265
map[string]interface{}{},
1267
map[string]string{},
1268
map[string]string{},
1270
Requires: []string{"addCharm-0"},
1272
s.assertParseData(c, content, expected)