This is an automated email from the ASF dual-hosted git repository. aw pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/yetus.git
The following commit(s) were added to refs/heads/main by this push: new 941245b YETUS-21. patch to a unit test should only trigger that unit test (#125) 941245b is described below commit 941245bace0ccf2dcf7a1381029492ce4cca3e02 Author: Allen Wittenauer <a...@apache.org> AuthorDate: Wed Sep 16 17:42:33 2020 -0700 YETUS-21. patch to a unit test should only trigger that unit test (#125) --- precommit/src/main/shell/test-patch.d/maven.sh | 36 ++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/precommit/src/main/shell/test-patch.d/maven.sh b/precommit/src/main/shell/test-patch.d/maven.sh index 77a69e8..51ae26a 100755 --- a/precommit/src/main/shell/test-patch.d/maven.sh +++ b/precommit/src/main/shell/test-patch.d/maven.sh @@ -27,6 +27,7 @@ MAVEN_CUSTOM_REPOS_DIR="@@@WORKSPACE@@@/yetus-m2" MAVEN_DEPENDENCY_ORDER=true MAVEN_FOUND_ROOT_POM=false MAVEN_JAVADOC_GOALS=("javadoc:javadoc") +MAVEN_ONLY_CHANGED_TESTS=false add_test_type mvnsite add_build_tool maven @@ -82,6 +83,7 @@ function maven_usage yetus_add_option "--mvn-custom-repos-dir=dir" "Location of repos, default is '${MAVEN_CUSTOM_REPOS_DIR}'" yetus_add_option "--mvn-deps-order=<bool>" "Disable maven's auto-dependency module ordering (Default: '${MAVEN_DEPENDENCY_ORDER}')" yetus_add_option "--mvn-javadoc-goals=<list>" "The comma-separated javadoc goals (Default: 'javadoc:javadoc')" + yetus_add_option "--mvn-only-changed-tests=<bool>" "If only Java test files are changed, just test them (Default: '${MAVEN_ONLY_CHANGED_TESTS}')" yetus_add_option "--mvn-settings=file" "File to use for settings.xml" } @@ -115,6 +117,10 @@ function maven_parse_args delete_parameter "${i}" yetus_comma_to_array MAVEN_JAVADOC_GOALS "${i#*=}" ;; + ----mvn-only-changed-tests=*) + delete_parameter "${i}" + MAVEN_ONLY_CHANGED_TESTS=${i#*=} + ;; --mvn-settings=*) delete_parameter "${i}" MAVEN_SETTINGS=${i#*=} @@ -561,6 +567,13 @@ function maven_builtin_personality_file_tests function maven_unit_test_filter() { declare filtered + declare line + declare file + declare dir + declare pkg + declare class + declare sclass + declare -a testonly if [[ -n "${UNIT_TEST_FILTER_FILE}" ]]; then while read -r line || [[ -n "${line}" ]]; do @@ -570,6 +583,29 @@ function maven_unit_test_filter() filtered="${filtered}${line}," done < "${UNIT_TEST_FILTER_FILE}" + elif [[ "${BUILDMODE}" != 'full' ]] && + [[ "${MAVEN_ONLY_CHANGED_TESTS}" == true ]]; then + for file in "${CHANGED_FILES[@]}"; do + if [[ "${file}" =~ src/test/java ]]; then + dir=$(dirname "${file}") + pkg=$(echo "${dir}" | "${SED}" -e 's,.*/src/test/java/,,g' -e 's,/,.,g' ) + sclass=$(basename "${file}") + sclass=${sclass%.java} + class="${pkg}.${sclass}" + if [[ -f "${file}" ]]; then + if "${GREP}" -q "package ${pkg}" "${file}"; then + if "${GREP}" -q "class ${sclass}" "${file}"; then + testonly+=("${class}") + filtered="${filtered}${class}," + fi + fi + fi + fi + done + + if [[ ${#testonly[@]} -ne ${#CHANGED_FILES[@]} ]]; then + unset filtered + fi fi if [[ -z "${filtered}" ]]; then