7790bf97fd
The `see_also` section for child commands would include only the name of the commands. This adds the whole path, similar to how it's done for the other documentation formats.
88 lines
2.0 KiB
Go
88 lines
2.0 KiB
Go
package doc
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func TestGenYamlDoc(t *testing.T) {
|
|
// We generate on s subcommand so we have both subcommands and parents
|
|
buf := new(bytes.Buffer)
|
|
if err := GenYaml(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)
|
|
checkStringContains(t, output, fmt.Sprintf("- %s - %s", echoSubCmd.CommandPath(), echoSubCmd.Short))
|
|
}
|
|
|
|
func TestGenYamlNoTag(t *testing.T) {
|
|
rootCmd.DisableAutoGenTag = true
|
|
defer func() { rootCmd.DisableAutoGenTag = false }()
|
|
|
|
buf := new(bytes.Buffer)
|
|
if err := GenYaml(rootCmd, buf); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
output := buf.String()
|
|
|
|
checkStringOmits(t, output, "Auto generated")
|
|
}
|
|
|
|
func TestGenYamlTree(t *testing.T) {
|
|
c := &cobra.Command{Use: "do [OPTIONS] arg1 arg2"}
|
|
|
|
tmpdir, err := ioutil.TempDir("", "test-gen-yaml-tree")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create tmpdir: %s", err.Error())
|
|
}
|
|
defer os.RemoveAll(tmpdir)
|
|
|
|
if err := GenYamlTree(c, tmpdir); err != nil {
|
|
t.Fatalf("GenYamlTree failed: %s", err.Error())
|
|
}
|
|
|
|
if _, err := os.Stat(filepath.Join(tmpdir, "do.yaml")); err != nil {
|
|
t.Fatalf("Expected file 'do.yaml' to exist")
|
|
}
|
|
}
|
|
|
|
func TestGenYamlDocRunnable(t *testing.T) {
|
|
// Testing a runnable command: should contain the "usage" field
|
|
buf := new(bytes.Buffer)
|
|
if err := GenYaml(rootCmd, buf); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
output := buf.String()
|
|
|
|
checkStringContains(t, output, "usage: "+rootCmd.Use)
|
|
}
|
|
|
|
func BenchmarkGenYamlToFile(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 := GenYaml(rootCmd, file); err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
}
|
|
}
|