13d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong#!/bin/bash 23d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong 32ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong# Run hidl-gen against interfaces in errors/ to ensure it detects as many 42ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong# errors as possible. 53d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong 62ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongif [ ! -d system/tools/hidl/test/errors/ ]; then 72ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo "Where is system/tools/hidl/test/errors?"; 82ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong exit 1; 93d5587cdf1c52e73473299004021f5f422c42e1aYifan Hongfi 103d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong 113d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong# TODO(b/33276472) 122ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongif [ ! -d system/libhidl/transport ]; then 132ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo "Where is system/libhidl/transport?"; 142ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong exit 1; 153d5587cdf1c52e73473299004021f5f422c42e1aYifan Hongfi 163d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong 172ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongif [[ "$@" == *"-h"* ]]; then 182ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo "$0 [-h|-u|-a]" 193d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong echo " (No options) Run and diff against expected output" 203d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong echo " -u Update expected output" 213d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong echo " -a Run and show actual output" 223d5587cdf1c52e73473299004021f5f422c42e1aYifan Hong echo " -h Show help text" 232ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong exit 1 243d5587cdf1c52e73473299004021f5f422c42e1aYifan Hongfi 252ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong 262ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongif [[ "$@" == *"-u"* ]]; then update_files=true; fi 272ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongif [[ "$@" == *"-a"* ]]; then show_output=true; fi 282ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong 292ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongfunction check() { 302ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong local "${@}" 312ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong COMMAND="hidl-gen -Lc++ -rtests:system/tools/hidl/test -randroid.hidl:system/libhidl/transport -o /tmp $package" 322ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong 332ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong if [ $show_output ]; then 342ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo "Running: $COMMAND" 352ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong $COMMAND 362ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo 372ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong return 382ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong fi 392ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong 402ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong if [[ ! -z "$contains" ]]; then 412ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong if [ $update_files ]; then 422ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong # no files to update 432ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong return 442ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong fi 452ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong $COMMAND 2>&1 | grep "$contains" -q 462ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong if [ $? -eq 0 ]; then 472ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo "Success for $package." 482ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong else 492ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo "Fail for $package; output doesn't contain '$contains'" 502ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong fi 512ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong return 522ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong fi 532ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong 542ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong EXPECTED="system/tools/hidl/test/$filename" 552ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong if [ $update_files ]; then 562ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong $COMMAND 2>$EXPECTED; 572ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo "Updated $filename." 582ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong else 592ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong $COMMAND 2>&1 | diff $EXPECTED - 602ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong if [ $? -eq 0 ]; then 612ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong echo "Success for $package." 622ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong fi 632ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong fi 642ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong} 652ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong 662ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongcheck package="tests.errors.syntax@1.0" filename="errors/syntax.output" 672ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong 682ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongcheck package="tests.errors.versioning@2.2" \ 692ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong contains="Cannot enforce minor version uprevs for tests.errors.versioning@2.2" 702ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong 712ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hongcheck package="tests.errors.versioning@3.3" \ 722ef6b39949680840b2acffa2a46edc0fe8f01d0fYifan Hong contains="Cannot enforce minor version uprevs for tests.errors.versioning@3.3" 73