blob: cbb251fad02765723e17a288f4e6e6e940db005a [file] [log] [blame]
Jaewoong Jung5f3fb4b2018-12-13 15:01:46 -08001// Copyright 2018 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package bpf
16
17import (
18 "io/ioutil"
19 "os"
20 "testing"
21
22 "android/soong/android"
Colin Cross815daf92019-05-14 16:05:20 -070023 "android/soong/cc"
Jaewoong Jung5f3fb4b2018-12-13 15:01:46 -080024)
25
26var buildDir string
27
28func setUp() {
29 var err error
30 buildDir, err = ioutil.TempDir("", "genrule_test")
31 if err != nil {
32 panic(err)
33 }
34}
35
36func tearDown() {
37 os.RemoveAll(buildDir)
38}
39
40func TestMain(m *testing.M) {
41 run := func() int {
42 setUp()
43 defer tearDown()
44
45 return m.Run()
46 }
47
48 os.Exit(run())
49}
50
51func testContext(bp string) *android.TestContext {
Jaewoong Jung5f3fb4b2018-12-13 15:01:46 -080052 mockFS := map[string][]byte{
Jaewoong Jung5f3fb4b2018-12-13 15:01:46 -080053 "bpf.c": nil,
54 "BpfTest.cpp": nil,
55 }
56
Colin Cross815daf92019-05-14 16:05:20 -070057 ctx := cc.CreateTestContext(bp, mockFS, android.Android)
58 ctx.RegisterModuleType("bpf", android.ModuleFactoryAdaptor(bpfFactory))
59 ctx.Register()
Jaewoong Jung5f3fb4b2018-12-13 15:01:46 -080060
61 return ctx
62}
63
64func TestBpfDataDependency(t *testing.T) {
65 config := android.TestArchConfig(buildDir, nil)
66 bp := `
67 bpf {
68 name: "bpf.o",
69 srcs: ["bpf.c"],
70 }
71
72 cc_test {
73 name: "vts_test_binary_bpf_module",
74 srcs: ["BpfTest.cpp"],
75 data: [":bpf.o"],
Colin Cross815daf92019-05-14 16:05:20 -070076 gtest: false,
Jaewoong Jung5f3fb4b2018-12-13 15:01:46 -080077 }
78 `
79
80 ctx := testContext(bp)
81 _, errs := ctx.ParseFileList(".", []string{"Android.bp"})
82 if errs == nil {
83 _, errs = ctx.PrepareBuildActions(config)
84 }
85 if errs != nil {
86 t.Fatal(errs)
87 }
88
89 // We only verify the above BP configuration is processed successfully since the data property
90 // value is not available for testing from this package.
91 // TODO(jungjw): Add a check for data or move this test to the cc package.
92}