diff options
Diffstat (limited to 'test/static_if_error.sh')
-rw-r--r-- | test/static_if_error.sh | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/static_if_error.sh b/test/static_if_error.sh new file mode 100644 index 0000000000..efc7cd3e1e --- /dev/null +++ b/test/static_if_error.sh @@ -0,0 +1,42 @@ +#!/bin/bash -e +# Copyright 2019 The Chromium OS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This file is implemented similar to is_enabled_error.sh + +TEST_DIR="$(dirname "${BASH_SOURCE[0]}")" +TEST_CMD="$(cat "${TEST_DIR}/RO/test/static_if_error.o.cmd")" +TEST_ERROR_COUNT=0 +BAD_ERROR_MSG="This error should not be seen in the compiler output!" + +fail() { + echo "Fail" + echo "$1" + echo "$BUILD_OUTPUT" + TEST_ERROR_COUNT=$((TEST_ERROR_COUNT+1)) +} + +for test_macro in STATIC_IF STATIC_IF_NOT; do + for test_value in 0 1 2 A "5 + 5"; do + echo -n "Running TEST_MACRO=${test_macro} TEST_VALUE=${test_value}..." + TEST_CMD_COMPLETE=" + ${TEST_CMD} \"-DTEST_MACRO=${test_macro}\" \"-DTEST_VALUE=${test_value}\"" + echo "$TEST_CMD_COMPLETE" + if BUILD_OUTPUT="$(sh -c "$TEST_CMD_COMPLETE" 2>&1)"; then + fail "Compilation should not have succeeded." + continue + fi + + if grep -q "$BAD_ERROR_MSG" <<<"$BUILD_OUTPUT"; then + fail "TEST_MACRO was not defined." + continue + fi + done +done + +if [[ $TEST_ERROR_COUNT -eq 0 ]]; then + echo "Pass!" +else + echo "Fail! (${TEST_ERROR_COUNT} tests)" +fi |