| #!/bin/bash |
| # Copyright (C) 2024 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. |
| |
| # Update f/b/r/TEST_MAPPING with all the ravenwood tests as presubmit. |
| # |
| # Note, before running it, make sure module-info.json is up-to-date by running |
| # (any) build. |
| |
| set -e |
| |
| # Tests that shouldn't be in presubmit. |
| EXEMPT='^(SystemUiRavenTests)$' |
| |
| is_car() { |
| local module="$1" |
| |
| # If the module name starts with "Car", then it's a test for "Car". |
| [[ "$module" =~ ^Car ]] |
| return $? |
| } |
| |
| main() { |
| local script_name="${0##*/}" |
| local script_dir="${0%/*}" |
| local test_mapping="$script_dir/../TEST_MAPPING" |
| local test_mapping_bak="$script_dir/../TEST_MAPPING.bak" |
| |
| local header="$(sed -ne '1,/AUTO-GENERATED-START/p' "$test_mapping")" |
| local footer="$(sed -ne '/AUTO-GENERATED-END/,$p' "$test_mapping")" |
| |
| echo "Getting all tests" |
| local tests=( $("$script_dir/list-ravenwood-tests.sh" | grep -vP "$EXEMPT") ) |
| |
| local num_tests="${#tests[@]}" |
| |
| if (( $num_tests == 0 )) ; then |
| echo "Something went wrong. No ravenwood tests detected." 1>&2 |
| return 1 |
| fi |
| |
| echo "Tests: ${tests[@]}" |
| |
| echo "Creating backup at $test_mapping_bak" |
| cp "$test_mapping" "$test_mapping_bak" |
| |
| echo "Updating $test_mapping" |
| { |
| echo "$header" |
| |
| echo " // DO NOT MODIFY MANUALLY" |
| echo " // Use scripts/$script_name to update it." |
| |
| local i=0 |
| while (( $i < $num_tests )) ; do |
| local comma="," |
| if (( $i == ($num_tests - 1) )); then |
| comma="" |
| fi |
| echo " {" |
| echo " \"name\": \"${tests[$i]}\"," |
| if is_car "${tests[$i]}"; then |
| echo ' "keywords": ["automotive_code_coverage"],' |
| fi |
| |
| echo " \"host\": true" |
| echo " }$comma" |
| |
| i=$(( $i + 1 )) |
| done |
| |
| echo "$footer" |
| } >"$test_mapping" |
| |
| if cmp "$test_mapping_bak" "$test_mapping" ; then |
| echo "No change detecetd." |
| return 0 |
| fi |
| echo "Updated $test_mapping" |
| |
| # `|| true` is needed because of `set -e`. |
| diff -u "$test_mapping_bak" "$test_mapping" || true |
| return 0 |
| } |
| |
| main |