// Copyright 2014 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 http2 import ( "fmt" "strings" "testing" ) func TestGoroutineLock(t *testing.T) { oldDebug := DebugGoroutines DebugGoroutines = true defer func() { DebugGoroutines = oldDebug }() g := newGoroutineLock() g.check() sawPanic := make(chan interface{}) go func() { defer func() { sawPanic <- recover() }() g.check() // should panic }() e := <-sawPanic if e == nil { t.Fatal("did not see panic from check in other goroutine") } if !strings.Contains(fmt.Sprint(e), "wrong goroutine") { t.Errorf("expected on see panic about running on the wrong goroutine; got %v", e) } }