Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
93 lines
2.2 KiB
Go
93 lines
2.2 KiB
Go
package cliui
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/ignite/cli/v29/ignite/pkg/cliui/clispinner"
|
|
uilog "github.com/ignite/cli/v29/ignite/pkg/cliui/log"
|
|
"github.com/ignite/cli/v29/ignite/pkg/xio"
|
|
)
|
|
|
|
type fakeSpinner struct {
|
|
active bool
|
|
}
|
|
|
|
func (f *fakeSpinner) SetText(string) clispinner.Spinner { return f }
|
|
func (f *fakeSpinner) SetPrefix(string) clispinner.Spinner { return f }
|
|
func (f *fakeSpinner) SetCharset([]string) clispinner.Spinner { return f }
|
|
func (f *fakeSpinner) SetColor(string) clispinner.Spinner { return f }
|
|
func (f *fakeSpinner) Start() clispinner.Spinner {
|
|
f.active = true
|
|
return f
|
|
}
|
|
|
|
func (f *fakeSpinner) Stop() clispinner.Spinner {
|
|
f.active = false
|
|
return f
|
|
}
|
|
func (f *fakeSpinner) IsActive() bool { return f.active }
|
|
func (f *fakeSpinner) Writer() io.Writer {
|
|
return io.Discard
|
|
}
|
|
|
|
func TestNewWithOptions(t *testing.T) {
|
|
var outBuf, errBuf bytes.Buffer
|
|
session := New(
|
|
WithStdout(xio.NopWriteCloser(&outBuf)),
|
|
WithStderr(xio.NopWriteCloser(&errBuf)),
|
|
WithStdin(io.NopCloser(strings.NewReader(""))),
|
|
IgnoreEvents(),
|
|
WithVerbosity(uilog.VerbosityVerbose),
|
|
)
|
|
t.Cleanup(session.End)
|
|
|
|
require.EqualValues(t, uilog.VerbosityVerbose, session.Verbosity())
|
|
}
|
|
|
|
func TestAskAndAskConfirmSkipUI(t *testing.T) {
|
|
session := New(IgnoreEvents(), WithoutUserInteraction(true))
|
|
t.Cleanup(session.End)
|
|
|
|
require.NoError(t, session.Ask())
|
|
require.NoError(t, session.AskConfirm("continue?"))
|
|
}
|
|
|
|
func TestPauseSpinner(t *testing.T) {
|
|
session := New(IgnoreEvents())
|
|
t.Cleanup(session.End)
|
|
|
|
sp := &fakeSpinner{active: true}
|
|
session.spinner = sp
|
|
|
|
restart := session.PauseSpinner()
|
|
require.False(t, sp.IsActive())
|
|
|
|
restart()
|
|
require.True(t, sp.IsActive())
|
|
}
|
|
|
|
func TestStartSpinnerVerboseWritesText(t *testing.T) {
|
|
var outBuf bytes.Buffer
|
|
session := Session{
|
|
options: sessionOptions{
|
|
verbosity: uilog.VerbosityVerbose,
|
|
},
|
|
out: uilog.NewOutput(uilog.WithStdout(xio.NopWriteCloser(&outBuf))),
|
|
}
|
|
|
|
session.StartSpinner("working")
|
|
require.Contains(t, outBuf.String(), "working")
|
|
}
|
|
|
|
func TestEndIsIdempotent(t *testing.T) {
|
|
session := New(IgnoreEvents())
|
|
session.End()
|
|
require.True(t, session.ended)
|
|
session.End()
|
|
require.True(t, session.ended)
|
|
}
|