Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


On 11/16/2013 09:54 AM, Alexander Thurgood wrote:
Le 15/11/13 13:48, Noel Grandin a écrit :
You need to do:

./autogen.sh --with-junit=/opt/local/share/java/junit-4.jar

or whatever your jar file name is.

Having tried this for a while the day before yesterday on OSX Mavericks,
with the latest hamcrest or junit from the project's download page, I
can confirm that I couldn't get this to work either.

There is two problems:

First, recent Junit as downloaded from <https://github.com/junit-team/junit/wiki/Download-and-Install> is split in two jars of which the junit-4.11.jar does not include the hamcrest-core-1.3.jar on its manifest Class-Path.

What worked for me is to run the attached Makefile and junit-manifest from some directory X and include --with-junit=X/junit.jar in LO's autogen.input.

However, the second problem is that LO's configure.ac "manually" inspects the given junit.jar to check it contains the class files of both junit and hamcrest. The attached configure.patch improves on that by instead using javah with -classpath junit.jar to check that the class files of both junit and hamcrest are available through the given junit.jar. But that trick apparently does not work with all versions of javah, so I did not push that patch. The best fix probably is to use javac with -classpath junit.jar for the check.

Stephan
diff --git a/configure.ac b/configure.ac
index 44dcde8..26c1147 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11979,13 +11979,14 @@ if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no"; then
     if test "$_os" = "WINNT"; then
         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
     fi
-    "$JAVA_HOME/bin/jar" tf "$OOO_JUNIT_JAR" 2>&5 | \
-        grep org/junit/Before.class > /dev/null 2>&5
-    if test $? -eq 0; then
+    if "$JAVA_HOME/bin/javah" -o conftestj -classpath "$OOO_JUNIT_JAR" \
+        org.junit.Before > /dev/null 2>&5
+    then
         # check if either class-path entry is available for hamcrest or
         # it's bundled
-        if "$JAVA_HOME/bin/jar" tf "$OOO_JUNIT_JAR" |$GREP -q hamcrest || \
-            "$UNZIP" -c "$OOO_JUNIT_JAR" META-INF/MANIFEST.MF |$GREP 'Class-Path:' | $GREP -q 
'hamcrest'; then
+        if "$JAVA_HOME/bin/javah" -o conftestj -classpath "$OOO_JUNIT_JAR" \
+            org.hamcrest.BaseDescription > /dev/null 2>&5
+        then
             AC_MSG_RESULT([$OOO_JUNIT_JAR])
         else
             AC_MSG_ERROR([your junit jar neither sets a classpath nor includes hamcrest; please
@@ -11997,6 +11998,7 @@ provide a full junit jar or use --without-junit])
 location (/usr/share/java), specify its pathname via
 --with-junit=..., or disable it via --without-junit])
     fi
+    rm conftestj
     if test $OOO_JUNIT_JAR != ""; then
     BUILD_TYPE="$BUILD_TYPE QADEVOOO"
     fi
Class-Path: junit-4.11.jar hamcrest-core-1.3.jar
junit.jar: hamcrest-core-1.3.jar junit-4.11.jar junit-manifest
        jar cmf junit-manifest junit.jar

hamcrest-core-1.3.jar:
        wget 
http://search.maven.org/remotecontent?filepath=org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar 
-O hamcrest-core-1.3.jar

junit-4.11.jar:
        wget http://search.maven.org/remotecontent?filepath=junit/junit/4.11/junit-4.11.jar -O 
junit-4.11.jar

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.