forked from mirror/cobra
Add explicit doc.GenMan SEE ALSO test covering #229
This commit is contained in:
parent
cb8496d6b2
commit
57f473263e
|
@ -1,11 +1,14 @@
|
|||
package doc
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var _ = fmt.Println
|
||||
|
@ -95,3 +98,65 @@ func TestGenManNoGenTag(t *testing.T) {
|
|||
unexpected := translate("#HISTORY")
|
||||
checkStringOmits(t, found, unexpected)
|
||||
}
|
||||
|
||||
func TestGenManSeeAlso(t *testing.T) {
|
||||
noop := func(cmd *cobra.Command, args []string) {}
|
||||
|
||||
top := &cobra.Command{Use: "top", Run: noop}
|
||||
aaa := &cobra.Command{Use: "aaa", Run: noop, Hidden: true} // #229
|
||||
bbb := &cobra.Command{Use: "bbb", Run: noop}
|
||||
ccc := &cobra.Command{Use: "ccc", Run: noop}
|
||||
top.AddCommand(aaa, bbb, ccc)
|
||||
|
||||
out := new(bytes.Buffer)
|
||||
header := &GenManHeader{}
|
||||
if err := GenMan(top, header, out); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
scanner := bufio.NewScanner(out)
|
||||
|
||||
if err := AssertLineFound(scanner, ".SH SEE ALSO"); err != nil {
|
||||
t.Fatal(fmt.Errorf("Couldn't find SEE ALSO section header: %s", err.Error()))
|
||||
}
|
||||
|
||||
if err := AssertNextLineEquals(scanner, ".PP"); err != nil {
|
||||
t.Fatal(fmt.Errorf("First line after SEE ALSO wasn't break-indent: %s", err.Error()))
|
||||
}
|
||||
|
||||
if err := AssertNextLineEquals(scanner, `\fBtop\-bbb(1)\fP, \fBtop\-ccc(1)\fP`); err != nil {
|
||||
t.Fatal(fmt.Errorf("Second line after SEE ALSO wasn't correct: %s", err.Error()))
|
||||
}
|
||||
}
|
||||
|
||||
func AssertLineFound(scanner *bufio.Scanner, expectedLine string) error {
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
if line == expectedLine {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
if err := scanner.Err(); err != nil {
|
||||
return fmt.Errorf("AssertLineFound: scan failed: %s", err.Error())
|
||||
}
|
||||
|
||||
return fmt.Errorf("AssertLineFound: hit EOF before finding %#v", expectedLine)
|
||||
}
|
||||
|
||||
func AssertNextLineEquals(scanner *bufio.Scanner, expectedLine string) error {
|
||||
if scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
if line == expectedLine {
|
||||
return nil
|
||||
} else {
|
||||
return fmt.Errorf("AssertNextLineEquals: got %#v, not %#v", line, expectedLine)
|
||||
}
|
||||
}
|
||||
|
||||
if err := scanner.Err(); err != nil {
|
||||
return fmt.Errorf("AssertNextLineEquals: scan failed: %s", err.Error())
|
||||
}
|
||||
|
||||
return fmt.Errorf("AssertNextLineEquals: hit EOF before finding %#v", expectedLine)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue