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