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"

Reply via email to