internal/gocore/test: DRY core-loading block
This code was the same in four different places. At this point it seems
cleaner to abstract it.
Change-Id: I512c05232bd06f2a7d3524b7889ea3680b49afb5
Reviewed-on: https://go-review.googlesource.com/c/debug/+/618975
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/internal/gocore/gocore_test.go b/internal/gocore/gocore_test.go
index c599db3..90889ef 100644
--- a/internal/gocore/gocore_test.go
+++ b/internal/gocore/gocore_test.go
@@ -24,6 +24,19 @@
"golang.org/x/debug/internal/testenv"
)
+func loadCore(t *testing.T, corePath, base, exePath string) *Process {
+ t.Helper()
+ c, err := core.Core(corePath, base, exePath)
+ if err != nil {
+ t.Fatalf("can't load test core file: %s", err)
+ }
+ p, err := Core(c)
+ if err != nil {
+ t.Fatalf("can't parse Go core: %s", err)
+ }
+ return p
+}
+
// loadExample loads a simple core file which resulted from running the
// following program on linux/amd64 with go 1.9.0 (the earliest supported runtime):
//
@@ -37,15 +50,7 @@
if runtime.GOOS == "android" {
t.Skip("skipping test on android")
}
- c, err := core.Core("testdata/core", "testdata", "")
- if err != nil {
- t.Fatalf("can't load test core file: %s", err)
- }
- p, err := Core(c)
- if err != nil {
- t.Fatalf("can't parse Go core: %s", err)
- }
- return p
+ return loadCore(t, "testdata/core", "testdata", "")
}
func loadExampleVersion(t *testing.T, version string) *Process {
@@ -75,15 +80,7 @@
file = fmt.Sprintf("testdata/core%s", version)
base = "testdata"
}
- c, err := core.Core(file, base, "")
- if err != nil {
- t.Fatalf("can't load test core file: %s", err)
- }
- p, err := Core(c)
- if err != nil {
- t.Fatalf("can't parse Go core: %s", err)
- }
- return p
+ return loadCore(t, file, base, "")
}
// loadExampleGenerated generates a core from a binary built with
@@ -108,15 +105,7 @@
if err != nil {
t.Fatalf("generateCore() got err %v want nil", err)
}
- c, err := core.Core(file, "", "")
- if err != nil {
- t.Fatalf("can't load test core file: %s", err)
- }
- p, err := Core(c)
- if err != nil {
- t.Fatalf("can't parse Go core: %s", err)
- }
- return p
+ return loadCore(t, file, "", "")
}
func setupCorePattern(t *testing.T) func() {
@@ -442,15 +431,7 @@
exe := filepath.Join(dir, name)
file := filepath.Join(dir, "core")
- c, err := core.Core(file, dir, exe)
- if err != nil {
- t.Fatalf("can't load test core file: %s", err)
- }
- p, err := Core(c)
- if err != nil {
- t.Fatalf("can't parse Go core: %s", err)
- }
- return p
+ return loadCore(t, file, dir, exe)
}
func TestRuntimeTypes(t *testing.T) {