add more tests
parent
44ae5463bc
commit
d809bf2dca
@ -0,0 +1,82 @@
|
||||
package cmdline
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/tal-tech/go-zero/core/lang"
|
||||
)
|
||||
|
||||
func TestEnterToContinue(t *testing.T) {
|
||||
r, w, err := os.Pipe()
|
||||
assert.Nil(t, err)
|
||||
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(2)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
ow := os.Stdout
|
||||
os.Stdout = w
|
||||
fmt.Println()
|
||||
os.Stdout = ow
|
||||
}()
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
or := os.Stdin
|
||||
os.Stdin = r
|
||||
EnterToContinue()
|
||||
os.Stdin = or
|
||||
}()
|
||||
|
||||
wait := make(chan lang.PlaceholderType)
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(wait)
|
||||
}()
|
||||
|
||||
select {
|
||||
case <-time.After(time.Second):
|
||||
t.Error("timeout")
|
||||
case <-wait:
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadLine(t *testing.T) {
|
||||
r, w, err := os.Pipe()
|
||||
assert.Nil(t, err)
|
||||
|
||||
const message = "hello"
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(2)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
ow := os.Stdout
|
||||
os.Stdout = w
|
||||
fmt.Println(message)
|
||||
os.Stdout = ow
|
||||
}()
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
or := os.Stdin
|
||||
os.Stdin = r
|
||||
input := ReadLine("")
|
||||
assert.Equal(t, message, input)
|
||||
os.Stdin = or
|
||||
}()
|
||||
|
||||
wait := make(chan lang.PlaceholderType)
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(wait)
|
||||
}()
|
||||
|
||||
select {
|
||||
case <-time.After(time.Second):
|
||||
t.Error("timeout")
|
||||
case <-wait:
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue