mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-02-21 22:57:15 +00:00
verify: additional validation of e2e.test --list-images output
If the command failed in the <( ... ) expression, the return code was ignored and the script continued with potentially no output. Not likely, but it's still better to invoke the command where pipefail will catch a non-zero exit code. For example, broken test registration could cause this. There should be no log output, but if there is, failing explicitly is better than ignoring it (on stderr) or treating it like an image (on stdout). Found when experimenting with the logging configuration of e2e.test, currently there is no such unwanted log output.
This commit is contained in:
@@ -22,6 +22,7 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
||||
cd "${KUBE_ROOT}"
|
||||
|
||||
source hack/lib/init.sh
|
||||
ret=0
|
||||
|
||||
# NOTE: Please do NOT add any to this list!!
|
||||
#
|
||||
@@ -34,10 +35,28 @@ kube::util::read-array PERMITTED_IMAGES < <(sed '/^#/d' ./test/images/.permitted
|
||||
echo "Getting e2e image list ..."
|
||||
make WHAT=test/e2e/e2e.test
|
||||
e2e_test="$(kube::util::find-binary e2e.test)"
|
||||
kube::util::read-array IMAGES < <("${e2e_test}" --list-images | sed -E 's/^(.+):[^:]+$/\1/' | LC_ALL=C sort -u)
|
||||
|
||||
# validate "e2e.test --list-images":
|
||||
# - no unexpected output (whether it's on stderr or stdout)
|
||||
# - zero exit code (indirectly ensures that tests are set up properly)
|
||||
output=$("${e2e_test}" --list-images 2>&1) || ret=$?
|
||||
if [[ $ret -ne 0 ]]; then
|
||||
>&2 echo "FAIL: '${e2e_test} --list-images' failed:"
|
||||
>&2 echo "${output}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
unexpected_output=$(echo "${output}" | grep -v -E '^([[:alnum:]/.-]+):[^:]+$' || true)
|
||||
if [[ -n "${unexpected_output}" ]]; then
|
||||
>&2 echo "FAIL: '${e2e_test} --list-images' printed unexpected output:"
|
||||
>&2 echo "${unexpected_output}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# extract image names without the version
|
||||
kube::util::read-array IMAGES < <(echo "${output}" | sed -E 's/^([[:alnum:]/.-]+):[^:]+$/\1/' | LC_ALL=C sort -u)
|
||||
|
||||
# diff versus known permitted images
|
||||
ret=0
|
||||
>&2 echo "Diffing e2e image list ..."
|
||||
# diff context is irrelevant here because of sorting.
|
||||
# Instead we want to know about old images (no longer in use, need to be removed)
|
||||
|
||||
Reference in New Issue
Block a user