blob: 9729bd551a400c20ba95f2124c59b62bec8b963e [file] [log] [blame]
#!/usr/bin/env bash
# Copyright (C) 2020 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -e
if [ $# != 1 ]; then
echo "Usage: golden_test.sh [check|update]"
fi
function _golden_test() {
local update=0
case $1 in
check)
update=0
;;
update)
update=1
;;
*)
echo "Argument must be 'check' or 'update'"
exit 1
;;
esac
# warning: this list must be kept in sync with system/tools/aidl/Android.bp
modules=(
"aidl-test-interface-cpp-source"
"aidl-test-interface-java-source"
"aidl-test-interface-ndk_platform-source"
"aidl-test-interface-rust-source"
"aidl_test_loggable_interface-cpp-source"
"aidl_test_loggable_interface-java-source"
"aidl_test_loggable_interface-ndk_platform-source"
"aidl_test_loggable_interface-ndk-source"
)
local root="."
if [ "$ANDROID_BUILD_TOP" != "" ]; then
root="$ANDROID_BUILD_TOP"
fi
if [ "$update" = 1 ]; then
"$root"/build/soong/soong_ui.bash --make-mode \
$(for i in "${modules[@]}"; do
echo "out/soong/.intermediates/system/tools/aidl/$i/timestamp"
done)
fi
local e=0
for module in "${modules[@]}"; do
local built="$root/out/soong/.intermediates/system/tools/aidl/$module/"
local golden="$root/system/tools/aidl/tests/golden_output/$module/"
if [ "$update" = 1 ]; then
rm -rf "$golden"
mkdir -p "$golden"
cp -r "$built/gen" "$golden"
else
diff -r "$built" "$golden" || e=1
fi
done
if [ "$e" = 1 ]; then
echo "ERROR: The AIDL compiler is outputting files in an unknown way."
echo "ERROR: to accept these changes, please run:"
echo "ERROR: \$ANDROID_BUILD_TOP/system/tools/aidl/tests/golden_test.sh update"
exit 1
else
if [ "$update" = 1 ]; then
echo "UPDATE GOLDEN TEST SUCCESS"
fi
fi
}
_golden_test "$@"