This is an automated email from the ASF dual-hosted git repository. aw pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/yetus.git
The following commit(s) were added to refs/heads/master by this push: new 0b4059d YETUS-868. Patch modifying the excludes file should force a re-read 0b4059d is described below commit 0b4059db386bdd1dd8cd1a8f83162a53c15e1ed3 Author: Allen Wittenauer <a...@apache.org> AuthorDate: Tue Apr 30 10:44:13 2019 -0700 YETUS-868. Patch modifying the excludes file should force a re-read Signed-off-by: Sean Busbey <bus...@apache.org> --- precommit/src/main/shell/core.d/change-analysis.sh | 5 ++ .../shell/test-patch-docker/launch-test-patch.sh | 4 -- precommit/src/main/shell/test-patch.sh | 66 +++++++++++++--------- 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/precommit/src/main/shell/core.d/change-analysis.sh b/precommit/src/main/shell/core.d/change-analysis.sh index 430139d..3c4f40e 100755 --- a/precommit/src/main/shell/core.d/change-analysis.sh +++ b/precommit/src/main/shell/core.d/change-analysis.sh @@ -90,10 +90,15 @@ function exclude_paths_from_changed_files declare strip declare -a a + EXCLUDE_PATHS=() + if [[ -n "${EXCLUDE_PATHS_FILE}" ]]; then yetus_file_to_array EXCLUDE_PATHS "${EXCLUDE_PATHS_FILE}" + else + return fi + a=() for f in "${CHANGED_FILES[@]}"; do strip=false for p in "${EXCLUDE_PATHS[@]}"; do diff --git a/precommit/src/main/shell/test-patch-docker/launch-test-patch.sh b/precommit/src/main/shell/test-patch-docker/launch-test-patch.sh index e5b9f58..110d65f 100755 --- a/precommit/src/main/shell/test-patch-docker/launch-test-patch.sh +++ b/precommit/src/main/shell/test-patch-docker/launch-test-patch.sh @@ -54,10 +54,6 @@ PATCH_DIR=$(yetus_abs "${PATCH_DIR}") OVERWRITEARGS+=("--patch-dir=${PATCH_DIR}") OVERWRITEARGS+=("--user-plugins=${PATCH_DIR}/precommit/user-plugins") -if [[ -f "${PATCH_DIR}/precommit/excluded.txt" ]]; then - OVERWRITEARGS+=("--excludes=${PATCH_DIR}/precommit/excluded.txt") -fi - if [[ -f "${PATCH_DIR}/precommit/unit_test_filter_file.txt" ]]; then OVERWRITEARGS+=("--unit-test-filter-file=${PATCH_DIR}/precommit/unit_test_filter_file.txt") fi diff --git a/precommit/src/main/shell/test-patch.sh b/precommit/src/main/shell/test-patch.sh index 259d362..d267e9c 100755 --- a/precommit/src/main/shell/test-patch.sh +++ b/precommit/src/main/shell/test-patch.sh @@ -483,7 +483,7 @@ function compute_gitdiff "${GIT}" add --all --intent-to-add while read -r line; do if [[ ${line} =~ ^\+\+\+ ]]; then - file="./"$(echo "${line}" | cut -f2- -d/) + file=$(echo "${line}" | cut -f2- -d/) continue elif [[ ${line} =~ ^@@ ]]; then startline=$(echo "${line}" | cut -f3 -d' ' | cut -f1 -d, | tr -d + ) @@ -531,8 +531,6 @@ function compute_gitdiff if [[ -s "${GITDIFFLINES}" ]]; then compute_unidiff - else - touch "${GITUNIDIFFLINES}" fi popd >/dev/null || return 1 @@ -558,33 +556,37 @@ function compute_unidiff # out the 'extra' lines, grabbing the adds with # the line number in the diff file along the way, # finally rewriting the line so that it is in - # './filename:diff line:content' format + # 'filename:diff line:content' format for fn in "${CHANGED_FILES[@]}"; do - filen=${fn##./} - if [[ -f "${filen}" ]]; then "${GIT}" diff "${filen}" \ | tail -n +6 \ | "${GREP}" -n '^+' \ | "${GREP}" -vE '^[0-9]*:\+\+\+' \ | "${SED}" -e 's,^\([0-9]*:\)\+,\1,g' \ - -e "s,^,./${filen}:,g" \ + -e "s,^,${filen}:,g" \ >> "${tmpfile}" fi done - # at this point, tmpfile should be in the same format - # as gitdiffcontent, just with different line numbers. - # let's do a merge (using gitdifflines because it's easier) + # if every file that got changed was excluded, there + # is no data to calculate. - # ./filename:real number:diff number - # shellcheck disable=SC2016 - paste -d: "${GITDIFFLINES}" "${tmpfile}" \ - | "${AWK}" -F: '{print $1":"$2":"$5":"$6}' \ - >> "${GITUNIDIFFLINES}" + if [[ -s "${tmpfile}" ]]; then - rm "${tmpfile}" + # at this point, tmpfile should be in the same format + # as gitdiffcontent, just with different line numbers. + # let's do a merge (using gitdifflines because it's easier) + + # filename:real number:diff number + # shellcheck disable=SC2016 + paste -d: "${GITDIFFLINES}" "${tmpfile}" \ + | "${AWK}" -F: '{print $1":"$2":"$5":"$6}' \ + >> "${GITUNIDIFFLINES}" + + rm "${tmpfile}" + fi } @@ -822,7 +824,7 @@ function parse_args DIRTY_WORKSPACE=true ;; --excludes=*) - EXCLUDE_PATHS_FILE=$(yetus_abs "${i#*=}") + EXCLUDE_PATHS_FILE="${i#*=}" ;; --instance=*) INSTANCE=${i#*=} @@ -945,15 +947,6 @@ function parse_args yetus_add_array_element EXEC_MODES Robot fi - if [[ -n "${EXCLUDE_PATHS_FILE}" ]]; then - if [[ -f "${EXCLUDE_PATHS_FILE}" ]]; then - EXCLUDE_PATHS_FILE=$(yetus_abs "${EXCLUDE_PATHS_FILE}") - else - yetus_error "ERROR: Excluded paths file (${EXCLUDE_PATHS_FILE}}) does not exist!" - cleanup_and_exit 1 - fi - fi - if [[ -n $UNIT_TEST_FILTER_FILE ]]; then if [[ -f $UNIT_TEST_FILTER_FILE ]]; then UNIT_TEST_FILTER_FILE=$(yetus_abs "${UNIT_TEST_FILTER_FILE}") @@ -1004,6 +997,19 @@ function parse_args PATCH_DIR=$(yetus_abs "${PATCH_DIR}") COPROC_LOGFILE="${PATCH_DIR}/coprocessors.txt" + if [[ -n "${EXCLUDE_PATHS_FILE}" ]]; then + if [[ -f "${EXCLUDE_PATHS_FILE}" ]]; then + EXCLUDE_PATHS_FILE=$(yetus_abs "${EXCLUDE_PATHS_FILE}") + elif [[ -f "${BASEDIR}/${EXCLUDE_PATHS_FILE}" ]]; then + EXCLUDE_PATHS_FILE=$(yetus_abs "${BASEDIR}/${EXCLUDE_PATHS_FILE}") + elif [[ -f "${PATCH_DIR}/precommit/excluded.txt" ]]; then + EXCLUDE_PATHS_FILE="${PATCH_DIR}/precommit/excluded.txt" + else + yetus_error "ERROR: Excluded paths file (${EXCLUDE_PATHS_FILE}}) does not exist!" + cleanup_and_exit 1 + fi + fi + # we need absolute dir for ${CONSOLE_REPORT_FILE} if [[ -n "${CONSOLE_REPORT_FILE}" ]]; then if : > "${CONSOLE_REPORT_FILE}"; then @@ -2141,6 +2147,10 @@ function bugsystem_linecomments_writer declare idxline declare uniline + if [[ ! -f "${GITUNIDIFFLINES}" ]]; then + return + fi + if [[ -z "${fn}" ]]; then return fi @@ -2171,7 +2181,7 @@ function bugsystem_linecomments_trigger declare plugin if [[ ! -f "${GITUNIDIFFLINES}" ]]; then - return + return 0 fi if [[ ! -f "${PATCH_DIR}/linecomments-in.txt" ]]; then @@ -3190,6 +3200,8 @@ if [[ "${BUILDMODE}" = patch ]]; then apply_patch_file + exclude_paths_from_changed_files + compute_gitdiff add_vote_table H "Patch Compile Tests"