I've spent a bit of time yesterday putting together some pieces for a
test-patch infrastructure for Oozie.

I've added to trunk/bin a set of 'test-patch' scripts.

Before going into more details let me show a sample run:

******************************************************************************************************************
bin/test-patch --patch=/tmp/OOZIE-477.patch

Testing patch /tmp/OOZIE-477.patch

Pre patch
  Running test task RAW_PATCH_ANALYSIS
  Running test task COMPILE
  Running test task TESTS

Patch applied

Post patch
  Running test task RAW_PATCH_ANALYSIS
  Running test task COMPILE
  Running test task TESTS

Reports
  Running test task RAW_PATCH_ANALYSIS
  Running test task COMPILE
  Running test task TESTS


Testing patch /tmp/OOZIE-477.patch

----------------------------

+1 PATCH_APPLIES
+1 RAW_PATCH_ANALYSIS
    +1 the patch does not introduce any @author tags
    +1 the patch does not introduce any tabs
    +1 the patch does not introduce any trailing spaces
    +1 the patch does not introduce any line longer than 132
+1 COMPILE
+1 TESTS

----------------------------


Refer to /Users/tucu/src/apache/oozie/svn/trunk0/test-patch/reports for
detailed test-patch reports
$
******************************************************************************************************************

The user entry point is the 'test-patch' script:

----
$ bin/test-patch

Either --jira or --patch options must be specified

Usage: bin/test-patch (--jira=<JIRA ISSUE> | --patch=<PATCH PATH>)
[--debug] [--tasks=<TASK,...>] [--no-cleanup]
----

You must run test-patch from the root of trunk, both GIT and SVN workspaces
are supported.

IMPORTANT: test-patch resets all local changes, so make sure you have
everything saved/stashed before running.

Using --jira=OOZIE-### will download the latest available patch and then
run test-patch on it.

Using --patch=PATCH_PATH will use a a patch locally available instead
downloading it from JIRA.

The other scripts are test-patch tasks, and they are invoked in turn by
test-patch using a mechanism similar to Unix rc files (the filter is
'test-patch-##-', they are sorted and invoked in order). They are invoked 3
times, once before the patch is applied, once after the patch is applied,
once more to generate any final report.

Currently there are 3 test-patch tasks: RAW_PATCH_ANALYSIS, COMPILE, TEST.
Overtime we can add more like JAVAC_WARNINGS, JAVADOC_WARNINGS, FINDBUGS
,CHECKSTYLE, etc, etc.

I've also created a Jenkins job that runs test-patch when invoked via an
URL, https://builds.apache.org/job/oozie-trunk-precommit-build/ , you can
see a full run in build #6.

What is left now is creating a second Jenkins job that will query JIRA for
new patches available and it will submit them to the precommit job above.

I'll work on that over the next few days.

I'll also make sure all this is properly documented (most likely in the
wiki)

If OK with the community, while the changes only involve test-patch files
under bin/ I'll just commit them (I need them committed to get Jenkins to
use them).

Feedback appreciate it.

And you can start using it for testing your patches locally before
uploading it to JIRA or ReviewBoard.

Thxs
-- 
Alejandro

Reply via email to