X Tutup
Skip to content

Commit b2e32a5

Browse files
author
Nate Smith
authored
Merge pull request cli#3330 from cli/man-gen-test
Add tests for manual pages generation
2 parents 20c58f1 + 71c2bc5 commit b2e32a5

File tree

2 files changed

+58
-28
lines changed

2 files changed

+58
-28
lines changed

cmd/gen-docs/main.go

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"fmt"
55
"os"
6+
"path/filepath"
67
"strings"
78

89
"github.com/cli/cli/internal/docs"
@@ -13,27 +14,30 @@ import (
1314
)
1415

1516
func main() {
16-
var flagError pflag.ErrorHandling
17-
docCmd := pflag.NewFlagSet("", flagError)
18-
manPage := docCmd.BoolP("man-page", "", false, "Generate manual pages")
19-
website := docCmd.BoolP("website", "", false, "Generate website pages")
20-
dir := docCmd.StringP("doc-path", "", "", "Path directory where you want generate doc files")
21-
help := docCmd.BoolP("help", "h", false, "Help about any command")
22-
23-
if err := docCmd.Parse(os.Args); err != nil {
17+
if err := run(os.Args); err != nil {
18+
fmt.Fprintln(os.Stderr, err)
2419
os.Exit(1)
2520
}
21+
}
22+
23+
func run(args []string) error {
24+
flags := pflag.NewFlagSet("", pflag.ContinueOnError)
25+
manPage := flags.BoolP("man-page", "", false, "Generate manual pages")
26+
website := flags.BoolP("website", "", false, "Generate website pages")
27+
dir := flags.StringP("doc-path", "", "", "Path directory where you want generate doc files")
28+
help := flags.BoolP("help", "h", false, "Help about any command")
29+
30+
if err := flags.Parse(args); err != nil {
31+
return err
32+
}
2633

2734
if *help {
28-
_, err := fmt.Fprintf(os.Stderr, "Usage of %s:\n\n%s", os.Args[0], docCmd.FlagUsages())
29-
if err != nil {
30-
fatal(err)
31-
}
32-
os.Exit(1)
35+
fmt.Fprintf(os.Stderr, "Usage of %s:\n\n%s", filepath.Base(args[0]), flags.FlagUsages())
36+
return nil
3337
}
3438

3539
if *dir == "" {
36-
fatal("no dir set")
40+
return fmt.Errorf("error: --doc-path not set")
3741
}
3842

3943
io, _, _, _ := iostreams.Test()
@@ -43,15 +47,13 @@ func main() {
4347
}, "", "")
4448
rootCmd.InitDefaultHelpCmd()
4549

46-
err := os.MkdirAll(*dir, 0755)
47-
if err != nil {
48-
fatal(err)
50+
if err := os.MkdirAll(*dir, 0755); err != nil {
51+
return err
4952
}
5053

5154
if *website {
52-
err = docs.GenMarkdownTreeCustom(rootCmd, *dir, filePrepender, linkHandler)
53-
if err != nil {
54-
fatal(err)
55+
if err := docs.GenMarkdownTreeCustom(rootCmd, *dir, filePrepender, linkHandler); err != nil {
56+
return err
5557
}
5658
}
5759

@@ -62,11 +64,12 @@ func main() {
6264
Source: "",
6365
Manual: "",
6466
}
65-
err = docs.GenManTree(rootCmd, header, *dir)
66-
if err != nil {
67-
fatal(err)
67+
if err := docs.GenManTree(rootCmd, header, *dir); err != nil {
68+
return err
6869
}
6970
}
71+
72+
return nil
7073
}
7174

7275
func filePrepender(filename string) string {
@@ -82,11 +85,6 @@ func linkHandler(name string) string {
8285
return fmt.Sprintf("./%s", strings.TrimSuffix(name, ".md"))
8386
}
8487

85-
func fatal(msg interface{}) {
86-
fmt.Fprintln(os.Stderr, msg)
87-
os.Exit(1)
88-
}
89-
9088
type browser struct{}
9189

9290
func (b *browser) Browse(url string) error {

cmd/gen-docs/main_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
import (
4+
"io/ioutil"
5+
"strings"
6+
"testing"
7+
)
8+
9+
func Test_run(t *testing.T) {
10+
dir := t.TempDir()
11+
args := []string{"--man-page", "--website", "--doc-path", dir}
12+
err := run(args)
13+
if err != nil {
14+
t.Fatalf("got error: %v", err)
15+
}
16+
17+
manPage, err := ioutil.ReadFile(dir + "/gh-issue-create.1")
18+
if err != nil {
19+
t.Fatalf("error reading `gh-issue-create.1`: %v", err)
20+
}
21+
if !strings.Contains(string(manPage), `\fBgh issue create`) {
22+
t.Fatal("man page corrupted")
23+
}
24+
25+
markdownPage, err := ioutil.ReadFile(dir + "/gh_issue_create.md")
26+
if err != nil {
27+
t.Fatalf("error reading `gh_issue_create.md`: %v", err)
28+
}
29+
if !strings.Contains(string(markdownPage), `## gh issue create`) {
30+
t.Fatal("markdown page corrupted")
31+
}
32+
}

0 commit comments

Comments
 (0)
X Tutup