blob: 6936588d65e8afcb468feca836ad5903743ec8f2 [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 be
// found in the LICENSE file.
package build
import (
"io/ioutil"
"path/filepath"
"testing"
)
func TestGetBuildID(t *testing.T) {
tempDir := t.TempDir()
buildIDFile := filepath.Join(tempDir, "buildid")
if err := ioutil.WriteFile(buildIDFile, []byte("abcd"), 0o600); err != nil {
t.Fatal(err)
}
cases := []struct {
name string
bin Binary
err error
}{
{
name: "basic",
bin: Binary{
Debug: "foo.debug",
BuildIDFile: "buildid",
},
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 {
t.Errorf("Expected %v, got %v", err, c.err)
}
if (c.err == nil && id != "abcd") || (c.err == ErrBuildIDNotFound && id != "") {
t.Errorf("invalid build ID found: %q", id)
}
})
}
}