package pflag import ( "bytes" "io" "testing" ) const expectedOutput = ` --long-form Some description --long-form2 Some description with multiline -s, --long-name Some description -t, --long-name2 Some description with multiline ` func setUpPFlagSet(buf io.Writer) *FlagSet { f := NewFlagSet("test", ExitOnError) f.Bool("long-form", false, "Some description") f.Bool("long-form2", false, "Some description\n with multiline") f.BoolP("long-name", "s", false, "Some description") f.BoolP("long-name2", "t", false, "Some description with\n multiline") f.SetOutput(buf) return f } func TestPrintUsage(t *testing.T) { buf := bytes.Buffer{} f := setUpPFlagSet(&buf) f.PrintDefaults() res := buf.String() if res != expectedOutput { t.Errorf("Expected \n%s \nActual \n%s", expectedOutput, res) } } func setUpPFlagSet2(buf io.Writer) *FlagSet { f := NewFlagSet("test", ExitOnError) f.Bool("long-form", false, "Some description") f.Bool("long-form2", false, "Some description\n with multiline") f.BoolP("long-name", "s", false, "Some description") f.BoolP("long-name2", "t", false, "Some description with\n multiline") f.StringP("some-very-long-arg", "l", "test", "Some very long description having break the limit") f.StringP("other-very-long-arg", "o", "long-default-value", "Some very long description having break the limit") f.String("some-very-long-arg2", "very long default value", "Some very long description\nwith line break\nmultiple") f.SetOutput(buf) return f } const expectedOutput2 = ` --long-form Some description --long-form2 Some description with multiline -s, --long-name Some description -t, --long-name2 Some description with multiline -o, --other-very-long-arg string Some very long description having break the limit (default "long-default-value") -l, --some-very-long-arg string Some very long description having break the limit (default "test") --some-very-long-arg2 string Some very long description with line break multiple (default "very long default value") ` func TestPrintUsage_2(t *testing.T) { buf := bytes.Buffer{} f := setUpPFlagSet2(&buf) res := f.FlagUsagesWrapped(80) if res != expectedOutput2 { t.Errorf("Expected \n%q \nActual \n%q", expectedOutput2, res) } }