blob: 726922a459be6d0135b8d64c4ac4740e749ad3fa [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can
// found in the LICENSE file.
package build
import (
"io"
"io/ioutil"
"os"
"testing"
)
func TestGetBuildID(t *testing.T) {
tempDir, err := ioutil.TempDir("", "")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(tempDir)
buildIDFile, err := fileWithContent(tempDir, "abcd")
if err != nil {
t.Fatal(err)
}
cases := []struct {
name string
bin Binary
err error
}{
{
name: "basic",
bin: Binary{
Debug: "foo.debug",
BuildIDFile: buildIDFile,
},
err: nil,
},
{
name: "nonexistent build ID file",
bin: Binary{
Debug: "foo.debug",
BuildIDFile: "i/do/not/exist",
},
err: ErrBuildIDNotFound,
},
{
name: "no build ID file",
bin: Binary{
Debug: "foo.debug",
BuildIDFile: "",
},
err: ErrBuildIDNotFound,
},
{
name: "prebuilt binary with build ID in name",
bin: Binary{
Debug: "../../prebuilt/foo/.build-id/ab/cd.debug",
BuildIDFile: "",
},
err: nil,
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
id, err := c.bin.ELFBuildID(tempDir)
if err == c.err {
if (c.err == nil && id != "abcd") || (c.err == ErrBuildIDNotFound && id != "") {
t.Errorf("invalid build ID found: %q", id)
}
}
})
}
}
func fileWithContent(dir, content string) (string, error) {
f, err := ioutil.TempFile(dir, "")
if err != nil {
return "", err
}
defer f.Close()
if _, err := io.WriteString(f, content); err != nil {
return "", err
}
return f.Name(), nil
}