Files
Anand Kumar Singh 722020678f Migrate to ginkgo v2 (#5809)
* migrate to ginkgo v2 for tests

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* update to ginkgo/v2

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* update to ginkgo v2

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* use ginkgo binary for tests

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* update to ginkgo v2

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* remove GOFLAG while downloading ginkgo

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* remove FlakeAttempts from tests

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* use ginkgo v2.1.4

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* mod cleanup and use mod to run ginkgo

Signed-off-by: anandrkskd <anandrkskd@gmail.com>

* remove unnecessary goget-ginkgo from sctipt

Signed-off-by: anandrkskd <anandrkskd@gmail.com>
2022-07-06 10:31:01 +00:00
..
2021-05-17 13:05:21 -04:00
2022-07-06 10:31:01 +00:00
2022-07-06 10:31:01 +00:00

go-expect

Go Build Status GoDoc NetflixOSS Lifecycle

Package expect provides an expect-like interface to automate control of applications. It is unlike expect in that it does not spawn or manage process lifecycle. This package only focuses on expecting output and sending input through it's pseudoterminal.

Usage

os.Exec example

package main

import (
	"log"
	"os"
	"os/exec"
	"time"

	expect "github.com/Netflix/go-expect"
)

func main() {
	c, err := expect.NewConsole(expect.WithStdout(os.Stdout))
	if err != nil {
		log.Fatal(err)
	}
	defer c.Close()

	cmd := exec.Command("vi")
	cmd.Stdin = c.Tty()
	cmd.Stdout = c.Tty()
	cmd.Stderr = c.Tty()

	go func() {
		c.ExpectEOF()
	}()

	err = cmd.Start()
	if err != nil {
		log.Fatal(err)
	}

	time.Sleep(time.Second)
	c.Send("iHello world\x1b")
	time.Sleep(time.Second)
	c.Send("dd")
	time.Sleep(time.Second)
	c.SendLine(":q!")

	err = cmd.Wait()
	if err != nil {
		log.Fatal(err)
	}
}

golang.org/x/crypto/ssh/terminal example

package main

import (
	"fmt"

	"golang.org/x/crypto/ssh/terminal"

	expect "github.com/Netflix/go-expect"
)

func getPassword(fd int) string {
	bytePassword, _ := terminal.ReadPassword(fd)

	return string(bytePassword)
}

func main() {
	c, _ := expect.NewConsole()

	defer c.Close()

	donec := make(chan struct{})
	go func() {
		defer close(donec)
		c.SendLine("hunter2")
	}()

	echoText := getPassword(int(c.Tty().Fd()))

	<-donec

	fmt.Printf("\nPassword from stdin: %s", echoText)
}