| #!/bin/bash |
| # |
| # Copyright 2018 The Bazel Authors. All rights reserved. |
| # |
| # 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. |
| |
| set -u |
| |
| gold_output_file=$1 |
| shift |
| gold_stderr_file=$1 |
| shift |
| expected_exit_code=$1 |
| shift |
| PRINT_JDEPS_PROTO=$1 |
| shift |
| |
| if [ -d "$TEST_TMPDIR" ]; then |
| # Running as part of blaze test |
| tmpdir="$TEST_TMPDIR" |
| else |
| # Manual run from command line |
| tmpdir="$(mktemp -d)" |
| fi |
| |
| if [ -d "$TEST_UNDECLARED_OUTPUTS_DIR" ]; then |
| # Running as part of blaze test: capture test output |
| output="$TEST_UNDECLARED_OUTPUTS_DIR" |
| else |
| # Manual run from command line: just write into temp dir |
| output="${tmpdir}" |
| fi |
| |
| output_file="${output}/actual_result.txt" |
| checker_stderr="${output}/checker_stderr.txt" |
| |
| # Run the checker command. |
| $@ --jdeps_output "${output_file}" 2> ${checker_stderr} |
| |
| checker_ret=$? |
| if [[ "${checker_ret}" != ${expected_exit_code} ]]; then |
| echo "Checker error!!! ${checker_ret}, expected=${expected_exit_code}" |
| cat ${checker_stderr} |
| exit 1 # Exit with an error. |
| fi |
| |
| diff "${gold_output_file}" <($PRINT_JDEPS_PROTO "${output_file}") |
| gold_output_ret=$? |
| |
| if [[ "${gold_output_ret}" != 0 ]] ; then |
| echo "============== Actual Output ==============" |
| $PRINT_JDEPS_PROTO "${output_file}" |
| echo "" # New line. |
| echo "===========================================" |
| |
| echo "============== Expected Output ==============" |
| cat "${gold_output_file}" |
| echo "" # New line. |
| echo "===========================================" |
| |
| exit 1 |
| fi |
| |
| diff "${gold_stderr_file}" "${checker_stderr}" |
| gold_stderr_ret=$? |
| |
| if [[ "${gold_stderr_ret}" != 0 ]]; then |
| echo "============== Checker Stderr ==============" |
| cat "${checker_stderr}" |
| echo "" # New line. |
| echo "===========================================" |
| |
| echo "============== Expected Stderr ==============" |
| cat "${gold_stderr_file}" |
| echo "" # New line. |
| echo "===========================================" |
| |
| exit 1 |
| fi |