blob: 4aa3d76e18f0b412621d1d8b0a8705640f569097 [file] [log] [blame]
#!/bin/bash -e
# Copyright 2016 The Kythe 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.
#
# usage: test_direct_index_proto_user.sh [artifact-dir]
# If artifact-dir is not provided, a temporary directory will be used.
set -o pipefail
set -o errexit
cd "$(bazel info workspace)"
if [[ -d "$1" ]]; then
D="$1"
else
D="$(mktemp -d 2>/dev/null || mktemp -d -t 'kythetest')"
trap 'rm -rf "${D}"' EXIT ERR INT
fi
# Generate the proto descriptor.
bazel build //kythe/examples/proto:example.descriptor
# Index the proto descriptor.
BAZELGENFILES="$(bazel info workspace)/bazel-genfiles"
bazel build //kythe/examples/proto:proto_indexer \
//kythe/cxx/verifier:verifier \
//kythe/cxx/indexer/cxx:indexer
./bazel-bin/kythe/examples/proto/proto_indexer \
"${BAZELGENFILES}"/kythe/examples/proto/example.descriptor \
> "${D}/proto.entries"
# Verify that part of the index.
./bazel-bin/kythe/cxx/verifier/verifier kythe/examples/proto/example.proto \
< "${D}/proto.entries"
# Generate the kindex for the proto-using CU.
# This will include the .meta file (because of the kythe_metadata pragma).
BAZELOUT="$(bazel info workspace)/bazel-out"
# Remove any old kindexes.
pushd "$BAZELOUT"
find . \
-path "*/extra_actions/kythe/cxx/extractor/extra_action/kythe/examples/proto/*.kindex" \
-delete
popd
bazel build \
--experimental_action_listener=//kythe/cxx/extractor:extract_kindex \
--experimental_extra_action_top_level_only \
--experimental_proto_extra_actions \
//kythe/examples/proto:proto_user
pushd "$BAZELOUT"
find . \
-path "*/extra_actions/kythe/cxx/extractor/extra_action/kythe/examples/proto/*.kindex" \
-exec cp {} "${D}/proto_user.kindex" \; \
&& \
chmod 644 "${D}/proto_user.kindex"
popd
echo "Running indexer and verifier using ${D}/proto_user.kindex"
./bazel-bin/kythe/cxx/indexer/cxx/indexer "${D}/proto_user.kindex" \
> "${D}/proto_user.entries"
cat "${D}/proto_user.entries" "${D}/proto.entries" |
./bazel-bin/kythe/cxx/verifier/verifier --ignore_dups \
kythe/examples/proto/example.proto \
kythe/examples/proto/proto_user.cc