func (s *CharmSuite) TestInferRepository(c *gc.C) { for i, t := range inferRepoTests { c.Logf("test %d", i) curl, err := charm.InferURL(t.url, "precise") c.Assert(err, gc.IsNil) repo, err := charm.InferRepository(curl.Reference, "/some/path") c.Assert(err, gc.IsNil) switch repo := repo.(type) { case *charm.LocalRepository: c.Assert(repo.Path, gc.Equals, t.path) default: c.Assert(repo, gc.Equals, charm.Store) } } curl, err := charm.InferURL("local:whatever", "precise") c.Assert(err, gc.IsNil) _, err = charm.InferRepository(curl.Reference, "") c.Assert(err, gc.ErrorMatches, "path to local repository not specified") curl.Schema = "foo" _, err = charm.InferRepository(curl.Reference, "") c.Assert(err, gc.ErrorMatches, "unknown schema for charm reference.*") }
func (c *DeployCommand) Init(args []string) error { switch len(args) { case 2: if !names.IsService(args[1]) { return fmt.Errorf("invalid service name %q", args[1]) } c.ServiceName = args[1] fallthrough case 1: if _, err := charm.InferURL(args[0], "fake"); err != nil { return fmt.Errorf("invalid charm name %q", args[0]) } c.CharmName = args[0] case 0: return errors.New("no charm specified") default: return cmd.CheckEmpty(args[2:]) } return c.UnitCommandBase.Init(args) }