mirror of
https://github.com/cloudnativelabs/kube-router.git
synced 2025-10-10 09:21:04 +02:00
50 lines
1.0 KiB
Go
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)
|
|
}
|
|
}
|