I found a solution for this problem! First the explaination: The test CheckIndexTest compares the version numbers from Constants with the current compilation (ant settings). There are two constants Constants.LUCENE_MAIN_VERSION which is hard coded into Constants.java. This version had a problem, because it was a static final String constant, which is inlined by javac, so that code compiled against that version of the class file will always see the static string even when you replace the JAR.
The second constant LUCENE_VERSION contains the same like in the manifest, and if no manifest is available (no JAR file at all), it contains the LUCENE_MAIN_VERSION constant. The code has some intelligence to add LUCENE_MAIN_VERSION also to this constant (but at the end and in [] brackets), if the string from the manifest contains no version. E.g. Hudson compiles Lucene and puts just a date code into the manifest ("-Dversion=200910xxxx" ANT parameter). LUCENE_MAIN_VERSION will contains this string, bud as "3.0-dev" does not appear in this string, it is appended as "[3.0-dev]". The test CheckIndex checks these version and tests if LUCENE_VERSION starts with LUCENE_MAIN_VERSION, which is not correct in this case. The test works for trunk, because the tests are run without JAR file (against the class files direct), but not for backwards (as the test is run against the lucene-core.jar, which contains the manifest). The easy fix would be to change Constants.LUCENE_VERSION to not append the string, but places it in front of the manifest string, if the manifest string does not start with LUCENE_MAIN_VERSION. We could also fix Hudson, but then test will fail if somebody uses a strange version string when calling ANT. The first solution is 100% secure. Opinions? ----- Uwe Schindler H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de eMail: u...@thetaphi.de > -----Original Message----- > From: uschind...@apache.org [mailto:uschind...@apache.org] > Sent: Thursday, October 22, 2009 9:22 AM > To: java-comm...@lucene.apache.org > Subject: svn commit: r828334 - > /lucene/java/branches/lucene_2_9_back_compat_tests/src/test/org/apache/luc > ene/index/TestCheckIndex.java > > Author: uschindler > Date: Thu Oct 22 07:22:28 2009 > New Revision: 828334 > > URL: http://svn.apache.org/viewvc?rev=828334&view=rev > Log: > this test fails on hudson because of the strange "version" ant parameter > with only a date code. test-tag is run against the JAR version, test-core > against the class files. The JAR version contains the strange version > number in manifest :( > Should be somehow fixed. For now, I disable the test. > > Modified: > > lucene/java/branches/lucene_2_9_back_compat_tests/src/test/org/apache/luce > ne/index/TestCheckIndex.java > > Modified: > lucene/java/branches/lucene_2_9_back_compat_tests/src/test/org/apache/luce > ne/index/TestCheckIndex.java > URL: > http://svn.apache.org/viewvc/lucene/java/branches/lucene_2_9_back_compat_t > ests/src/test/org/apache/lucene/index/TestCheckIndex.java?rev=828334&r1=82 > 8333&r2=828334&view=diff > ========================================================================== > ==== > --- > lucene/java/branches/lucene_2_9_back_compat_tests/src/test/org/apache/luce > ne/index/TestCheckIndex.java (original) > +++ > lucene/java/branches/lucene_2_9_back_compat_tests/src/test/org/apache/luce > ne/index/TestCheckIndex.java Thu Oct 22 07:22:28 2009 > @@ -96,6 +96,8 @@ > assertNotNull(version); > assertTrue(version.equals(Constants.LUCENE_MAIN_VERSION+"-dev") || > version.equals(Constants.LUCENE_MAIN_VERSION)); > - assertTrue(Constants.LUCENE_VERSION.startsWith(version)); > + // TODO: does not work on hudson, because tests are run against a JAR > version, > + // which has a package version like "20091013*" not "3.0*": > + //assertTrue(Constants.LUCENE_VERSION.startsWith(version)); > } > } > --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org