mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-06 12:03:41 +00:00
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
//go:build windows || darwin || (linux && !baremetal && !wasi)
|
|
|
|
// Copyright 2021 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Test pipes on Unix and Windows systems.
|
|
|
|
package os_test
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
// TestSmokePipe is a simple smoke test for Pipe().
|
|
func TestSmokePipe(t *testing.T) {
|
|
// Procedure:
|
|
// 1. Get the bytes
|
|
// 2. Light the bytes on fire
|
|
// 3. Smoke the bytes
|
|
|
|
r, w, err := os.Pipe()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
return // TODO: remove once Fatal is fatal
|
|
}
|
|
defer r.Close()
|
|
defer w.Close()
|
|
|
|
msg := []byte("Sed nvlla nisi ardva virtvs")
|
|
n, err := w.Write(msg)
|
|
if err != nil {
|
|
t.Errorf("Writing to fresh pipe failed, error %v", err)
|
|
}
|
|
want := len(msg)
|
|
if n != want {
|
|
t.Errorf("Writing to fresh pipe wrote %d bytes, expected %d", n, want)
|
|
}
|
|
|
|
buf := make([]byte, 2*len(msg))
|
|
n, err = r.Read(buf)
|
|
if err != nil {
|
|
t.Errorf("Reading from pipe failed, error %v", err)
|
|
}
|
|
if n != want {
|
|
t.Errorf("Reading from pipe got %d bytes, expected %d", n, want)
|
|
}
|
|
// Read() does not set len(buf), so do it here.
|
|
buf = buf[:n]
|
|
if !bytes.Equal(buf, msg) {
|
|
t.Errorf("Reading from fresh pipe got wrong bytes")
|
|
}
|
|
}
|