blob: a2010ff2f1c8ebc73fa0184dc7fdf94c36556dbf [file] [log] [blame]
// Copyright 2018 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package bpf
import (
"os"
"testing"
"android/soong/android"
"android/soong/cc"
)
func TestMain(m *testing.M) {
os.Exit(m.Run())
}
var prepareForBpfTest = android.GroupFixturePreparers(
cc.PrepareForTestWithCcDefaultModules,
android.FixtureMergeMockFs(
map[string][]byte{
"bpf.c": nil,
"bpf_invalid_name.c": nil,
"BpfTest.cpp": nil,
},
),
PrepareForTestWithBpf,
)
func TestBpfDataDependency(t *testing.T) {
bp := `
bpf {
name: "bpf.o",
srcs: ["bpf.c"],
}
cc_test {
name: "vts_test_binary_bpf_module",
srcs: ["BpfTest.cpp"],
data: [":bpf.o"],
gtest: false,
}
`
prepareForBpfTest.RunTestWithBp(t, bp)
// We only verify the above BP configuration is processed successfully since the data property
// value is not available for testing from this package.
// TODO(jungjw): Add a check for data or move this test to the cc package.
}
func TestBpfSourceName(t *testing.T) {
bp := `
bpf {
name: "bpf_invalid_name.o",
srcs: ["bpf_invalid_name.c"],
}
`
prepareForBpfTest.ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(
`\QAndroid.bp:2:3: module "bpf_invalid_name.o" variant "android_common": invalid character '_' in source name\E`)).
RunTestWithBp(t, bp)
}
func TestBpfWithBazel(t *testing.T) {
bp := `
bpf {
name: "bpf.o",
srcs: ["bpf.c"],
bazel_module: { label: "//bpf" },
}
`
result := android.GroupFixturePreparers(
prepareForBpfTest, android.FixtureModifyConfig(func(config android.Config) {
config.BazelContext = android.MockBazelContext{
OutputBaseDir: "outputbase",
LabelToOutputFiles: map[string][]string{
"//bpf": []string{"bpf.o"}}}
})).RunTestWithBp(t, bp)
output := result.Module("bpf.o", "android_common").(*bpf)
expectedOutputFiles := []string{"outputbase/execroot/__main__/bpf.o"}
android.AssertDeepEquals(t, "output files", expectedOutputFiles, output.objs.Strings())
}