github.com/ungtb10d/cli/v2@v2.0.0-20221110210412-98537dd9d6a1/internal/docs/markdown_test.go (about) 1 package docs 2 3 import ( 4 "bytes" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/spf13/cobra" 10 ) 11 12 func TestGenMdDoc(t *testing.T) { 13 // We generate on subcommand so we have both subcommands and parents. 14 buf := new(bytes.Buffer) 15 if err := GenMarkdown(echoCmd, buf); err != nil { 16 t.Fatal(err) 17 } 18 output := buf.String() 19 20 checkStringContains(t, output, echoCmd.Long) 21 checkStringContains(t, output, echoCmd.Example) 22 checkStringContains(t, output, "boolone") 23 checkStringContains(t, output, "rootflag") 24 checkStringOmits(t, output, rootCmd.Short) 25 checkStringOmits(t, output, echoSubCmd.Short) 26 checkStringOmits(t, output, deprecatedCmd.Short) 27 checkStringContains(t, output, "Options inherited from parent commands") 28 } 29 30 func TestGenMdDocWithNoLongOrSynopsis(t *testing.T) { 31 // We generate on subcommand so we have both subcommands and parents. 32 buf := new(bytes.Buffer) 33 if err := GenMarkdown(dummyCmd, buf); err != nil { 34 t.Fatal(err) 35 } 36 output := buf.String() 37 38 checkStringContains(t, output, dummyCmd.Example) 39 checkStringContains(t, output, dummyCmd.Short) 40 checkStringContains(t, output, "Options inherited from parent commands") 41 checkStringOmits(t, output, "### Synopsis") 42 } 43 44 func TestGenMdNoHiddenParents(t *testing.T) { 45 // We generate on subcommand so we have both subcommands and parents. 46 for _, name := range []string{"rootflag", "strtwo"} { 47 f := rootCmd.PersistentFlags().Lookup(name) 48 f.Hidden = true 49 defer func() { f.Hidden = false }() 50 } 51 buf := new(bytes.Buffer) 52 if err := GenMarkdown(echoCmd, buf); err != nil { 53 t.Fatal(err) 54 } 55 output := buf.String() 56 57 checkStringContains(t, output, echoCmd.Long) 58 checkStringContains(t, output, echoCmd.Example) 59 checkStringContains(t, output, "boolone") 60 checkStringOmits(t, output, "rootflag") 61 checkStringOmits(t, output, rootCmd.Short) 62 checkStringOmits(t, output, echoSubCmd.Short) 63 checkStringOmits(t, output, deprecatedCmd.Short) 64 checkStringOmits(t, output, "Options inherited from parent commands") 65 } 66 67 func TestGenMdTree(t *testing.T) { 68 c := &cobra.Command{Use: "do [OPTIONS] arg1 arg2"} 69 tmpdir, err := os.MkdirTemp("", "test-gen-md-tree") 70 if err != nil { 71 t.Fatalf("Failed to create tmpdir: %v", err) 72 } 73 defer os.RemoveAll(tmpdir) 74 75 if err := GenMarkdownTree(c, tmpdir); err != nil { 76 t.Fatalf("GenMarkdownTree failed: %v", err) 77 } 78 79 if _, err := os.Stat(filepath.Join(tmpdir, "do.md")); err != nil { 80 t.Fatalf("Expected file 'do.md' to exist") 81 } 82 } 83 84 func BenchmarkGenMarkdownToFile(b *testing.B) { 85 file, err := os.CreateTemp(b.TempDir(), "") 86 if err != nil { 87 b.Fatal(err) 88 } 89 defer file.Close() 90 91 b.ResetTimer() 92 for i := 0; i < b.N; i++ { 93 if err := GenMarkdown(rootCmd, file); err != nil { 94 b.Fatal(err) 95 } 96 } 97 }