#!/bin/bash -eu # # Copyright 2016 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. # # Tests the behavior of C++ rules. # Load the test setup defined in the parent directory CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${CURRENT_DIR}/../integration_test_setup.sh" \ || { echo "integration_test_setup.sh not found!" >&2; exit 1; } function test_extra_action_for_compile() { mkdir -p ea cat > ea/BUILD < ea/cc.cc bazel build --experimental_action_listener=//ea:al //ea:cc || fail "expected success" } function test_cc_library_include_prefix_external_repository() { r="$TEST_TMPDIR/r" mkdir -p "$TEST_TMPDIR/r/foo/v1" touch "$TEST_TMPDIR/r/WORKSPACE" echo "#define FOO 42" > "$TEST_TMPDIR/r/foo/v1/foo.h" cat > "$TEST_TMPDIR/r/foo/BUILD" < WORKSPACE < BUILD < ok.cc < #include "foolib/foo.h" int main() { printf("FOO is %d\n", FOO); } EOF cat > bad.cc < #include "foo/v1/foo.h" int main() { printf("FOO is %d\n", FOO); } EOF bazel build :bad && fail "Should not have found include at repository-relative path" bazel build :ok || fail "Should have found include at synthetic path" } run_suite "cc_integration_test"