Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | base="$(dirname "$(readlink -f -- $0)")/.." |
| 4 | cd $base |
| 5 | |
Pierre-Hugues Husson | 4e50f10 | 2018-11-03 21:06:02 +0100 | [diff] [blame^] | 6 | #Usage: fail <file> <message> [ignore string] |
| 7 | fail() { |
| 8 | if [ -z "$3" ] || ! grep -qF "$3" "$1";then |
| 9 | echo "F: $1: $2" |
| 10 | touch fail |
| 11 | else |
| 12 | echo "W: $1: $2" |
| 13 | fi |
| 14 | } |
| 15 | |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 16 | #Keep knownKeys |
Pierre-Hugues Husson | 7280146 | 2018-11-03 20:55:21 +0100 | [diff] [blame] | 17 | rm -f tests/priorities fail |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 18 | touch tests/priorities tests/knownKeys |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 19 | find -name AndroidManifest.xml |while read manifest;do |
| 20 | folder="$(dirname "$manifest")" |
| 21 | #Ensure this overlay doesn't override blacklist-ed properties |
| 22 | for b in $(cat tests/blacklist);do |
| 23 | if grep -qRF "$b" $folder;then |
Pierre-Hugues Husson | 4e50f10 | 2018-11-03 21:06:02 +0100 | [diff] [blame^] | 24 | fail $folder "Overlay $folder is defining $b which is forbidden" |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 25 | fi |
| 26 | done |
| 27 | |
| 28 | #Everything after that is specifically for static overlays, targetting framework-res |
| 29 | isStatic="$(xmlstarlet sel -t -m '//overlay' -v @android:isStatic -n $manifest)" |
| 30 | [ "$isStatic" != "true" ] && continue |
| 31 | |
| 32 | #Ensure priorities unique-ness |
| 33 | priority="$(xmlstarlet sel -t -m '//overlay' -v @android:priority -n $manifest)" |
| 34 | if grep -qE '^'$priority'$' tests/priorities;then |
Pierre-Hugues Husson | 4e50f10 | 2018-11-03 21:06:02 +0100 | [diff] [blame^] | 35 | fail $manifest "priority $priority conflicts with another manifest" |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 36 | fi |
| 37 | echo $priority >> tests/priorities |
| 38 | |
| 39 | systemPropertyName="$(xmlstarlet sel -t -m '//overlay' -v @android:requiredSystemPropertyName -n $manifest)" |
| 40 | if [ "$systemPropertyName" == "ro.vendor.product.name" ];then |
Pierre-Hugues Husson | 4e50f10 | 2018-11-03 21:06:02 +0100 | [diff] [blame^] | 41 | fail "$manifest" "ro.vendor.product.name is deprecated. Please use ro.vendor.build.fingerprint" \ |
| 42 | 'TESTS: Ignore ro.vendor.product.name' |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 43 | fi |
| 44 | |
| 45 | #Ensure the overloaded properties exist in AOSP |
| 46 | find "$folder" -name \*.xml |while read xml;do |
| 47 | keys="$(xmlstarlet sel -t -m '//resources/*' -v @name -n $xml)" |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 48 | for key in $keys;do |
Pierre-Hugues Husson | 0381192 | 2018-10-31 00:08:08 +0100 | [diff] [blame] | 49 | grep -qE '^'$key'$' tests/knownKeys && continue |
Pierre-Hugues Husson | 3de1d74 | 2018-10-30 23:52:01 +0100 | [diff] [blame] | 50 | #Run the ag only on phh's machine. Assume that knownKeys is full enough. |
| 51 | #If it's enough, ask phh to update it |
Pierre-Hugues Husson | c598ee6 | 2018-11-03 20:57:44 +0100 | [diff] [blame] | 52 | if [ -d /build/AOSP-9.0 ] && \ |
| 53 | (ag '"'$key'"' /build/AOSP-9.0/frameworks/base/core/res/res || \ |
| 54 | ag '"'$key'"' /build/AOSP-8.1/frameworks/base/core/res/res)> /dev/null ;then |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 55 | echo $key >> tests/knownKeys |
| 56 | else |
Pierre-Hugues Husson | 4e50f10 | 2018-11-03 21:06:02 +0100 | [diff] [blame^] | 57 | fail "$xml" "defines a non-existing attribute $key" |
Pierre-Hugues Husson | 9212e18 | 2018-10-30 23:40:10 +0100 | [diff] [blame] | 58 | fi |
| 59 | done |
| 60 | done |
| 61 | done |
| 62 | rm -f tests/priorities |
| 63 | |
Pierre-Hugues Husson | 4e50f10 | 2018-11-03 21:06:02 +0100 | [diff] [blame^] | 64 | find -name \*.xml |xargs dos2unix -ic |while read f;do |
| 65 | fail $f "File is DOS type" |
| 66 | done |
Pierre-Hugues Husson | f641826 | 2018-11-03 20:38:36 +0100 | [diff] [blame] | 67 | |
Pierre-Hugues Husson | 7280146 | 2018-11-03 20:55:21 +0100 | [diff] [blame] | 68 | if [ -f fail ];then exit 1; fi |