Groovy Uno Release Testing

From Apache OpenOffice Wiki
Revision as of 14:32, 23 April 2016 by Cmarcum (Talk | contribs)

Jump to: navigation, search


This page is to document the testing procedure for a Groovy UNO Extension release candidate. For information on the extension see the Groovy_UNO_Extension wiki page. The current release candidate is guno-extension-0.1.5-rc1-r1740645

The test procedure will be:

  1. Download and run a test script that will cause the release candidate artifact to be downloaded from the Apache Nexus staging location.
  2. Download and unpack the signed source files and build with Gradle.
  3. Replace the Downloaded RC jar with the newly built jar.
  4. Edit the test script to remove the staging repository location.
  5. Run the test script again.


To run the test script you need a Java JDK and Apache Groovy because Groovy scripts are compiled at runtime. To build the extension from source you also need Gradle.

Download and Run the Test Script

Download the HelloTextTableShape.groovy test script from AOO Bugzilla Issue 126770 to your local machine. This location will be referred to as the test script location.

The test script is a Groovy rewrite of the provided with the SDK. Running the script will download the artifact from Apache Nexus and install it in Groovy's Ivy cache along with other dependencies. On Fedora 20 Linux it is here: ~/.groovy/grapes/org.openoffice/guno-extension/jars/guno-extension-0.1.5.jar

Edit the script

If using Windows or Linux with a soffice executable location other than "/opt/openoffice4/program/" edit the test script for the location of the soffice executable. A Windows example would look like: "C:/Program Files (x86)/OpenOffice 4/program"

Run the script from the download location

groovy HelloTextTableShape.groovy

The script should bootstrap the office and add sample content to some of the applications using the guno-extension jar. Close OpenOffice after the test.

Download and Build the Source

Source packages for the RC are available at:

Unpack the source jar

This will be the guno-extension test directory

Edit the Spock Tests

This step is optional unless you would like to run the Spock unit tests.

Spock functional tests can be ran along with the build process and may need edited for the location of the soffice executable. If using Windows or Linux with a soffice executable location other than "/opt/openoffice4/program/". Edit the two Spock test files for the location of the soffice executable. The files to edit are src/test/groovy/org/openoffice/guno/SpreadsheetSpec.groovy and UnoSpec.groovy The line to edit looks like:

String oooExeFolder = "/opt/openoffice4/program/"

To run the Spock unit tests only (From guno-extension test directory)

gradle clean test

To run them with the build they must go after the jar task due to jar running 'clean' first.

gradle jar test

Test results can be viewed at build/reports/tests/index.html

Run the Build

If you haven't ran 'jar' already.. (From guno-extension test directory)

gradle jar

Test the Build

Rename the downloaded jar in the local Groovy Ivy cache

(From guno-extension test directory)

mv ~/.groovy/grapes/org.openoffice/guno-extension/jars/guno-extension-0.1.5.jar ~/.groovy/grapes/org.openoffice/guno-extension/jars/

Copy the test jar into it's place

cp ./build/libs/guno-extension-0.1.5.jar ~/.groovy/grapes/org.openoffice/guno-extension/jars/

Edit the test script

In order to hide the Apache Nexus staging area from Groovy edit the HelloTextTableShape.groovy script and comment out the grab resolver for the staging area. Groovy should find the newly built jar in the Ivy cache.

// @GrabResolver(name = 'guno', root = '')

Run the script again to test the newly built jar

groovy HelloTextTableShape.groovy

Once finished you can remove the test jar from Ivy and rename the back to .jar

Test the Test Procedure

The "Test the Build" procedure depends on substituting a .jar file in a cache. There is an obvious risk that the test script will still download the .jar or have it cached somewhere else. This is a procedure verifies that the test procedure really does test the locally built .jar.

Edit UnoExtension.groovy

Insert an arbitrary exception throw into a key method:

    static Object guno(final Object self, Class clazz) {
        throw new IllegalArgumentException("This is a strange exception");
        UnoRuntime.queryInterface(clazz, self)

Repeat the test process

Repeat the "gradle jar" and "Test the Build" steps above. This time, the run should fail with a stack trace reporting "java.lang.IllegalArgumentException: This is a strange exception".

Personal tools