HADOOP-12255. Add support for rubocop (missed a file) (Kengo Seki via aw)
Project: http://git-wip-us.apache.org/repos/asf/yetus/repo Commit: http://git-wip-us.apache.org/repos/asf/yetus/commit/10a5f807 Tree: http://git-wip-us.apache.org/repos/asf/yetus/tree/10a5f807 Diff: http://git-wip-us.apache.org/repos/asf/yetus/diff/10a5f807 Branch: refs/heads/master Commit: 10a5f807906ac7e0cec2b61cf1aed97a6d3bf614 Parents: 39aebf6 Author: Allen Wittenauer <[email protected]> Authored: Thu Jul 30 17:06:42 2015 -0700 Committer: Allen Wittenauer <[email protected]> Committed: Thu Jul 30 17:06:42 2015 -0700 ---------------------------------------------------------------------- dev-support/test-patch.d/rubocop.sh | 140 +++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/yetus/blob/10a5f807/dev-support/test-patch.d/rubocop.sh ---------------------------------------------------------------------- diff --git a/dev-support/test-patch.d/rubocop.sh b/dev-support/test-patch.d/rubocop.sh new file mode 100755 index 0000000..ba9810e --- /dev/null +++ b/dev-support/test-patch.d/rubocop.sh @@ -0,0 +1,140 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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. + +add_plugin rubocop + +RUBOCOP_TIMER=0 + +RUBOCOP=${RUBOCOP:-$(which rubocop 2>/dev/null)} + +function rubocop_usage +{ + echo "Rubocop specific:" + echo "--rubocop=<path> path to rubocop executable" +} + +function rubocop_parse_args +{ + local i + + for i in "$@"; do + case ${i} in + --rubocop=*) + RUBOCOP=${i#*=} + ;; + esac + done +} + +function rubocop_filefilter +{ + local filename=$1 + + if [[ ${filename} =~ \.rb$ ]]; then + add_test rubocop + fi +} + +function rubocop_preapply +{ + local i + + verify_needed_test rubocop + if [[ $? == 0 ]]; then + return 0 + fi + + big_console_header "rubocop plugin: prepatch" + + if [[ ! -x ${RUBOCOP} ]]; then + yetus_error "${RUBOCOP} does not exist." + return 0 + fi + + start_clock + + echo "Running rubocop against modified ruby scripts." + pushd "${BASEDIR}" >/dev/null + for i in ${CHANGED_FILES}; do + if [[ ${i} =~ \.rb$ && -f ${i} ]]; then + ${RUBOCOP} -f c "${i}" | ${AWK} '!/[0-9]* files? inspected/' >> "${PATCH_DIR}/branch-rubocop-result.txt" + fi + done + popd >/dev/null + # keep track of how much as elapsed for us already + RUBOCOP_TIMER=$(stop_clock) + return 0 +} + +function rubocop_postapply +{ + local i + local numPrepatch + local numPostpatch + local diffPostpatch + + verify_needed_test rubocop + if [[ $? == 0 ]]; then + return 0 + fi + + big_console_header "rubocop plugin: postpatch" + + if [[ ! -x ${RUBOCOP} ]]; then + yetus_error "${RUBOCOP} is not available." + add_vote_table 0 rubocop "Rubocop was not available." + return 0 + fi + + start_clock + + # add our previous elapsed to our new timer + # by setting the clock back + offset_clock "${RUBOCOP_TIMER}" + + echo "Running rubocop against modified ruby scripts." + # we re-check this in case one has been added + pushd "${BASEDIR}" >/dev/null + for i in ${CHANGED_FILES}; do + if [[ ${i} =~ \.rb$ && -f ${i} ]]; then + ${RUBOCOP} -f c "${i}" | ${AWK} '!/[0-9]* files? inspected/' >> "${PATCH_DIR}/patch-rubocop-result.txt" + fi + done + popd >/dev/null + + # shellcheck disable=SC2016 + RUBOCOP_VERSION=$(${RUBOCOP} -v | ${AWK} '{print $NF}') + add_footer_table rubocop "v${RUBOCOP_VERSION}" + + calcdiffs "${PATCH_DIR}/branch-rubocop-result.txt" "${PATCH_DIR}/patch-rubocop-result.txt" > "${PATCH_DIR}/diff-patch-rubocop.txt" + diffPostpatch=$(${AWK} -F: 'BEGIN {sum=0} 4<NF {sum+=1} END {print sum}' "${PATCH_DIR}/diff-patch-rubocop.txt") + + if [[ ${diffPostpatch} -gt 0 ]] ; then + # shellcheck disable=SC2016 + numPrepatch=$(${AWK} -F: 'BEGIN {sum=0} 4<NF {sum+=1} END {print sum}' "${PATCH_DIR}/branch-rubocop-result.txt") + + # shellcheck disable=SC2016 + numPostpatch=$(${AWK} -F: 'BEGIN {sum=0} 4<NF {sum+=1} END {print sum}' "${PATCH_DIR}/patch-rubocop-result.txt") + + add_vote_table -1 rubocop "The applied patch generated "\ + "${diffPostpatch} new rubocop issues (total was ${numPrepatch}, now ${numPostpatch})." + add_footer_table rubocop "@@BASE@@/diff-patch-rubocop.txt" + return 1 + fi + + add_vote_table +1 rubocop "There were no new rubocop issues." + return 0 +}
