diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5a0ff1e..2a5e51d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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 diff --git a/README.md b/README.md index a4fe767..b6a1cf5 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/io_test.go b/io_test.go index 4f3d8a8..2d88a50 100644 --- a/io_test.go +++ b/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)