// CharmInfo returns information about the requested charm. func (c *Client) CharmInfo(args params.CharmInfo) (api.CharmInfo, error) { curl, err := charm.ParseURL(args.CharmURL) if err != nil { return api.CharmInfo{}, err } charm, err := c.api.state.Charm(curl) if err != nil { return api.CharmInfo{}, err } info := api.CharmInfo{ Revision: charm.Revision(), URL: curl.String(), Config: charm.Config(), Meta: charm.Meta(), } return info, nil }
func (s *clientSuite) TestClientCharmInfo(c *C) { // Use wordpress for tests so that we can compare Provides and Requires. charm := s.AddTestingCharm(c, "wordpress") for i, t := range clientCharmInfoTests { c.Logf("test %d. %s", i, t.about) info, err := s.APIState.Client().CharmInfo(t.url) if t.err != "" { c.Assert(err, ErrorMatches, t.err) continue } c.Assert(err, IsNil) expected := &api.CharmInfo{ Revision: charm.Revision(), URL: charm.URL().String(), Config: charm.Config(), Meta: charm.Meta(), } c.Assert(info, DeepEquals, expected) } }