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 Workerset -e 17*d57664e9SAndroid Build Coastguard Worker 18*d57664e9SAndroid Build Coastguard WorkerSCRIPT_NAME="${0##*/}" 19*d57664e9SAndroid Build Coastguard Worker 20*d57664e9SAndroid Build Coastguard Workerusage() { 21*d57664e9SAndroid Build Coastguard Worker cat <<"EOF" 22*d57664e9SAndroid Build Coastguard Worker 23*d57664e9SAndroid Build Coastguard Worker$SCRIPT_NAME: Shrink / unshrink SystemUiRavenTests. 24*d57664e9SAndroid Build Coastguard Worker 25*d57664e9SAndroid Build Coastguard Worker SystemUiRavenTests has a lot of kotlin source files, so it's slow to build, 26*d57664e9SAndroid Build Coastguard Worker which is painful when you want to run it after updating ravenwood code 27*d57664e9SAndroid Build Coastguard Worker that SystemUiRavenTests depends on. (example: junit-src/) 28*d57664e9SAndroid Build Coastguard Worker 29*d57664e9SAndroid Build Coastguard Worker This script basically removes the test files in SystemUI/multivalentTests 30*d57664e9SAndroid Build Coastguard Worker that don't have @EnabledOnRavenwood. But if we actaully remove them, 31*d57664e9SAndroid Build Coastguard Worker soong would re-generate the ninja file, which will take a long time, 32*d57664e9SAndroid Build Coastguard Worker so instead it'll truncate them. 33*d57664e9SAndroid Build Coastguard Worker 34*d57664e9SAndroid Build Coastguard Worker This script will also tell git to ignore these files, so they won't shw up 35*d57664e9SAndroid Build Coastguard Worker in `git status`. 36*d57664e9SAndroid Build Coastguard Worker (Use `git ls-files -v | sed -ne "s/^[a-zS] //p"` to show ignored filse.) 37*d57664e9SAndroid Build Coastguard Worker 38*d57664e9SAndroid Build Coastguard WorkerUsage: 39*d57664e9SAndroid Build Coastguard Worker $SCRIPT_NAME -s # Shrink the test files. 40*d57664e9SAndroid Build Coastguard Worker 41*d57664e9SAndroid Build Coastguard Worker $SCRIPT_NAME -u # Undo it. 42*d57664e9SAndroid Build Coastguard Worker 43*d57664e9SAndroid Build Coastguard WorkerEOF 44*d57664e9SAndroid Build Coastguard Worker} 45*d57664e9SAndroid Build Coastguard Worker 46*d57664e9SAndroid Build Coastguard WorkerTEST_PATH=${ANDROID_BUILD_TOP}/frameworks/base/packages/SystemUI/multivalentTests 47*d57664e9SAndroid Build Coastguard Workercd "$TEST_PATH" 48*d57664e9SAndroid Build Coastguard Worker 49*d57664e9SAndroid Build Coastguard Workercommand="" 50*d57664e9SAndroid Build Coastguard Workercase "$1" in 51*d57664e9SAndroid Build Coastguard Worker "-s") command=shrink ;; 52*d57664e9SAndroid Build Coastguard Worker "-u") command=unshrink ;; 53*d57664e9SAndroid Build Coastguard Worker *) usage ; exit 1 ;; 54*d57664e9SAndroid Build Coastguard Workeresac 55*d57664e9SAndroid Build Coastguard Worker 56*d57664e9SAndroid Build Coastguard Worker 57*d57664e9SAndroid Build Coastguard Workerecho "Listing test files...." 58*d57664e9SAndroid Build Coastguard Workerfiles=( $(find . -name '*Test.kt' -o -name '*Test.java') ) 59*d57664e9SAndroid Build Coastguard Worker 60*d57664e9SAndroid Build Coastguard Workerexemption='(BaseHeadsUpManagerTest)' 61*d57664e9SAndroid Build Coastguard Worker 62*d57664e9SAndroid Build Coastguard Workershrink() { 63*d57664e9SAndroid Build Coastguard Worker local target=() 64*d57664e9SAndroid Build Coastguard Worker for file in ${files[@]}; do 65*d57664e9SAndroid Build Coastguard Worker # Check for exemption 66*d57664e9SAndroid Build Coastguard Worker if echo $file | egrep -q "$exemption"; then 67*d57664e9SAndroid Build Coastguard Worker echo " Skip exempted file" 68*d57664e9SAndroid Build Coastguard Worker continue 69*d57664e9SAndroid Build Coastguard Worker fi 70*d57664e9SAndroid Build Coastguard Worker 71*d57664e9SAndroid Build Coastguard Worker echo "Checking $file" 72*d57664e9SAndroid Build Coastguard Worker if ! [[ -f $file ]] ; then 73*d57664e9SAndroid Build Coastguard Worker echo " Skip non regular file" 74*d57664e9SAndroid Build Coastguard Worker continue 75*d57664e9SAndroid Build Coastguard Worker fi 76*d57664e9SAndroid Build Coastguard Worker 77*d57664e9SAndroid Build Coastguard Worker if ! [[ -s $file ]] ; then 78*d57664e9SAndroid Build Coastguard Worker echo " Skip empty file" 79*d57664e9SAndroid Build Coastguard Worker continue 80*d57664e9SAndroid Build Coastguard Worker fi 81*d57664e9SAndroid Build Coastguard Worker 82*d57664e9SAndroid Build Coastguard Worker if grep -q '@EnabledOnRavenwood' $file ; then 83*d57664e9SAndroid Build Coastguard Worker echo " Skip ravenwood test file". 84*d57664e9SAndroid Build Coastguard Worker continue 85*d57664e9SAndroid Build Coastguard Worker fi 86*d57664e9SAndroid Build Coastguard Worker 87*d57664e9SAndroid Build Coastguard Worker # It's a non ravenwood test file. Empty it. 88*d57664e9SAndroid Build Coastguard Worker : > $file 89*d57664e9SAndroid Build Coastguard Worker 90*d57664e9SAndroid Build Coastguard Worker # Tell git to ignore the file 91*d57664e9SAndroid Build Coastguard Worker 92*d57664e9SAndroid Build Coastguard Worker target+=($file) 93*d57664e9SAndroid Build Coastguard Worker 94*d57664e9SAndroid Build Coastguard Worker echo " Emptied" 95*d57664e9SAndroid Build Coastguard Worker 96*d57664e9SAndroid Build Coastguard Worker done 97*d57664e9SAndroid Build Coastguard Worker if (( ${#target[@]} == 0 )) ; then 98*d57664e9SAndroid Build Coastguard Worker echo "No files emptied." 99*d57664e9SAndroid Build Coastguard Worker return 0 100*d57664e9SAndroid Build Coastguard Worker fi 101*d57664e9SAndroid Build Coastguard Worker 102*d57664e9SAndroid Build Coastguard Worker git update-index --skip-worktree ${target[@]} 103*d57664e9SAndroid Build Coastguard Worker 104*d57664e9SAndroid Build Coastguard Worker echo "Emptied ${#target[@]} files" 105*d57664e9SAndroid Build Coastguard Worker return 0 106*d57664e9SAndroid Build Coastguard Worker} 107*d57664e9SAndroid Build Coastguard Worker 108*d57664e9SAndroid Build Coastguard Workerunshrink() { 109*d57664e9SAndroid Build Coastguard Worker local target=() 110*d57664e9SAndroid Build Coastguard Worker 111*d57664e9SAndroid Build Coastguard Worker # Collect empty files 112*d57664e9SAndroid Build Coastguard Worker for file in ${files[@]}; do 113*d57664e9SAndroid Build Coastguard Worker if [[ -s $file ]] ; then 114*d57664e9SAndroid Build Coastguard Worker continue 115*d57664e9SAndroid Build Coastguard Worker fi 116*d57664e9SAndroid Build Coastguard Worker 117*d57664e9SAndroid Build Coastguard Worker target+=($file) 118*d57664e9SAndroid Build Coastguard Worker : > $file 119*d57664e9SAndroid Build Coastguard Worker done 120*d57664e9SAndroid Build Coastguard Worker if (( ${#target[@]} == 0 )) ; then 121*d57664e9SAndroid Build Coastguard Worker echo "No files to restore." 122*d57664e9SAndroid Build Coastguard Worker return 0 123*d57664e9SAndroid Build Coastguard Worker fi 124*d57664e9SAndroid Build Coastguard Worker # Un-ignore the files, and check out the original files 125*d57664e9SAndroid Build Coastguard Worker echo "Restoring ${#target[@]} files..." 126*d57664e9SAndroid Build Coastguard Worker git update-index --no-skip-worktree ${target[@]} 127*d57664e9SAndroid Build Coastguard Worker git checkout goog/main ${target[@]} 128*d57664e9SAndroid Build Coastguard Worker return 0 129*d57664e9SAndroid Build Coastguard Worker} 130*d57664e9SAndroid Build Coastguard Worker 131*d57664e9SAndroid Build Coastguard Worker$command 132