kube-router/kube-router_test.go
Patrick Hemmer 4fd5cb812a update command line options documentation (#372)
* update command line options documentation

* add test for command line help doc
2018-04-08 00:17:15 +05:30

50 lines
1.0 KiB
Go

package main
import (
"bytes"
"io"
"os"
"sync"
"testing"
)
func TestMainHelp(t *testing.T) {
origStderr := os.Stderr
stderrR, stderrW, _ := os.Pipe()
os.Stderr = stderrW
defer func() { os.Stderr = origStderr }()
stderrBuf := bytes.NewBuffer(nil)
wg := &sync.WaitGroup{}
wg.Add(1)
go func() {
io.Copy(stderrBuf, stderrR)
wg.Done()
}()
origArgs := os.Args
os.Args = []string{"kube-router", "--help"}
defer func() { os.Args = origArgs }()
if err := Main(); err != nil {
t.Fatalf("kube-router exited with error: %s\n", err)
}
stderrW.Close()
wg.Wait()
docF, err := os.Open("Documentation/README.md")
if err != nil {
t.Fatalf("could not open Documentation/README.md: %s\n", err)
}
docBuf := bytes.NewBuffer(nil)
docBuf.ReadFrom(docF)
docF.Close()
exp := append([]byte("```\n"), stderrBuf.Bytes()...)
exp = append(exp, []byte("```\n")...)
if !bytes.Contains(docBuf.Bytes(), exp) {
t.Errorf("Documentation/README.md 'command line options' section does not match `kube-router --help`.\nExpected:\n%s", exp)
}
}