k8s.io/kubernetes@v1.31.0-alpha.0.0.20240520171757-56147500dadc/hack/verify-testing-import.sh (about) 1 #!/usr/bin/env bash 2 3 # Copyright 2023 The Kubernetes Authors. 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 # This script checks whether the testing.init symbol is present in any 18 # of the release binaries and fails if it finds one. This check is needed 19 # to avoid including test libraries in production binaries as they often lack 20 # rigorous review and sufficient testing. 21 # Usage: `hack/verify-test-code.sh`. 22 23 set -o errexit 24 set -o nounset 25 set -o pipefail 26 27 KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. 28 source "${KUBE_ROOT}/hack/lib/init.sh" 29 cd "${KUBE_ROOT}" 30 31 RELEASE_BIN_PKGS=( 32 "${KUBE_ROOT}/cmd/cloud-controller-manager" 33 "${KUBE_ROOT}/cmd/kube-apiserver" 34 "${KUBE_ROOT}/cmd/kube-controller-manager" 35 "${KUBE_ROOT}/cmd/kube-proxy" 36 "${KUBE_ROOT}/cmd/kube-scheduler" 37 "${KUBE_ROOT}/cmd/kubectl" 38 "${KUBE_ROOT}/cmd/kubectl-convert" 39 "${KUBE_ROOT}/cmd/kubelet" 40 "${KUBE_ROOT}/cmd/kubeadm" 41 ) 42 43 pkgs_with_testing_import=() 44 for file in "${RELEASE_BIN_PKGS[@]}" 45 do 46 if [ "$(go list -json "${file}" | jq 'any(.Deps[]; . == "testing")')" == "true" ] 47 then 48 pkgs_with_testing_import+=( "${file}" ) 49 fi 50 done 51 52 if [ ${#pkgs_with_testing_import[@]} -ne 0 ]; then 53 printf "%s\n" "Testing package imported in:" 54 for file in "${pkgs_with_testing_import[@]}"; do 55 printf "\t%s\n" "${file}" 56 done 57 exit 1 58 fi 59 60 exit 0 61