mirror of
https://github.com/spf13/cobra
synced 2024-11-24 14:47:12 +00:00
Add explicit doc.GenMan SEE ALSO test covering #229
This commit is contained in:
parent
cb8496d6b2
commit
57f473263e
1 changed files with 65 additions and 0 deletions
|
@ -1,11 +1,14 @@
|
||||||
package doc
|
package doc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ = fmt.Println
|
var _ = fmt.Println
|
||||||
|
@ -95,3 +98,65 @@ func TestGenManNoGenTag(t *testing.T) {
|
||||||
unexpected := translate("#HISTORY")
|
unexpected := translate("#HISTORY")
|
||||||
checkStringOmits(t, found, unexpected)
|
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 a new issue