1764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline#!/usr/bin/env bash 2764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 3764e66635f0476873ddee55dc43e2d892d9746c8Erik Klinereadonly PROJECT_TOP="system/netd" 4764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 5764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline# TODO: 6764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline# - add Android.bp test targets 7764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline# - switch away from runtest.py 8764e66635f0476873ddee55dc43e2d892d9746c8Erik Klinereadonly ALL_TESTS=" 9764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline server/netd_unit_test.cpp 10764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline tests/netd_integration_test.cpp 11764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline" 12764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 13764e66635f0476873ddee55dc43e2d892d9746c8Erik KlineREPO_TOP="" 14764e66635f0476873ddee55dc43e2d892d9746c8Erik KlineDEBUG="" 15764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 16764e66635f0476873ddee55dc43e2d892d9746c8Erik Klinefunction logToStdErr() { 17764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "$1" >&2 18764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline} 19764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 20764e66635f0476873ddee55dc43e2d892d9746c8Erik Klinefunction testAndSetRepoTop() { 21764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline if [[ -n "$1" && -d "$1/.repo" ]]; then 22764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline REPO_TOP="$1" 23764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline return 0 24764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline fi 25764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline return 1 26764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline} 27764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 28764e66635f0476873ddee55dc43e2d892d9746c8Erik Klinefunction gotoRepoTop() { 29764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline if testAndSetRepoTop "$ANDROID_BUILD_TOP"; then 30764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline return 31764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline fi 32764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 33764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline while ! testAndSetRepoTop "$PWD"; do 34764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline if [[ "$PWD" == "/" ]]; then 35764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline break 36764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline fi 37764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline cd .. 38764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline done 39764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline} 40764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 41764e66635f0476873ddee55dc43e2d892d9746c8Erik Klinefunction runOneTest() { 42764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline local testName="$1" 43764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline local cmd="$REPO_TOP/development/testrunner/runtest.py -x $PROJECT_TOP/$testName" 44764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "###" 45764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "# $testName" 46764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "#" 47764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "# $cmd" 48764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "###" 49764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "" 50764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline $DEBUG $cmd 51764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline local rval=$? 52764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "" 53764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 54764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline # NOTE: currently runtest.py returns 0 even for failed tests. 55764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline return $rval 56764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline} 57764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 58764e66635f0476873ddee55dc43e2d892d9746c8Erik Klinefunction main() { 59764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline gotoRepoTop 60764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline if ! testAndSetRepoTop "$REPO_TOP"; then 61764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline logToStdErr "Could not find useful top of repo directory" 62764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline return 1 63764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline fi 64764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline logToStdErr "using REPO_TOP=$REPO_TOP" 65764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 66764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline if [[ -n "$1" ]]; then 67764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline case "$1" in 68764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline "-n") 69764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline DEBUG=echo 70764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline shift 71764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline ;; 72764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline esac 73764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline fi 74764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 75764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline # Allow us to do things like "runtests.sh integration", etc. 76764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline readonly TEST_REGEX="$1" 77764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 78764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline failures=0 79764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline for testName in $ALL_TESTS; do 80764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline if [[ -z "$TEST_REGEX" || "$testName" =~ "$TEST_REGEX" ]]; then 81764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline runOneTest "$testName" 82764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline let failures+=$? 83764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline else 84764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline logToStdErr "Skipping $testName" 85764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline fi 86764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline done 87764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 88764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline echo "Number of tests failing: $failures" 89764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline return $failures 90764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline} 91764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 92764e66635f0476873ddee55dc43e2d892d9746c8Erik Kline 93764e66635f0476873ddee55dc43e2d892d9746c8Erik Klinemain "$@" 94764e66635f0476873ddee55dc43e2d892d9746c8Erik Klineexit $? 95