Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions pkg/renamepvc/renamepvc.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,18 +117,18 @@ func (o *renamePVCOptions) confirmCheck() error {
if err != nil {
return err
}
input, err := bufio.NewReader(o.streams.In).ReadString('\n')
if err != nil {
return err
}
switch strings.TrimSuffix(input, "\n") {
case "y", "yes":
return nil
case "n", "no":
return ErrConfirmationNotSuccessful
default:
return ErrConfirmationUnknown

scanner := bufio.NewScanner(o.streams.In)
if scanner.Scan() {
input := scanner.Text()
switch input {
case "y", "yes":
return nil
case "n", "no":
return ErrConfirmationNotSuccessful
}
}
return ErrConfirmationUnknown
}

func getK8sClient(configFlags *genericclioptions.ConfigFlags) (*kubernetes.Clientset, error) {
Expand Down
22 changes: 15 additions & 7 deletions pkg/renamepvc/renamepvc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
k8sErrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/cli-runtime/pkg/genericiooptions"
"k8s.io/client-go/kubernetes/fake"
k8sTesting "k8s.io/client-go/testing"
)
Expand Down Expand Up @@ -113,36 +113,44 @@ func TestPVCRename(t *testing.T) {

func TestConfirmCheck(t *testing.T) {
t.Run("Test confirmCheck with y", func(t *testing.T) {
streams, in, _, _ := genericclioptions.NewTestIOStreams()
streams, in, _, _ := genericiooptions.NewTestIOStreams()
o := renamePVCOptions{streams: streams}
in.WriteString("y\n")
if err := o.confirmCheck(); err != nil {
t.Errorf("confirmCheck - got error %q", err)
}
})
t.Run("Test confirmCheck with skip flag", func(t *testing.T) {
streams, _, _, _ := genericclioptions.NewTestIOStreams()
streams, _, _, _ := genericiooptions.NewTestIOStreams()
o := renamePVCOptions{streams: streams, confirm: true}
if err := o.confirmCheck(); err != nil {
t.Errorf("confirmCheck - got error %q", err)
}
})
t.Run("Test confirmCheck with n", func(t *testing.T) {
streams, in, _, _ := genericclioptions.NewTestIOStreams()
streams, in, _, _ := genericiooptions.NewTestIOStreams()
o := renamePVCOptions{streams: streams}
in.WriteString("n\n")
if err := o.confirmCheck(); !errors.Is(err, ErrConfirmationNotSuccessful) {
t.Errorf("expect %q - got error %q", ErrConfirmationNotSuccessful, err)
}
})
t.Run("Test confirmCheck with unknown", func(t *testing.T) {
streams, in, _, _ := genericclioptions.NewTestIOStreams()
streams, in, _, _ := genericiooptions.NewTestIOStreams()
o := renamePVCOptions{streams: streams}
in.WriteString("unknown\n")
if err := o.confirmCheck(); !errors.Is(err, ErrConfirmationUnknown) {
t.Errorf("expect %q - got error %q", ErrConfirmationUnknown, err)
}
})
t.Run("Test confirmCheck with windows newline", func(t *testing.T) {
streams, in, _, _ := genericiooptions.NewTestIOStreams()
o := renamePVCOptions{streams: streams}
in.WriteString("yes\r\n")
if err := o.confirmCheck(); err != nil {
t.Errorf("confirmCheck - got error %q", err)
}
})
}

// initTestSetup returns renamePVCOptions initialized with a kubernetes fake client and created oldPvc for test
Expand All @@ -153,8 +161,8 @@ func initTestSetup(
extraObjects ...runtime.Object,
) (renamePVCOptions, error) {
// init client
streams, _, _, _ := genericclioptions.NewTestIOStreams()
client := fake.NewSimpleClientset(extraObjects...)
streams, _, _, _ := genericiooptions.NewTestIOStreams()
client := fake.NewClientset(extraObjects...)
// the fake client did not set volumes to bound
// add reactor to set every volume to Phase bound
client.PrependReactor(
Expand Down
Loading