k8s.io/kubernetes@v1.31.0-alpha.0.0.20240520171757-56147500dadc/hack/verify-test-featuregates.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  # Copyright 2018 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 mutable global feature gate is invocated correctly
    18  # in `*_test.go` files.
    19  # Usage: `hack/verify-test-featuregates.sh`.
    20  
    21  set -o errexit
    22  set -o nounset
    23  set -o pipefail
    24  
    25  KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
    26  source "${KUBE_ROOT}/hack/lib/init.sh"
    27  
    28  cd "${KUBE_ROOT}"
    29  
    30  rc=0
    31  
    32  # find test files accessing the mutable global feature gate or interface
    33  direct_sets=$(git grep MutableFeatureGate -- '*_test.go') || true
    34  if [[ -n "${direct_sets}" ]]; then
    35    echo "Test files may not access mutable global feature gates directly:" >&2
    36    echo "${direct_sets}" >&2
    37    echo >&2
    38    echo "Use this invocation instead:" >&2
    39    echo "  featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.<FeatureName>, <value>)" >&2
    40    echo >&2
    41    rc=1
    42  fi
    43  
    44  
    45  # ensure all generic features are added in alphabetic order
    46  lines=$(git grep 'genericfeatures[.].*:' -- pkg/features/kube_features.go)
    47  sorted_lines=$(echo "$lines" | sort -f)
    48  if [[ "$lines" != "$sorted_lines" ]]; then
    49    echo "Generic features in pkg/features/kube_features.go not sorted" >&2
    50    echo >&2
    51    echo "Expected:" >&2
    52    echo "$sorted_lines" >&2
    53    echo >&2
    54    echo "Got:" >&2
    55    echo "$lines" >&2
    56    rc=1
    57  fi
    58  
    59  exit $rc