Commit ab5e2851 authored by Joe Finney's avatar Joe Finney

Invert .linted_packages into .golint_failures.

parent 12ba9bdc
...@@ -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=$?
fi if [[ -n "${failedLint}" ]] && [[ "${in_failing}" -ne "0" ]]; then
else errors+=( "${failedLint}" )
array_contains "$p" "${linted_packages[@]}" || linted+=( "$p" ) fi
if [[ -z "${failedLint}" ]] && [[ "${in_failing}" -eq "0" ]]; then
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 "Some packages in hack/.golint_failures are passing golint. Please remove them."
echo 'Success! All packages that should pass lint are listed in the linted file.' echo
else for p in "${not_failing[@]}"; do
echo " $p"
done
echo
} >&2
false
fi
if [[ ${#gone[@]} -gt 0 ]]; then
{ {
if [ ${#gone[@]} -gt 0 ]; then echo "Some packages in hack/.golint_failures do not exist anymore. Please remove them."
echo "Some packages in hack/.linted_packages do not exist anymore. Please remove them" echo
echo "from hack/.linted_packages:" for p in "${gone[@]}"; do
echo echo " $p"
for p in "${gone[@]}"; do done
echo " $p"
done
echo
fi
if [ ${#linted[@]} -gt 0 ]; then
echo "Some packages passed golint but are not listed in hack/.linted_packages."
echo "Please add them in alphabetical order:"
echo
for p in "${linted[@]}"; do
echo " echo $p >> hack/.linted_packages"
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