47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"flag"
|
|
"testing"
|
|
)
|
|
|
|
func TestFlagDocIndent(t *testing.T) {
|
|
// Tests the prettify() and indent() function. The indent() function
|
|
// differs by Go version, due to differences in "flags" package across
|
|
// versions. Run with multiple versions of Go to ensure that doc output
|
|
// is properly indented, regardless of Go version.
|
|
|
|
var fs flag.FlagSet
|
|
var buf bytes.Buffer
|
|
fs.SetOutput(&buf)
|
|
|
|
fs.String("foo", "", prettify(`
|
|
This is a flag doc string.
|
|
It has multiple lines.
|
|
More than two, actually.`))
|
|
fs.Int("bar", 100, prettify(`This is a simple flag doc string.`))
|
|
fs.Bool("baz", false, prettify(`
|
|
This is another long doc string.
|
|
It also has multiple lines. But not as long as the first one.`))
|
|
|
|
fs.PrintDefaults()
|
|
|
|
expected :=
|
|
` -bar int
|
|
This is a simple flag doc string. (default 100)
|
|
-baz
|
|
This is another long doc string.
|
|
It also has multiple lines. But not as long as the first one.
|
|
-foo string
|
|
This is a flag doc string.
|
|
It has multiple lines.
|
|
More than two, actually.
|
|
`
|
|
|
|
actual := buf.String()
|
|
if actual != expected {
|
|
t.Errorf("Flag output had wrong indentation.\nExpecting:\n%s\nGot:\n%s", expected, actual)
|
|
}
|
|
}
|