blob: 331dc77703a105aeb461a9c701b5b0fa6761b484 [file] [log] [blame]
Yuntao Xu21be0e22021-11-22 09:30:08 -08001#!/bin/bash -eu
2
3set -o pipefail
4
5# How to run: bash path-to-script/androidmk_test.sh
6# Tests of converting license functionality of the androidmk tool
7REAL_TOP="$(readlink -f "$(dirname "$0")"/../../..)"
8$REAL_TOP/build/soong/soong_ui.bash --make-mode androidmk
9
10source "$(dirname "$0")/lib.sh"
11
12# Expect to create a new license module
13function test_rewrite_license_property_inside_current_directory {
14 setup
15
16 # Create an Android.mk file
17 mkdir -p a/b
18 cat > a/b/Android.mk <<'EOF'
19include $(CLEAR_VARS)
20LOCAL_MODULE := foo
21LOCAL_LICENSE_KINDS := license_kind1 license_kind2
22LOCAL_LICENSE_CONDITIONS := license_condition
23LOCAL_NOTICE_FILE := $(LOCAL_PATH)/license_notice1 $(LOCAL_PATH)/license_notice2
24include $(BUILD_PACKAGE)
25EOF
26
27 # Create an expected Android.bp file for the module "foo"
28 cat > a/b/Android.bp <<'EOF'
29package {
30 // See: http://go/android-license-faq
31 default_applicable_licenses: [
32 "a_b_license",
33 ],
34}
35
36license {
37 name: "a_b_license",
38 visibility: [":__subpackages__"],
39 license_kinds: [
40 "license_kind1",
41 "license_kind2",
42 ],
43 license_text: [
44 "license_notice1",
45 "license_notice2",
46 ],
47}
48
49android_app {
50 name: "foo",
51}
52EOF
53
54 run_androidmk_test "a/b/Android.mk" "a/b/Android.bp"
55}
56
57# Expect to reference to an existing license module
58function test_rewrite_license_property_outside_current_directory {
59 setup
60
61 # Create an Android.mk file
62 mkdir -p a/b/c/d
63 cat > a/b/c/d/Android.mk <<'EOF'
64include $(CLEAR_VARS)
65LOCAL_MODULE := foo
66LOCAL_LICENSE_KINDS := license_kind1 license_kind2
67LOCAL_LICENSE_CONDITIONS := license_condition
68LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../../license_notice1 $(LOCAL_PATH)/../../license_notice2
69include $(BUILD_PACKAGE)
70EOF
71
72 # Create an expected (input) Android.bp file at a/b/
73 cat > a/b/Android.bp <<'EOF'
74package {
75 // See: http://go/android-license-faq
76 default_applicable_licenses: [
77 "a_b_license",
78 ],
79}
80
81license {
82 name: "a_b_license",
83 visibility: [":__subpackages__"],
84 license_kinds: [
85 "license_kind1",
86 "license_kind2",
87 ],
88 license_text: [
89 "license_notice1",
90 "license_notice2",
91 ],
92}
93
94android_app {
95 name: "bar",
96}
97EOF
98
99 # Create an expected (output) Android.bp file for the module "foo"
100 cat > a/b/c/d/Android.bp <<'EOF'
101package {
102 // See: http://go/android-license-faq
103 default_applicable_licenses: [
104 "a_b_license",
105 ],
106}
107
108android_app {
109 name: "foo",
110}
111EOF
112
113 run_androidmk_test "a/b/c/d/Android.mk" "a/b/c/d/Android.bp"
114}
115
116run_androidmk_test () {
117 export ANDROID_BUILD_TOP="$MOCK_TOP"
118
119 local out=$($REAL_TOP/*/host/*/bin/androidmk "$1")
120 local expected=$(<"$2")
121
122 if [[ "$out" != "$expected" ]]; then
123 ANDROID_BUILD_TOP="$REAL_TOP"
124 cleanup_mock_top
125 fail "The output is not the same as the expected"
126 fi
127
128 ANDROID_BUILD_TOP="$REAL_TOP"
129 cleanup_mock_top
130 echo "Succeeded"
131}
132
133test_rewrite_license_property_inside_current_directory
134
135test_rewrite_license_property_outside_current_directory