xref: /aosp_15_r20/external/tink/kokoro/gcp_ubuntu_per_language/java_src/run_tests.sh (revision e7b1675dde1b92d52ec075b0a92829627f2c52a5)
1#!/bin/bash
2# Copyright 2020 Google LLC
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15################################################################################
16
17set -euo pipefail
18
19
20#######################################
21# Checks if the maven targets in BUILD.bazel have all the required dependencies.
22#  * ":tink" should have all java_libraries except integration as dependencies.
23#  * ":tink-android" should have all android_libraries except integration as
24#    dependencies.
25#  * ":tink-awskms should have all java_libraries in the awskms folder as
26#    dependencies.
27#  * ":tink-gcpkms should have all java_libraries in the gcpkms folder as
28#    dependencies.
29#
30# Globals:
31#   None (except cwd)
32# Arguments:
33# Outputs:
34#   Writes to stdout
35#######################################
36test_build_bazel_file() {
37  pushd java_src
38  local main_dir="//src/main/java/com/google/crypto/tink"
39  # src_android contains android_library targets where the source file differes for java and android.
40  local android_dir="//src_android/main/java/com/google/crypto/tink"
41  local integration_dir="${main_dir}/integration"
42
43  # Targets in //src/main/java/com/google/crypto/tink of type "java_library",
44  # excluding:
45  #   * testonly targets
46  #   * targets in //src/main/java/com/google/crypto/tink/integration
47  local all_java_libs="$(mktemp)"
48  bazel query "kind(java_library,${main_dir}/...) except attr(testonly,1,${main_dir}/...) except kind(java_library,${integration_dir}/...)" > "${all_java_libs}"
49
50  # Targets in //src/main/java/com/google/crypto/tink of type "android_library"
51  # excluding testonly targets
52  local all_android_libs="$(mktemp)"
53  bazel query "kind(android_library,${main_dir}/...) except attr(testonly,1,${main_dir}/...)" > "${all_android_libs}"
54
55  # Targets in //src_android/main/java/com/google/crypto/tink of type "android_library",
56  # excluding:
57  #   * testonly targets
58  bazel query "kind(android_library,${android_dir}/...) except attr(testonly,1,${main_dir}/...)" >> "${all_android_libs}"
59
60
61  # Targets in //src/main/java/com/google/crypto/tink/integration/awskms of
62  # type "java_library" excluding testonly targets
63  local all_aws_kms_libs="$(mktemp)"
64  bazel query "kind(java_library,${integration_dir}/awskms/...) except attr(testonly,1,${integration_dir}/...)" > "${all_aws_kms_libs}"
65
66  # Targets in //src/main/java/com/google/crypto/tink/integration/gcpkms of
67  # type "java_library" excluding testonly targets
68  all_gcp_kms_libs="$(mktemp)"
69  bazel query "kind(java_library,${integration_dir}/gcpkms/...) except attr(testonly,1,${integration_dir}/...)" > "${all_gcp_kms_libs}"
70  popd
71
72  python3 kokoro/testutils/create_main_build_file.py \
73    "${all_java_libs}" \
74    "${all_android_libs}" \
75    "${all_aws_kms_libs}" \
76    "${all_gcp_kms_libs}" > java_src/BUILD.bazel.generated
77
78  buildifier java_src/BUILD.bazel.generated
79
80  if ! cmp -s java_src/BUILD.bazel java_src/BUILD.bazel.generated ; then
81    echo "Files BUILD.bazel and BUILD.bazel.generated are different."
82    echo "#=============== BROKEN file //third_party/tink/java_src/BUILD.bazel. Should be: "
83    cat java_src/BUILD.bazel.generated
84    echo "#=============== END BROKEN file //third_party/tink/java_src/BUILD.bazel."
85    echo "#=============== To fix this, run (from <Your CitC Client>/google3): "
86    echo "g4 open third_party/tink/java_src/BUILD.bazel"
87    echo "patch third_party/tink/java_src/BUILD.bazel<<END_OF_PATCH"
88    ## We run under "set -e", so exit on error. Diff returns a non-zero exit
89    ## status we flip it here.
90    ! diff java_src/BUILD.bazel java_src/BUILD.bazel.generated
91    echo "END_OF_PATCH"
92    echo "#=============== End of command"
93    exit 1
94  fi
95}
96
97if [[ -n "${KOKORO_ROOT:-}" ]] ; then
98  cd "${KOKORO_ARTIFACTS_DIR}/git/tink"
99  use_bazel.sh "$(cat java_src/.bazelversion)"
100fi
101
102test_build_bazel_file
103