Commit 34e48e3e authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #47377 from spxtr/golint

Automatic merge from submit-queue (batch tested with PRs 48231, 47377, 48797, 49020, 49033) Invert .linted_packages into .golint_failures. See #47370. cc @cblecker
parents 68fcc592 ab5e2851
...@@ -44,13 +44,13 @@ array_contains () { ...@@ -44,13 +44,13 @@ array_contains () {
} }
# Check that the file is in alphabetical order # Check that the file is in alphabetical order
linted_file="${KUBE_ROOT}/hack/.linted_packages" failure_file="${KUBE_ROOT}/hack/.golint_failures"
if ! diff -u "${linted_file}" <(LC_ALL=C sort "${linted_file}"); then if ! diff -u "${failure_file}" <(LC_ALL=C sort "${failure_file}"); then
{ {
echo echo
echo "hack/.linted_packages is not in alphabetical order. Please sort it:" echo "hack/.golint_failures is not in alphabetical order. Please sort it:"
echo echo
echo " LC_ALL=C sort -o hack/.linted_packages hack/.linted_packages" echo " LC_ALL=C sort -o hack/.golint_failures hack/.golint_failures"
echo echo
} >&2 } >&2
false false
...@@ -63,28 +63,30 @@ export IFS=$'\n' ...@@ -63,28 +63,30 @@ export IFS=$'\n'
all_packages=( all_packages=(
$(go list -e ./... | egrep -v "/(third_party|vendor|staging/src/k8s.io/client-go/pkg|generated|clientset_generated)" | sed -e 's|^k8s.io/kubernetes/||' -e "s|^_${KUBE_ROOT}/\?||") $(go list -e ./... | egrep -v "/(third_party|vendor|staging/src/k8s.io/client-go/pkg|generated|clientset_generated)" | sed -e 's|^k8s.io/kubernetes/||' -e "s|^_${KUBE_ROOT}/\?||")
) )
linted_packages=( failing_packages=(
$(cat $linted_file) $(cat $failure_file)
) )
unset IFS unset IFS
linted=()
errors=() errors=()
not_failing=()
for p in "${all_packages[@]}"; do for p in "${all_packages[@]}"; do
# Run golint on package/*.go file explicitly to validate all go files # Run golint on package/*.go file explicitly to validate all go files
# and not just the ones for the current platform. # and not just the ones for the current platform.
failedLint=$(golint "$p"/*.go) # Packages with a corresponding foo_test package will make golint fail
if [ "$failedLint" ]; then # with a useless error. Just ignore that, see golang/lint#68.
if array_contains "$p" "${linted_packages[@]}"; then failedLint=$(golint "$p"/*.go 2>/dev/null)
errors+=( "$failedLint" ) array_contains "$p" "${failing_packages[@]}" && in_failing=$? || in_failing=$?
if [[ -n "${failedLint}" ]] && [[ "${in_failing}" -ne "0" ]]; then
errors+=( "${failedLint}" )
fi fi
else if [[ -z "${failedLint}" ]] && [[ "${in_failing}" -eq "0" ]]; then
array_contains "$p" "${linted_packages[@]}" || linted+=( "$p" ) not_failing+=( $p )
fi fi
done done
# Check that all linted_packages actually still exist # Check that all failing_packages actually still exist
gone=() gone=()
for p in "${linted_packages[@]}"; do for p in "${failing_packages[@]}"; do
array_contains "$p" "${all_packages[@]}" || gone+=( "$p" ) array_contains "$p" "${all_packages[@]}" || gone+=( "$p" )
done done
...@@ -98,38 +100,33 @@ else ...@@ -98,38 +100,33 @@ else
echo "$err" echo "$err"
done done
echo echo
echo 'Please fix the above errors. You can test via "golint" and commit the result.' echo 'Please review the above warnings. You can test via "golint" and commit the result.'
echo 'If the above warnings do not make sense, you can exempt this package from golint'
echo 'checking by adding it to hack/.golint_failures (if your reviewer is okay with it).'
echo echo
} >&2 } >&2
false false
fi fi
# check to make sure all packages that pass lint are in the linted file. if [[ ${#not_failing[@]} -gt 0 ]]; then
echo
if [ ${#linted[@]} -eq 0 -a ${#gone[@]} -eq 0 ]; then
echo 'Success! All packages that should pass lint are listed in the linted file.'
else
{ {
if [ ${#gone[@]} -gt 0 ]; then echo "Some packages in hack/.golint_failures are passing golint. Please remove them."
echo "Some packages in hack/.linted_packages do not exist anymore. Please remove them"
echo "from hack/.linted_packages:"
echo echo
for p in "${gone[@]}"; do for p in "${not_failing[@]}"; do
echo " $p" echo " $p"
done done
echo echo
fi } >&2
if [ ${#linted[@]} -gt 0 ]; then false
echo "Some packages passed golint but are not listed in hack/.linted_packages." fi
echo "Please add them in alphabetical order:"
if [[ ${#gone[@]} -gt 0 ]]; then
{
echo "Some packages in hack/.golint_failures do not exist anymore. Please remove them."
echo echo
for p in "${linted[@]}"; do for p in "${gone[@]}"; do
echo " echo $p >> hack/.linted_packages" echo " $p"
done done
echo " LC_ALL=C sort -o hack/.linted_packages hack/.linted_packages"
echo
fi
echo 'You can test via this script and commit the result.'
echo echo
} >&2 } >&2
false false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment