xref: /aosp_15_r20/build/soong/partner/androidmk/androidmk_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker// Copyright 2016 Google Inc. All rights reserved.
2*333d2b36SAndroid Build Coastguard Worker//
3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*333d2b36SAndroid Build Coastguard Worker//
7*333d2b36SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*333d2b36SAndroid Build Coastguard Worker//
9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*333d2b36SAndroid Build Coastguard Worker// limitations under the License.
14*333d2b36SAndroid Build Coastguard Worker
15*333d2b36SAndroid Build Coastguard Workerpackage main
16*333d2b36SAndroid Build Coastguard Worker
17*333d2b36SAndroid Build Coastguard Workerimport (
18*333d2b36SAndroid Build Coastguard Worker	"bytes"
19*333d2b36SAndroid Build Coastguard Worker	"fmt"
20*333d2b36SAndroid Build Coastguard Worker	"strings"
21*333d2b36SAndroid Build Coastguard Worker	"testing"
22*333d2b36SAndroid Build Coastguard Worker
23*333d2b36SAndroid Build Coastguard Worker	"android/soong/androidmk/androidmk"
24*333d2b36SAndroid Build Coastguard Worker	"android/soong/bpfix/bpfix"
25*333d2b36SAndroid Build Coastguard Worker
26*333d2b36SAndroid Build Coastguard Worker	_ "android/soong/partner/bpfix/extensions"
27*333d2b36SAndroid Build Coastguard Worker)
28*333d2b36SAndroid Build Coastguard Worker
29*333d2b36SAndroid Build Coastguard Workervar testCases = []struct {
30*333d2b36SAndroid Build Coastguard Worker	desc     string
31*333d2b36SAndroid Build Coastguard Worker	in       string
32*333d2b36SAndroid Build Coastguard Worker	expected string
33*333d2b36SAndroid Build Coastguard Worker}{
34*333d2b36SAndroid Build Coastguard Worker	{
35*333d2b36SAndroid Build Coastguard Worker		desc: "headers replacement",
36*333d2b36SAndroid Build Coastguard Worker		in: `
37*333d2b36SAndroid Build Coastguard Workerinclude $(CLEAR_VARS)
38*333d2b36SAndroid Build Coastguard WorkerLOCAL_MODULE := test
39*333d2b36SAndroid Build Coastguard WorkerLOCAL_SRC_FILES := a.c
40*333d2b36SAndroid Build Coastguard WorkerLOCAL_C_INCLUDES := test1 $(TARGET_OUT_HEADERS)/my_headers test2
41*333d2b36SAndroid Build Coastguard Workerinclude $(BUILD_SHARED_LIBRARY)`,
42*333d2b36SAndroid Build Coastguard Worker		expected: `
43*333d2b36SAndroid Build Coastguard Workercc_library_shared {
44*333d2b36SAndroid Build Coastguard Worker    name: "test",
45*333d2b36SAndroid Build Coastguard Worker	srcs: ["a.c"],
46*333d2b36SAndroid Build Coastguard Worker	include_dirs: [
47*333d2b36SAndroid Build Coastguard Worker		"test1",
48*333d2b36SAndroid Build Coastguard Worker
49*333d2b36SAndroid Build Coastguard Worker		"test2",
50*333d2b36SAndroid Build Coastguard Worker	],
51*333d2b36SAndroid Build Coastguard Worker	header_libs: ["my_header_lib"]
52*333d2b36SAndroid Build Coastguard Worker}`,
53*333d2b36SAndroid Build Coastguard Worker	},
54*333d2b36SAndroid Build Coastguard Worker}
55*333d2b36SAndroid Build Coastguard Worker
56*333d2b36SAndroid Build Coastguard Workerfunc TestEndToEnd(t *testing.T) {
57*333d2b36SAndroid Build Coastguard Worker	// Skip checking Android.mk path with cleaning "ANDROID_BUILD_TOP"
58*333d2b36SAndroid Build Coastguard Worker	t.Setenv("ANDROID_BUILD_TOP", "")
59*333d2b36SAndroid Build Coastguard Worker
60*333d2b36SAndroid Build Coastguard Worker	for i, test := range testCases {
61*333d2b36SAndroid Build Coastguard Worker		expected, err := bpfix.Reformat(test.expected)
62*333d2b36SAndroid Build Coastguard Worker		if err != nil {
63*333d2b36SAndroid Build Coastguard Worker			t.Error(err)
64*333d2b36SAndroid Build Coastguard Worker		}
65*333d2b36SAndroid Build Coastguard Worker
66*333d2b36SAndroid Build Coastguard Worker		got, errs := androidmk.ConvertFile(fmt.Sprintf("<testcase %d>", i), bytes.NewBufferString(test.in))
67*333d2b36SAndroid Build Coastguard Worker		if len(errs) > 0 {
68*333d2b36SAndroid Build Coastguard Worker			t.Errorf("Unexpected errors: %q", errs)
69*333d2b36SAndroid Build Coastguard Worker			continue
70*333d2b36SAndroid Build Coastguard Worker		}
71*333d2b36SAndroid Build Coastguard Worker
72*333d2b36SAndroid Build Coastguard Worker		if got != expected {
73*333d2b36SAndroid Build Coastguard Worker			t.Errorf("failed testcase '%s'\ninput:\n%s\n\nexpected:\n%s\ngot:\n%s\n", test.desc, strings.TrimSpace(test.in), expected, got)
74*333d2b36SAndroid Build Coastguard Worker		}
75*333d2b36SAndroid Build Coastguard Worker	}
76*333d2b36SAndroid Build Coastguard Worker}
77