mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 02:08:13 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| # Copyright 2019 The Kubernetes Authors.
 | |
| #
 | |
| # 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.
 | |
| 
 | |
| # This script checks whether e2e test code which contains `Expect()` but not use
 | |
| # the e2e framework exists or not.
 | |
| # Usage: `hack/verify-test-code.sh`.
 | |
| 
 | |
| set -o errexit
 | |
| set -o nounset
 | |
| set -o pipefail
 | |
| 
 | |
| KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
 | |
| source "${KUBE_ROOT}/hack/lib/init.sh"
 | |
| cd "${KUBE_ROOT}"
 | |
| 
 | |
| all_e2e_files=()
 | |
| # NOTE: This checks e2e test code without the e2e framework which contains Expect().To(HaveOccurred())
 | |
| kube::util::read-array all_e2e_files < <(find test/e2e{,_node,_kubeadm} -name '*.go' | grep -v 'test/e2e/framework/')
 | |
| errors_expect_no_error=()
 | |
| for file in "${all_e2e_files[@]}"
 | |
| do
 | |
|     if grep -E "Expect\(.*\)\.(NotTo|ToNot)\(.*HaveOccurred\(\)" "${file}" > /dev/null
 | |
|     then
 | |
|         errors_expect_no_error+=( "${file}" )
 | |
|     fi
 | |
|     if grep -E "Expect\(err\)\.To\(gomega\.BeNil\(\)\)" "${file}" > /dev/null
 | |
|     then
 | |
|         errors_expect_no_error+=( "${file}" )
 | |
|     fi
 | |
| done
 | |
| 
 | |
| all_e2e_framework_files=()
 | |
| kube::util::read-array all_e2e_framework_files < <(find test/e2e/framework/ -name '*.go' | grep -v "_test.go")
 | |
| errors_framework_contains_tests=()
 | |
| for file in "${all_e2e_framework_files[@]}"
 | |
| do
 | |
|     if grep -E "(ConformanceIt\(.*, func\(\) {|ginkgo.It\(.*, func\(\) {)" "${file}" > /dev/null
 | |
|     then
 | |
|         errors_framework_contains_tests+=( "${file}" )
 | |
|     fi
 | |
| done
 | |
| 
 | |
| if [ ${#errors_expect_no_error[@]} -ne 0 ]; then
 | |
|   {
 | |
|     echo "Errors:"
 | |
|     for err in "${errors_expect_no_error[@]}"; do
 | |
|       echo "$err"
 | |
|     done
 | |
|     echo
 | |
|     echo 'The above files need to use framework.ExpectNoError(err) instead of '
 | |
|     echo 'Expect(err).NotTo(HaveOccurred()) or gomega.Expect(err).NotTo(gomega.HaveOccurred())'
 | |
|     echo
 | |
|     echo 'See https://github.com/kubernetes/community/blob/master/contributors/devel/sig-testing/writing-good-e2e-tests.md for more guidance'
 | |
|   } >&2
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| if [ ${#errors_framework_contains_tests[@]} -ne 0 ]; then
 | |
|   {
 | |
|     echo "Errors:"
 | |
|     for err in "${errors_framework_contains_tests[@]}"; do
 | |
|       echo "$err"
 | |
|     done
 | |
|     echo
 | |
|     echo 'The above e2e framework files should not contain any e2e tests which are implemented '
 | |
|     echo 'with framework.ConformanceIt() or ginkgo.It()'
 | |
|     echo
 | |
|   } >&2
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| echo 'Congratulations!  All e2e test source files are valid.'
 | 
