func (s *MainSuite) TestAllCommandsPurposeDocCapitalization(c *gc.C) { // Verify each command that: // - the Purpose field is not empty // - if set, the Doc field either begins with the name of the // command or and uppercase letter. // // The first makes Purpose a required documentation. Also, makes // both "help commands"'s output and "help <cmd>"'s header more // uniform. The second makes the Doc content either start like a // sentence, or start godoc-like by using the command's name in // lowercase. var commands commands registerCommands(&commands, testing.Context(c)) for _, cmd := range commands { info := cmd.Info() c.Logf("%v", info.Name) purpose := strings.TrimSpace(info.Purpose) doc := strings.TrimSpace(info.Doc) comment := func(message string) interface{} { return gc.Commentf("command %q %s", info.Name, message) } c.Check(purpose, gc.Not(gc.Equals), "", comment("has empty Purpose")) // TODO (cherylj) Add back in the check for capitalization of // purpose, but check for upper case. This requires all commands // to have been updated first. if doc != "" && !strings.HasPrefix(doc, info.Name) { prefix := string(doc[0]) c.Check(prefix, gc.Equals, strings.ToUpper(prefix), comment("expected uppercase first-letter Doc"), ) } } }
func (s *MainSuite) TestEnvironCommands(c *gc.C) { var commands commands registerCommands(&commands, testing.Context(c)) // There should not be any EnvironCommands registered. // EnvironCommands must be wrapped using envcmd.Wrap. for _, cmd := range commands { c.Logf("%v", cmd.Info().Name) c.Check(cmd, gc.Not(gc.FitsTypeOf), envcmd.EnvironCommand(&BootstrapCommand{})) } }
func (s *MainSuite) TestObsoleteRegistration(c *gc.C) { var commands commands s.PatchValue(&version.Current.Number, version.MustParse("3.0-alpha1")) registerCommands(&commands, testing.Context(c)) cmdSet := set.NewStrings(obsoleteCommandNames...) registeredCmdSet := set.NewStrings() for _, cmd := range commands { registeredCmdSet.Add(cmd.Info().Name) } intersection := registeredCmdSet.Intersection(cmdSet) c.Logf("Registered obsolete commands: %s", intersection.Values()) c.Assert(intersection.IsEmpty(), gc.Equals, true) }