
The repository is being switched from the personal account github.com/derekparker/delve to the organization account github.com/go-delve/delve. This patch updates imports and docs, while preserving things which should not be changed such as my name in the CHANGELOG and in TODO comments.
46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
package proc_test
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/go-delve/delve/pkg/proc"
|
|
protest "github.com/go-delve/delve/pkg/proc/test"
|
|
)
|
|
|
|
func TestGoroutineCreationLocation(t *testing.T) {
|
|
protest.AllowRecording(t)
|
|
withTestProcess("goroutinestackprog", t, func(p proc.Process, fixture protest.Fixture) {
|
|
bp, err := setFunctionBreakpoint(p, "main.agoroutine")
|
|
assertNoError(err, t, "BreakByLocation()")
|
|
assertNoError(proc.Continue(p), t, "Continue()")
|
|
|
|
gs, _, err := proc.GoroutinesInfo(p, 0, 0)
|
|
assertNoError(err, t, "GoroutinesInfo")
|
|
|
|
for _, g := range gs {
|
|
currentLocation := g.UserCurrent()
|
|
currentFn := currentLocation.Fn
|
|
if currentFn != nil && currentFn.BaseName() == "agoroutine" {
|
|
createdLocation := g.Go()
|
|
if createdLocation.Fn == nil {
|
|
t.Fatalf("goroutine creation function is nil")
|
|
}
|
|
if createdLocation.Fn.BaseName() != "main" {
|
|
t.Fatalf("goroutine creation function has wrong name: %s", createdLocation.Fn.BaseName())
|
|
}
|
|
if filepath.Base(createdLocation.File) != "goroutinestackprog.go" {
|
|
t.Fatalf("goroutine creation file incorrect: %s", filepath.Base(createdLocation.File))
|
|
}
|
|
if createdLocation.Line != 23 {
|
|
t.Fatalf("goroutine creation line incorrect: %v", createdLocation.Line)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
p.ClearBreakpoint(bp.Addr)
|
|
proc.Continue(p)
|
|
})
|
|
}
|