blob: 73a3eaef3581e06113ea1f54f16aff5ac83f7397 [file] [log] [blame]
// Copyright 2022 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 (
"os"
"path/filepath"
"reflect"
"testing"
)
func TestLoadTestList(t *testing.T) {
manifest := `{
"schema_id": "experimental",
"data": [
{
"name": "fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component1.cm",
"labels": [
"//garnet/bin/fuchsia:fuchsia_pkg_test_component1(//build/toolchain/fuchsia:x64)"
],
"tags": [
{
"key": "key",
"value": "value"
}
]
},
{
"name": "fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component2.cm",
"labels": [
"//garnet/bin/fuchsia:fuchsia_pkg(//build/toolchain/fuchsia:x64)"
],
"tags": [
{
"key": "key",
"value": "value"
},
{
"key": "key2",
"value": "value2"
}
]
},
{
"name": "fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component3.cm",
"labels": [
"//garnet/bin/fuchsia:fuchsia_pkg(//build/toolchain/fuchsia:x64)"
]
}
]
}`
expected := map[string]TestListEntry{
"fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component1.cm": {
Name: "fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component1.cm",
Labels: []string{"//garnet/bin/fuchsia:fuchsia_pkg_test_component1(//build/toolchain/fuchsia:x64)"},
Tags: []TestTag{{Key: "key", Value: "value"}},
},
"fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component2.cm": {
Name: "fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component2.cm",
Labels: []string{"//garnet/bin/fuchsia:fuchsia_pkg(//build/toolchain/fuchsia:x64)"},
Tags: []TestTag{{Key: "key", Value: "value"}, {Key: "key2", Value: "value2"}},
},
"fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component3.cm": {
Name: "fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component3.cm",
Labels: []string{"//garnet/bin/fuchsia:fuchsia_pkg(//build/toolchain/fuchsia:x64)"},
},
}
testListPath := filepath.Join(t.TempDir(), "test-list.json")
os.WriteFile(testListPath, []byte(manifest), os.ModePerm)
testListEntries, err := LoadTestList(testListPath)
if err != nil {
t.Fatalf("error loading test list: %s", err)
}
if !reflect.DeepEqual(testListEntries, expected) {
t.Fatalf("got test list: %#v\n\nexpected: %#v", testListEntries, expected)
}
}
func TestLoadTestListVersionMismatch(t *testing.T) {
manifest := `{
"schema_id": "1234",
"data": [
{
"name": "fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component1.cm",
"labels": [
"//garnet/bin/fuchsia:fuchsia_pkg_test_component1(//build/toolchain/fuchsia:x64)"
],
"tags": [
{
"key": "key",
"value": "value"
}
]
}
]
}`
testListPath := filepath.Join(t.TempDir(), "test-list.json")
os.WriteFile(testListPath, []byte(manifest), os.ModePerm)
_, err := LoadTestList(testListPath)
if err == nil {
t.Fatalf("expected an error loading an unknown schema_id")
}
expected := `"schema_id" must be "experimental", found "1234"`
if err.Error() != expected {
t.Fatalf("got error '%s', expected '%s'", err, expected)
}
}
func TestLoadTestListVersionMissing(t *testing.T) {
manifest := `{
"data": [
{
"name": "fuchsia-pkg://fuchsia.com/fuchsia_pkg#meta/component1.cm",
"labels": [
"//garnet/bin/fuchsia:fuchsia_pkg_test_component1(//build/toolchain/fuchsia:x64)"
],
"tags": [
{
"key": "key",
"value": "value"
}
]
}
]
}`
testListPath := filepath.Join(t.TempDir(), "test-list.json")
os.WriteFile(testListPath, []byte(manifest), os.ModePerm)
_, err := LoadTestList(testListPath)
if err == nil {
t.Fatalf("expected an error loading a missing schema_id")
}
expected := `"schema_id" must be "experimental", found ""`
if err.Error() != expected {
t.Fatalf(`got error %q, expected %q`, err, expected)
}
}