aboutsummaryrefslogtreecommitdiff
path: root/dev/run-tests-jenkins
diff options
context:
space:
mode:
Diffstat (limited to 'dev/run-tests-jenkins')
-rwxr-xr-xdev/run-tests-jenkins102
1 files changed, 69 insertions, 33 deletions
diff --git a/dev/run-tests-jenkins b/dev/run-tests-jenkins
index 0b1e31b941..451f3b771c 100755
--- a/dev/run-tests-jenkins
+++ b/dev/run-tests-jenkins
@@ -26,9 +26,23 @@
FWDIR="$(cd `dirname $0`/..; pwd)"
cd "$FWDIR"
+source "$FWDIR/dev/run-tests-codes.sh"
+
COMMENTS_URL="https://api.github.com/repos/apache/spark/issues/$ghprbPullId/comments"
PULL_REQUEST_URL="https://github.com/apache/spark/pull/$ghprbPullId"
+# Important Environment Variables
+# ---
+# $ghprbActualCommit
+#+ This is the hash of the most recent commit in the PR.
+#+ The merge-base of this and master is the commit from which the PR was branched.
+# $sha1
+#+ If the patch merges cleanly, this is a reference to the merge commit hash
+#+ (e.g. "origin/pr/2606/merge").
+#+ If the patch does not merge cleanly, it is equal to $ghprbActualCommit.
+#+ The merge-base of this and master in the case of a clean merge is the most recent commit
+#+ against master.
+
COMMIT_URL="https://github.com/apache/spark/commit/${ghprbActualCommit}"
# GitHub doesn't auto-link short hashes when submitted via the API, unfortunately. :(
SHORT_COMMIT_HASH="${ghprbActualCommit:0:7}"
@@ -84,42 +98,46 @@ function post_message () {
fi
}
+
+# We diff master...$ghprbActualCommit because that gets us changes introduced in the PR
+#+ and not anything else added to master since the PR was branched.
+
# check PR merge-ability and check for new public classes
{
if [ "$sha1" == "$ghprbActualCommit" ]; then
- merge_note=" * This patch **does not** merge cleanly!"
+ merge_note=" * This patch **does not merge cleanly**."
else
merge_note=" * This patch merges cleanly."
+ fi
+
+ source_files=$(
+ git diff master...$ghprbActualCommit --name-only `# diff patch against master from branch point` \
+ | grep -v -e "\/test" `# ignore files in test directories` \
+ | grep -e "\.py$" -e "\.java$" -e "\.scala$" `# include only code files` \
+ | tr "\n" " "
+ )
+ new_public_classes=$(
+ git diff master...$ghprbActualCommit ${source_files} `# diff patch against master from branch point` \
+ | grep "^\+" `# filter in only added lines` \
+ | sed -r -e "s/^\+//g" `# remove the leading +` \
+ | grep -e "trait " -e "class " `# filter in lines with these key words` \
+ | grep -e "{" -e "(" `# filter in lines with these key words, too` \
+ | grep -v -e "\@\@" -e "private" `# exclude lines with these words` \
+ | grep -v -e "^// " -e "^/\*" -e "^ \* " `# exclude comment lines` \
+ | sed -r -e "s/\{.*//g" `# remove from the { onwards` \
+ | sed -r -e "s/\}//g" `# just in case, remove }; they mess the JSON` \
+ | sed -r -e "s/\"/\\\\\"/g" `# escape double quotes; they mess the JSON` \
+ | sed -r -e "s/^(.*)$/\`\1\`/g" `# surround with backticks for style` \
+ | sed -r -e "s/^/ \* /g" `# prepend ' *' to start of line` \
+ | sed -r -e "s/$/\\\n/g" `# append newline to end of line` \
+ | tr -d "\n" `# remove actual LF characters`
+ )
- source_files=$(
- git diff master... --name-only `# diff patch against master from branch point` \
- | grep -v -e "\/test" `# ignore files in test directories` \
- | grep -e "\.py$" -e "\.java$" -e "\.scala$" `# include only code files` \
- | tr "\n" " "
- )
- new_public_classes=$(
- git diff master... ${source_files} `# diff patch against master from branch point` \
- | grep "^\+" `# filter in only added lines` \
- | sed -r -e "s/^\+//g" `# remove the leading +` \
- | grep -e "trait " -e "class " `# filter in lines with these key words` \
- | grep -e "{" -e "(" `# filter in lines with these key words, too` \
- | grep -v -e "\@\@" -e "private" `# exclude lines with these words` \
- | grep -v -e "^// " -e "^/\*" -e "^ \* " `# exclude comment lines` \
- | sed -r -e "s/\{.*//g" `# remove from the { onwards` \
- | sed -r -e "s/\}//g" `# just in case, remove }; they mess the JSON` \
- | sed -r -e "s/\"/\\\\\"/g" `# escape double quotes; they mess the JSON` \
- | sed -r -e "s/^(.*)$/\`\1\`/g" `# surround with backticks for style` \
- | sed -r -e "s/^/ \* /g" `# prepend ' *' to start of line` \
- | sed -r -e "s/$/\\\n/g" `# append newline to end of line` \
- | tr -d "\n" `# remove actual LF characters`
- )
-
- if [ "$new_public_classes" == "" ]; then
- public_classes_note=" * This patch adds no public classes."
- else
- public_classes_note=" * This patch adds the following public classes _(experimental)_:"
- public_classes_note="${public_classes_note}\n${new_public_classes}"
- fi
+ if [ -z "$new_public_classes" ]; then
+ public_classes_note=" * This patch adds no public classes."
+ else
+ public_classes_note=" * This patch adds the following public classes _(experimental)_:"
+ public_classes_note="${public_classes_note}\n${new_public_classes}"
fi
}
@@ -147,12 +165,30 @@ function post_message () {
post_message "$fail_message"
exit $test_result
+ elif [ "$test_result" -eq "0" ]; then
+ test_result_note=" * This patch **passes all tests**."
else
- if [ "$test_result" -eq "0" ]; then
- test_result_note=" * This patch **passes** unit tests."
+ if [ "$test_result" -eq "$BLOCK_GENERAL" ]; then
+ failing_test="some tests"
+ elif [ "$test_result" -eq "$BLOCK_RAT" ]; then
+ failing_test="RAT tests"
+ elif [ "$test_result" -eq "$BLOCK_SCALA_STYLE" ]; then
+ failing_test="Scala style tests"
+ elif [ "$test_result" -eq "$BLOCK_PYTHON_STYLE" ]; then
+ failing_test="Python style tests"
+ elif [ "$test_result" -eq "$BLOCK_BUILD" ]; then
+ failing_test="to build"
+ elif [ "$test_result" -eq "$BLOCK_SPARK_UNIT_TESTS" ]; then
+ failing_test="Spark unit tests"
+ elif [ "$test_result" -eq "$BLOCK_PYSPARK_UNIT_TESTS" ]; then
+ failing_test="PySpark unit tests"
+ elif [ "$test_result" -eq "$BLOCK_MIMA" ]; then
+ failing_test="MiMa tests"
else
- test_result_note=" * This patch **fails** unit tests."
+ failing_test="some tests"
fi
+
+ test_result_note=" * This patch **fails $failing_test**."
fi
}