github.com/burke/ttyutils@v0.0.0-20160630170808-5017fbbf251a/ttyutils_test.go (about)

     1  package ttyutils_test
     2  
     3  import (
     4  	"os"
     5  	"reflect"
     6  	"testing"
     7  
     8  	"github.com/burke/ttyutils"
     9  	"github.com/kr/pty"
    10  )
    11  
    12  func TestIsTerminal(t *testing.T) {
    13  	mpty, mtty, err := pty.Open()
    14  	if err != nil {
    15  		t.Fatal(err)
    16  	}
    17  	defer mtty.Close()
    18  	defer mpty.Close()
    19  
    20  	if !ttyutils.IsTerminal(mtty.Fd()) {
    21  		t.Error("tty should be reported as a terminal")
    22  	}
    23  	if !ttyutils.IsTerminal(mpty.Fd()) {
    24  		t.Error("pty should be reported as a terminal")
    25  	}
    26  
    27  	null, err := os.Open(os.DevNull)
    28  	if err != nil {
    29  		t.Fatal(err)
    30  	}
    31  	defer null.Close()
    32  
    33  	if ttyutils.IsTerminal(null.Fd()) {
    34  		t.Error("/dev/null should not be reported as a terminal")
    35  	}
    36  }
    37  
    38  func TestWinSize(t *testing.T) {
    39  	mpty, mtty, err := pty.Open()
    40  	if err != nil {
    41  		t.Fatal(err)
    42  	}
    43  	defer mtty.Close()
    44  	defer mpty.Close()
    45  
    46  	size, err := ttyutils.Winsize(mtty)
    47  
    48  	if err != nil {
    49  		t.Fatal(err)
    50  	}
    51  
    52  	if !reflect.DeepEqual(size, ttyutils.Ttysize{Lines: 0, Columns: 0}) {
    53  		t.Errorf("expected 0x0 terminal, got %#v", size)
    54  	}
    55  }