Merge pull request #12396 from ptabor/20201014-deps

test: Adding dependencies consistency check
release-3.5
Jingyi Hu 2020-10-14 20:44:29 +08:00 committed by GitHub
commit b08a46d37d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 9 deletions

35
test
View File

@ -303,6 +303,7 @@ function fmt_pass {
receiver_name \ receiver_name \
commit_title \ commit_title \
mod_tidy \ mod_tidy \
dep \
; do ; do
run_pass "${p}" "${@}" run_pass "${p}" "${@}"
done done
@ -504,17 +505,33 @@ function bom_pass {
######## VARIOUS CHECKERS ###################################################### ######## VARIOUS CHECKERS ######################################################
function dep_pass { function dump_deps_of_module() {
log_callout "Checking package dependencies..." local module
# don't pull in etcdserver package if ! module=$(run go list -m); then
pushd clientv3 >/dev/null
badpkg="(etcdserver$|mvcc$|backend$|grpc-gateway)"
deps=$(go list -f '{{ .Deps }}' | sed 's/ /\n/g' | grep -E "${badpkg}" || echo "")
popd >/dev/null
if [ -n "$deps" ]; then
log_error -e "clientv3 has masked dependencies:\\n${deps}"
return 255 return 255
fi fi
run go list -f "{{if not .Indirect}}{{if .Version}}{{.Path}},{{.Version}},${module}{{end}}{{end}}" -m all
}
# Checks whether dependencies are consistent across modules
function dep_pass {
local all_dependencies
all_dependencies=$(run_for_modules dump_deps_of_module | sort) || return 2
local duplicates
duplicates=$(echo "${all_dependencies}" | cut -d ',' -f 1,2 | sort | uniq | cut -d ',' -f 1 | sort | uniq -d) || return 2
# echo
for dup in ${duplicates}; do
log_error "FAIL: inconsistent versions for depencency: ${dup}"
echo "${dup}:"
echo "${all_dependencies}" | grep "${dup}" | sed 's|\([^,]*\),\([^,]*\),\([^,]*\)| - \2 from: \3|g'
done
if [[ -n "${duplicates}" ]]; then
log_error "FAIL: inconsistent dependencies"
return 2
else
log_success "SUCCESS: dependencies are consistent across modules"
fi
} }
function release_pass { function release_pass {