mirror of https://github.com/golang/go.git
debug/buildinfo: add old-Go and not-Go tests
There is currently no coverage for the pre-1.18 buildinfo format, or for parsing non-Go binaries. Add basic tests for each of these. Updates #68592. Change-Id: Iec14d29ffc1392e46f592c0c7bebf2eb75f7d0d3 Reviewed-on: https://go-review.googlesource.com/c/go/+/601457 Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Michael Pratt <mpratt@google.com>
This commit is contained in:
parent
d531e344ae
commit
28aed4015e
|
|
@ -248,6 +248,62 @@ func TestReadFile(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// Test117 verifies that parsing of the old, pre-1.18 format works.
|
||||
func Test117(t *testing.T) {
|
||||
// go117 was generated for linux-amd64 with:
|
||||
//
|
||||
// main.go:
|
||||
//
|
||||
// package main
|
||||
// func main() {}
|
||||
//
|
||||
// GOTOOLCHAIN=go1.17 go mod init example.com/go117
|
||||
// GOTOOLCHAIN=go1.17 go build
|
||||
//
|
||||
// TODO(prattmic): Ideally this would be built on the fly to better
|
||||
// cover all executable formats, but then we need a network connection
|
||||
// to download an old Go toolchain.
|
||||
info, err := buildinfo.ReadFile("testdata/go117")
|
||||
if err != nil {
|
||||
t.Fatalf("ReadFile got err %v, want nil", err)
|
||||
}
|
||||
|
||||
if info.GoVersion != "go1.17" {
|
||||
t.Errorf("GoVersion got %s want go1.17", info.GoVersion)
|
||||
}
|
||||
if info.Path != "example.com/go117" {
|
||||
t.Errorf("Path got %s want example.com/go117", info.Path)
|
||||
}
|
||||
if info.Main.Path != "example.com/go117" {
|
||||
t.Errorf("Main.Path got %s want example.com/go117", info.Main.Path)
|
||||
}
|
||||
}
|
||||
|
||||
// TestNotGo verifies that parsing of a non-Go binary returns the proper error.
|
||||
func TestNotGo(t *testing.T) {
|
||||
// notgo was generated for linux-amd64 with:
|
||||
//
|
||||
// main.c:
|
||||
//
|
||||
// int main(void) { return 0; }
|
||||
//
|
||||
// cc -o notgo main.c
|
||||
//
|
||||
// TODO(prattmic): Ideally this would be built on the fly to better
|
||||
// cover all executable formats, but then we need to encode the
|
||||
// intricacies of calling each platform's C compiler.
|
||||
_, err := buildinfo.ReadFile("testdata/notgo")
|
||||
if err == nil {
|
||||
t.Fatalf("ReadFile got nil err, want non-nil")
|
||||
}
|
||||
|
||||
// The precise error text here isn't critical, but we want something
|
||||
// like errNotGoExe rather than e.g., a file read error.
|
||||
if !strings.Contains(err.Error(), "not a Go executable") {
|
||||
t.Errorf("ReadFile got err %v want not a Go executable", err)
|
||||
}
|
||||
}
|
||||
|
||||
// FuzzIssue57002 is a regression test for golang.org/issue/57002.
|
||||
//
|
||||
// The cause of issue 57002 is when pointerSize is not being checked,
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue