...

Text file src/k8s.io/kubernetes/hack/verify-non-mutating-validation.sh

Documentation: k8s.io/kubernetes/hack

     1#!/usr/bin/env bash
     2
     3# Copyright 2021 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 that validation files do not mutate their inputs.
    18# Usage: `hack/verify-non-mutating-validation.sh`.
    19
    20set -o errexit
    21set -o nounset
    22set -o pipefail
    23
    24KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
    25source "${KUBE_ROOT}/hack/lib/init.sh"
    26
    27mutationOutput=$(find . -name validation.go -print0 | xargs -0 egrep -n ' = old' | grep -v '// +k8s:verify-mutation:reason=clone' || true)
    28foundMutation=${#mutationOutput}
    29# when there's no match, there is a newline
    30if [ "$foundMutation" -gt "1" ]; then
    31  echo "${mutationOutput}"
    32  echo "It looks like an assignment of a value using the old object.  This is a heuristic check.  If a mutation is happening in validation please fix it."
    33  echo "If a mutation of arguments is not happening, you can exempt a line using '// +k8s:verify-mutation:reason=clone'."
    34  exit 1
    35fi
    36
    37mutationOutput=$(! find . -name validation.go -print0 | xargs -0 egrep -n 'old.* = ' | grep -v '// +k8s:verify-mutation:reason=clone' || true)
    38foundMutation=${#mutationOutput}
    39# when there's no match, there is a newline
    40if [ "$foundMutation" -gt "1" ]; then
    41  echo "${mutationOutput}"
    42  echo "It looks like an assignment to the old object is happening.  This is a heuristic check.  If a mutation is happening in validation please fix it."
    43  echo "If a mutation of arguments is not happening, you can exempt a line using '// +k8s:verify-mutation:reason=clone'."
    44  exit 1
    45fi

View as plain text