github.com/qiniu/go-sdk/v7@v7.27.0/internal/context/context_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package context_test
     5  
     6  import (
     7  	offical_context "context"
     8  	"io"
     9  	"testing"
    10  
    11  	"github.com/qiniu/go-sdk/v7/internal/context"
    12  )
    13  
    14  func TestCause(t *testing.T) {
    15  	ctx, cancel := context.WithCancelCause(context.Background())
    16  
    17  	select {
    18  	case <-ctx.Done():
    19  		t.Fatalf("Expect ctx.Done() is not done")
    20  	default:
    21  	}
    22  
    23  	if err := ctx.Err(); err != nil {
    24  		t.Fatalf("Expect ctx.Err() to return nil, but %s", err)
    25  	}
    26  
    27  	cancel(io.EOF)
    28  
    29  	select {
    30  	case <-ctx.Done():
    31  	default:
    32  		t.Fatalf("Expect ctx.Done() is done")
    33  	}
    34  
    35  	if err := ctx.Err(); err != offical_context.Canceled {
    36  		t.Fatalf("Expect ctx.Err() to return Canceled, but %s", err)
    37  	}
    38  
    39  	if c := context.Cause(ctx); c != io.EOF {
    40  		t.Fatalf("Expect context.Cause(ctx) to return io.EOF, but %T", c)
    41  	}
    42  }