mirror of
https://github.com/creack/pty.git
synced 2026-04-01 02:57:06 +09:00
Merge pull request #180 from WeidiDeng/non-blocking
Add non-blocking notes
This commit is contained in:
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -57,4 +57,4 @@ jobs:
|
||||
# Run the tests again 100 times without verbose.
|
||||
- if: ${{ matrix.go_version != '1.6.x' }}
|
||||
name: Many Tests
|
||||
run: go test -count=100 -timeout=10s
|
||||
run: go test -count=100 -timeout=30s
|
||||
|
||||
@@ -10,7 +10,7 @@ go get github.com/creack/pty
|
||||
|
||||
## Examples
|
||||
|
||||
Note that those examples are for demonstration purpose only, to showcase how to use the library. They are not meant to be used in any kind of production environment.
|
||||
Note that those examples are for demonstration purpose only, to showcase how to use the library. They are not meant to be used in any kind of production environment. If you want to **set deadlines to work** and `Close()` **interrupting** `Read()` on the returned `*os.File`, you will need to call `syscall.SetNonblock` manually.
|
||||
|
||||
### Command
|
||||
|
||||
|
||||
11
io_test.go
11
io_test.go
@@ -9,6 +9,7 @@ import (
|
||||
"os"
|
||||
"runtime"
|
||||
"sync"
|
||||
"syscall"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
@@ -28,9 +29,10 @@ var glTestFdLock sync.Mutex
|
||||
//
|
||||
//nolint:paralleltest // Potential in (*os.File).Fd().
|
||||
func TestReadDeadline(t *testing.T) {
|
||||
t.Skip("Disabling while investigating race.")
|
||||
|
||||
ptmx, success := prepare(t)
|
||||
if err := syscall.SetNonblock(int(ptmx.Fd()), true); err != nil {
|
||||
t.Fatalf("Error: set non block: %s", err)
|
||||
}
|
||||
|
||||
if err := ptmx.SetDeadline(time.Now().Add(timeout / 10)); err != nil {
|
||||
if errors.Is(err, os.ErrNoDeadline) {
|
||||
@@ -59,9 +61,10 @@ func TestReadDeadline(t *testing.T) {
|
||||
//
|
||||
//nolint:paralleltest // Potential in (*os.File).Fd().
|
||||
func TestReadClose(t *testing.T) {
|
||||
t.Skip("Disabling while investigating race.")
|
||||
|
||||
ptmx, success := prepare(t)
|
||||
if err := syscall.SetNonblock(int(ptmx.Fd()), true); err != nil {
|
||||
t.Fatalf("Error: set non block: %s", err)
|
||||
}
|
||||
|
||||
go func() {
|
||||
time.Sleep(timeout / 10)
|
||||
|
||||
Reference in New Issue
Block a user