github.com/switchupcb/yaegi@v0.10.2/_test/issue-1187.go (about)

     1  package main
     2  
     3  import (
     4  	"io"
     5  	"io/ioutil"
     6  	"os"
     7  )
     8  
     9  type sink interface {
    10  	io.Writer
    11  	io.Closer
    12  }
    13  
    14  func newSink() sink {
    15  	// return os.Stdout	// Stdout is special in yaegi tests
    16  	file, err := ioutil.TempFile("", "yaegi-test.*")
    17  	if err != nil {
    18  		panic(err)
    19  	}
    20  	return file
    21  }
    22  
    23  func main() {
    24  	s := newSink()
    25  	n, err := s.Write([]byte("Hello\n"))
    26  	if err != nil {
    27  		panic(err)
    28  	}
    29  	var writer io.Writer = s
    30  	m, err := writer.Write([]byte("Hello\n"))
    31  	if err != nil {
    32  		panic(err)
    33  	}
    34  	var closer io.Closer = s
    35  	err = closer.Close()
    36  	if err != nil {
    37  		panic(err)
    38  	}
    39  	err = os.Remove(s.(*os.File).Name())
    40  	if err != nil {
    41  		panic(err)
    42  	}
    43  	println(m, n)
    44  }
    45  
    46  // Output:
    47  // 6 6