blob: 1f9d1538aa203e486dc822ba4e6f2a5694ac7c68 [file] [log] [blame]
// Copyright 2021 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.
//go:build go1.18
// +build go1.18
package buildinfo
import (
"os"
"testing"
"github.com/google/go-cmp/cmp"
"golang.org/x/vuln/internal/test"
)
func TestExtractPackagesAndSymbols(t *testing.T) {
unsupported := map[string]bool{
"darwin/386": true,
"darwin/arm": true,
}
for _, g := range []string{"linux", "darwin", "windows", "freebsd"} {
for _, a := range []string{"amd64", "386", "arm", "arm64"} {
goos := g
goarch := a
ga := goos + "/" + goarch
if unsupported[ga] {
continue
}
t.Run(ga, func(t *testing.T) {
binary, done := test.GoBuild(t, "testdata", "", "GOOS", goos, "GOARCH", goarch)
defer done()
f, err := os.Open(binary)
if err != nil {
t.Fatal(err)
}
defer f.Close()
_, syms, _, err := ExtractPackagesAndSymbols(f)
if err != nil {
t.Fatal(err)
}
got := syms["main"]
want := []string{"main", "f", "g"}
if !cmp.Equal(got, want) {
t.Errorf("\ngot %q\nwant %q", got, want)
}
})
}
}
}