blob: aecc4e8c04ca48889ceae44626ae4bed489e03d1 [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")"/../../..)"
Spandan Das08e90c22024-03-29 19:00:20 +00008"$REAL_TOP/build/soong/soong_ui.bash" --make-mode TARGET_RELEASE=trunk_staging androidmk
Yuntao Xu21be0e22021-11-22 09:30:08 -08009
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
Usta Shrestha2c9a5e32022-06-09 12:22:36 -0400116function run_androidmk_test {
Yuntao Xu21be0e22021-11-22 09:30:08 -0800117 export ANDROID_BUILD_TOP="$MOCK_TOP"
Usta Shrestha2c9a5e32022-06-09 12:22:36 -0400118 local -r androidmk=("$REAL_TOP"/*/host/*/bin/androidmk)
119 if [[ ${#androidmk[@]} -ne 1 ]]; then
120 fail "Multiple androidmk binaries found: ${androidmk[*]}"
121 fi
122 local -r out=$("${androidmk[0]}" "$1")
123 local -r expected=$(<"$2")
Yuntao Xu21be0e22021-11-22 09:30:08 -0800124
125 if [[ "$out" != "$expected" ]]; then
126 ANDROID_BUILD_TOP="$REAL_TOP"
127 cleanup_mock_top
128 fail "The output is not the same as the expected"
129 fi
130
131 ANDROID_BUILD_TOP="$REAL_TOP"
132 cleanup_mock_top
133 echo "Succeeded"
134}
135
Usta Shresthaa4e0a0f2023-01-05 14:12:12 -0500136scan_and_run_tests