1*d57664e9SAndroid Build Coastguard Worker#!/bin/bash 2*d57664e9SAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project 3*d57664e9SAndroid Build Coastguard Worker# 4*d57664e9SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*d57664e9SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*d57664e9SAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*d57664e9SAndroid Build Coastguard Worker# 8*d57664e9SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*d57664e9SAndroid Build Coastguard Worker# 10*d57664e9SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*d57664e9SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*d57664e9SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*d57664e9SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*d57664e9SAndroid Build Coastguard Worker# limitations under the License. 15*d57664e9SAndroid Build Coastguard Worker 16*d57664e9SAndroid Build Coastguard Worker# Update f/b/r/TEST_MAPPING with all the ravenwood tests as presubmit. 17*d57664e9SAndroid Build Coastguard Worker# 18*d57664e9SAndroid Build Coastguard Worker# Note, before running it, make sure module-info.json is up-to-date by running 19*d57664e9SAndroid Build Coastguard Worker# (any) build. 20*d57664e9SAndroid Build Coastguard Worker 21*d57664e9SAndroid Build Coastguard Workerset -e 22*d57664e9SAndroid Build Coastguard Worker 23*d57664e9SAndroid Build Coastguard Worker# Tests that shouldn't be in presubmit. 24*d57664e9SAndroid Build Coastguard WorkerEXEMPT='^(SystemUiRavenTests)$' 25*d57664e9SAndroid Build Coastguard Worker 26*d57664e9SAndroid Build Coastguard Workeris_car() { 27*d57664e9SAndroid Build Coastguard Worker local module="$1" 28*d57664e9SAndroid Build Coastguard Worker 29*d57664e9SAndroid Build Coastguard Worker # If the module name starts with "Car", then it's a test for "Car". 30*d57664e9SAndroid Build Coastguard Worker [[ "$module" =~ ^Car ]] 31*d57664e9SAndroid Build Coastguard Worker return $? 32*d57664e9SAndroid Build Coastguard Worker} 33*d57664e9SAndroid Build Coastguard Worker 34*d57664e9SAndroid Build Coastguard Workermain() { 35*d57664e9SAndroid Build Coastguard Worker local script_name="${0##*/}" 36*d57664e9SAndroid Build Coastguard Worker local script_dir="${0%/*}" 37*d57664e9SAndroid Build Coastguard Worker local test_mapping="$script_dir/../TEST_MAPPING" 38*d57664e9SAndroid Build Coastguard Worker local test_mapping_bak="$script_dir/../TEST_MAPPING.bak" 39*d57664e9SAndroid Build Coastguard Worker 40*d57664e9SAndroid Build Coastguard Worker local header="$(sed -ne '1,/AUTO-GENERATED-START/p' "$test_mapping")" 41*d57664e9SAndroid Build Coastguard Worker local footer="$(sed -ne '/AUTO-GENERATED-END/,$p' "$test_mapping")" 42*d57664e9SAndroid Build Coastguard Worker 43*d57664e9SAndroid Build Coastguard Worker echo "Getting all tests" 44*d57664e9SAndroid Build Coastguard Worker local tests=( $("$script_dir/list-ravenwood-tests.sh" | grep -vP "$EXEMPT") ) 45*d57664e9SAndroid Build Coastguard Worker 46*d57664e9SAndroid Build Coastguard Worker local num_tests="${#tests[@]}" 47*d57664e9SAndroid Build Coastguard Worker 48*d57664e9SAndroid Build Coastguard Worker if (( $num_tests == 0 )) ; then 49*d57664e9SAndroid Build Coastguard Worker echo "Something went wrong. No ravenwood tests detected." 1>&2 50*d57664e9SAndroid Build Coastguard Worker return 1 51*d57664e9SAndroid Build Coastguard Worker fi 52*d57664e9SAndroid Build Coastguard Worker 53*d57664e9SAndroid Build Coastguard Worker echo "Tests: ${tests[@]}" 54*d57664e9SAndroid Build Coastguard Worker 55*d57664e9SAndroid Build Coastguard Worker echo "Creating backup at $test_mapping_bak" 56*d57664e9SAndroid Build Coastguard Worker cp "$test_mapping" "$test_mapping_bak" 57*d57664e9SAndroid Build Coastguard Worker 58*d57664e9SAndroid Build Coastguard Worker echo "Updating $test_mapping" 59*d57664e9SAndroid Build Coastguard Worker { 60*d57664e9SAndroid Build Coastguard Worker echo "$header" 61*d57664e9SAndroid Build Coastguard Worker 62*d57664e9SAndroid Build Coastguard Worker echo " // DO NOT MODIFY MANUALLY" 63*d57664e9SAndroid Build Coastguard Worker echo " // Use scripts/$script_name to update it." 64*d57664e9SAndroid Build Coastguard Worker 65*d57664e9SAndroid Build Coastguard Worker local i=0 66*d57664e9SAndroid Build Coastguard Worker while (( $i < $num_tests )) ; do 67*d57664e9SAndroid Build Coastguard Worker local comma="," 68*d57664e9SAndroid Build Coastguard Worker if (( $i == ($num_tests - 1) )); then 69*d57664e9SAndroid Build Coastguard Worker comma="" 70*d57664e9SAndroid Build Coastguard Worker fi 71*d57664e9SAndroid Build Coastguard Worker echo " {" 72*d57664e9SAndroid Build Coastguard Worker echo " \"name\": \"${tests[$i]}\"," 73*d57664e9SAndroid Build Coastguard Worker if is_car "${tests[$i]}"; then 74*d57664e9SAndroid Build Coastguard Worker echo ' "keywords": ["automotive_code_coverage"],' 75*d57664e9SAndroid Build Coastguard Worker fi 76*d57664e9SAndroid Build Coastguard Worker 77*d57664e9SAndroid Build Coastguard Worker echo " \"host\": true" 78*d57664e9SAndroid Build Coastguard Worker echo " }$comma" 79*d57664e9SAndroid Build Coastguard Worker 80*d57664e9SAndroid Build Coastguard Worker i=$(( $i + 1 )) 81*d57664e9SAndroid Build Coastguard Worker done 82*d57664e9SAndroid Build Coastguard Worker 83*d57664e9SAndroid Build Coastguard Worker echo "$footer" 84*d57664e9SAndroid Build Coastguard Worker } >"$test_mapping" 85*d57664e9SAndroid Build Coastguard Worker 86*d57664e9SAndroid Build Coastguard Worker if cmp "$test_mapping_bak" "$test_mapping" ; then 87*d57664e9SAndroid Build Coastguard Worker echo "No change detecetd." 88*d57664e9SAndroid Build Coastguard Worker return 0 89*d57664e9SAndroid Build Coastguard Worker fi 90*d57664e9SAndroid Build Coastguard Worker echo "Updated $test_mapping" 91*d57664e9SAndroid Build Coastguard Worker 92*d57664e9SAndroid Build Coastguard Worker # `|| true` is needed because of `set -e`. 93*d57664e9SAndroid Build Coastguard Worker diff -u "$test_mapping_bak" "$test_mapping" || true 94*d57664e9SAndroid Build Coastguard Worker return 0 95*d57664e9SAndroid Build Coastguard Worker} 96*d57664e9SAndroid Build Coastguard Worker 97*d57664e9SAndroid Build Coastguard Workermain 98