Mercurial > hg > CbC > CbC_gcc
view libgo/go/internal/poll/error_test.go @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
// Copyright 2019 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. package poll_test import ( "fmt" "net" "os" "testing" "time" ) func TestReadError(t *testing.T) { t.Run("ErrNotPollable", func(t *testing.T) { f, err := badStateFile() if err != nil { t.Skip(err) } defer f.Close() // Give scheduler a chance to have two separated // goroutines: an event poller and an event waiter. time.Sleep(100 * time.Millisecond) var b [1]byte _, err = f.Read(b[:]) if perr := parseReadError(err, isBadStateFileError); perr != nil { t.Fatal(perr) } }) } func parseReadError(nestedErr error, verify func(error) (string, bool)) error { err := nestedErr if nerr, ok := err.(*net.OpError); ok { err = nerr.Err } if nerr, ok := err.(*os.PathError); ok { err = nerr.Err } if nerr, ok := err.(*os.SyscallError); ok { err = nerr.Err } if s, ok := verify(err); !ok { return fmt.Errorf("got %v; want %s", nestedErr, s) } return nil }