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 <[email protected]>
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