cli/pkg/iostreams/iostreams_test.go
2021-08-23 16:09:08 +02:00

68 lines
1.3 KiB
Go

package iostreams
import (
"errors"
"testing"
)
func TestIOStreams_ForceTerminal(t *testing.T) {
tests := []struct {
name string
iostreams *IOStreams
arg string
wantTTY bool
wantWidth int
}{
{
name: "explicit width",
iostreams: &IOStreams{},
arg: "72",
wantTTY: true,
wantWidth: 72,
},
{
name: "measure width",
iostreams: &IOStreams{
ttySize: func() (int, int, error) {
return 72, 0, nil
},
},
arg: "true",
wantTTY: true,
wantWidth: 72,
},
{
name: "measure width fails",
iostreams: &IOStreams{
ttySize: func() (int, int, error) {
return -1, -1, errors.New("ttySize sabotage!")
},
},
arg: "true",
wantTTY: true,
wantWidth: 80,
},
{
name: "apply percentage",
iostreams: &IOStreams{
ttySize: func() (int, int, error) {
return 72, 0, nil
},
},
arg: "50%",
wantTTY: true,
wantWidth: 36,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tt.iostreams.ForceTerminal(tt.arg)
if isTTY := tt.iostreams.IsStdoutTTY(); isTTY != tt.wantTTY {
t.Errorf("IOStreams.IsStdoutTTY() = %v, want %v", isTTY, tt.wantTTY)
}
if tw := tt.iostreams.TerminalWidth(); tw != tt.wantWidth {
t.Errorf("IOStreams.TerminalWidth() = %v, want %v", tw, tt.wantWidth)
}
})
}
}