| package doc |
| |
| import ( |
| "bytes" |
| "io/ioutil" |
| "os" |
| "path/filepath" |
| "testing" |
| |
| "github.com/spf13/cobra" |
| ) |
| |
| func TestGenRSTDoc(t *testing.T) { |
| // We generate on a subcommand so we have both subcommands and parents |
| buf := new(bytes.Buffer) |
| if err := GenReST(echoCmd, buf); err != nil { |
| t.Fatal(err) |
| } |
| output := buf.String() |
| |
| checkStringContains(t, output, echoCmd.Long) |
| checkStringContains(t, output, echoCmd.Example) |
| checkStringContains(t, output, "boolone") |
| checkStringContains(t, output, "rootflag") |
| checkStringContains(t, output, rootCmd.Short) |
| checkStringContains(t, output, echoSubCmd.Short) |
| checkStringOmits(t, output, deprecatedCmd.Short) |
| } |
| |
| func TestGenRSTNoHiddenParents(t *testing.T) { |
| // We generate on a subcommand so we have both subcommands and parents |
| for _, name := range []string{"rootflag", "strtwo"} { |
| f := rootCmd.PersistentFlags().Lookup(name) |
| f.Hidden = true |
| defer func() { f.Hidden = false }() |
| } |
| buf := new(bytes.Buffer) |
| if err := GenReST(echoCmd, buf); err != nil { |
| t.Fatal(err) |
| } |
| output := buf.String() |
| |
| checkStringContains(t, output, echoCmd.Long) |
| checkStringContains(t, output, echoCmd.Example) |
| checkStringContains(t, output, "boolone") |
| checkStringOmits(t, output, "rootflag") |
| checkStringContains(t, output, rootCmd.Short) |
| checkStringContains(t, output, echoSubCmd.Short) |
| checkStringOmits(t, output, deprecatedCmd.Short) |
| checkStringOmits(t, output, "Options inherited from parent commands") |
| } |
| |
| func TestGenRSTNoTag(t *testing.T) { |
| rootCmd.DisableAutoGenTag = true |
| defer func() { rootCmd.DisableAutoGenTag = false }() |
| |
| buf := new(bytes.Buffer) |
| if err := GenReST(rootCmd, buf); err != nil { |
| t.Fatal(err) |
| } |
| output := buf.String() |
| |
| unexpected := "Auto generated" |
| checkStringOmits(t, output, unexpected) |
| } |
| |
| func TestGenRSTTree(t *testing.T) { |
| c := &cobra.Command{Use: "do [OPTIONS] arg1 arg2"} |
| |
| tmpdir, err := ioutil.TempDir("", "test-gen-rst-tree") |
| if err != nil { |
| t.Fatalf("Failed to create tmpdir: %s", err.Error()) |
| } |
| defer os.RemoveAll(tmpdir) |
| |
| if err := GenReSTTree(c, tmpdir); err != nil { |
| t.Fatalf("GenReSTTree failed: %s", err.Error()) |
| } |
| |
| if _, err := os.Stat(filepath.Join(tmpdir, "do.rst")); err != nil { |
| t.Fatalf("Expected file 'do.rst' to exist") |
| } |
| } |
| |
| func BenchmarkGenReSTToFile(b *testing.B) { |
| file, err := ioutil.TempFile("", "") |
| if err != nil { |
| b.Fatal(err) |
| } |
| defer os.Remove(file.Name()) |
| defer file.Close() |
| |
| b.ResetTimer() |
| for i := 0; i < b.N; i++ { |
| if err := GenReST(rootCmd, file); err != nil { |
| b.Fatal(err) |
| } |
| } |
| } |