Ok... I'll take another crack at it tonight. I've included all output,
and the process I'm going through untrimmed (sorry for the long post).
First my environment:
Windows XP, Eclipse 3.2, maven 2.0.4 (I think the Maven eclipse plugin
is actually using 2.0.3).
I read the notes and checked out the source tree in my drive root (note
about long paths) however I don't think thats the problem as the
exception is directly related to JPOX and something it doesn't like in
the generated mapping document.
to reproduce:
check out the continuum parent project (and the maven pom project
because it refers to it) and run the build.bat to get the initial
environment going. Now drop the following test in:
package org.apache.maven.continuum.configuration;
import org.apache.maven.continuum.AbstractContinuumTest;
public class FailingTest extends AbstractContinuumTest
{
public void testExpectingToFailButGetError()
{
fail("expect a fail, but never get that far.");
}
}
run the test (in eclipse by hand or shotcut Shift+Alt+X, T).
the test will begin to run and generate the following output:
21:15:04,206 INFO JPOX.JDO
[org.jpox.AbstractPersistenceManagerFactory] PersistenceManagerFactory -
Vendor: JPOX Version: 1.1.1
21:15:04,222 INFO JPOX.JDO
[org.jpox.AbstractPersistenceManagerFactory] PersistenceManagerFactory
initialised for datastore
URL=jdbc:hsqldb:mem:org.apache.maven.continuum.configuration.FailingTest.testDoNothing
driver=org.hsqldb.jdbcDriver userName=sa
21:15:05,113 INFO JPOX.RDBMS
[org.jpox.store.rdbms.adapter.RDBMSAdapterFactory] RDBMS Adapter
initialised : HSQLAdapter : HSQL Database Engine version=1.7.3, major=1,
minor=7, revision=3
Identifier Names : UPPERCASE
Driver name=HSQL Database Engine Driver, version=1.7.3, major=1, minor=7
Identifier Max Lengths : Table=128 Column=128 Constraint=128
Index=128 Delimeters="
Identifier Support in DDL : catalog=false schema=false
21:15:05,300 INFO JPOX.RDBMS
[org.jpox.store.rdbms.table.AbstractTable] Creating table
DELETEME1157073305238
21:15:05,347 INFO JPOX.RDBMS.SCHEMA
[org.jpox.store.rdbms.table.ProbeTable] Catalog Name could not be
determined for this datastore
21:15:05,347 INFO JPOX.RDBMS.SCHEMA
[org.jpox.store.rdbms.table.ProbeTable] Schema Name could not be
determined for this datastore
21:15:05,347 INFO JPOX.RDBMS
[org.jpox.store.rdbms.table.AbstractTable] Dropping table
DELETEME1157073305238
21:15:05,363 INFO JPOX.RDBMS.SCHEMA
[org.jpox.store.rdbms.RDBMSManager] Initialising Catalog "", Schema ""
using "None" auto-start option
21:15:05,363 INFO JPOX.RDBMS.SCHEMA
[org.jpox.store.rdbms.RDBMSManager] Catalog "", Schema "" initialised -
managing 0 classes
21:15:05,644 INFO JPOX.MetaData
[org.jpox.metadata.MetaDataParser] Parsing MetaData from file
"file:/C:/continuum-parent/bin/META-INF/package.jdo"
You should then get an exception as follows:
org.jpox.metadata.InvalidMetaDataException: Error in MetaData for field
"projectGroup" in class "Project" : this is declared as
org.apache.maven.continuum.model.project.ProjectGroup with
"persistence-modifier=none" yet has either "default-fetch-group=true" or
"primary-key=true" specified! These should be false.
at
org.jpox.metadata.AbstractPropertyMetaData.populate(AbstractPropertyMetaData.java:818)
at
org.jpox.metadata.ClassMetaData.populatePropertyMetaData(ClassMetaData.java:418)
at org.jpox.metadata.ClassMetaData.populate(ClassMetaData.java:238)
at
org.jpox.metadata.MetaDataManager.populateClassesInterfacesInFile(MetaDataManager.java:1308)
at
org.jpox.metadata.MetaDataManager.loadMetaDataForClass(MetaDataManager.java:1430)
at
org.jpox.metadata.MetaDataManager.getMetaDataForClassOrInterface(MetaDataManager.java:544)
at
org.jpox.metadata.MetaDataManager.getMetaDataForClassInternal(MetaDataManager.java:509)
at
org.jpox.metadata.MetaDataManager.getMetaDataForClass(MetaDataManager.java:392)
at
org.jpox.metadata.MetaDataManager.getMetaDataForClass(MetaDataManager.java:378)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.getReferencedClasses(RDBMSManager.java:2852)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2603)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTablesAndValidate(RDBMSManager.java:2915)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.run(RDBMSManager.java:2540)
at
org.jpox.store.rdbms.RDBMSManager$MgmtTransaction.execute(RDBMSManager.java:2397)
at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:603)
at org.jpox.SchemaTool.createSchemaTables(SchemaTool.java:279)
at
org.apache.maven.continuum.AbstractContinuumTest.getStore(AbstractContinuumTest.java:132)
at
org.apache.maven.continuum.AbstractContinuumTest.setUp(AbstractContinuumTest.java:62)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Now... if you go and edit the package.jdo and fix what it's complaining
about, rerun the same test and you get the same error but on a different
mapping. this can go on all night as I can attest to.
- Brill Pappin
Jesse McConnell wrote:
could you generate a diff with what you are trying to do and I'll
apply the to a fresh checkout and see what I can figure out
can't help much unless I can see what your trying to do specifically :)
jesse
On 8/30/06, Brill Pappin <[EMAIL PROTECTED]> wrote:
all I want to do it write a regression test for some code before I make
any changes...
But I seem to be unable to inject my fakes into the code under test
(members not exposed).
So I took a look at some of the other test that use an abstract base
test... however it initializes a whole in memory database.
it also doesn't seem to work as I keep getting a jpox error about bad
mappings:
org.jpox.metadata.InvalidMetaDataException: Error in MetaData for field
"projectGroup" in class "Project" : this is declared as
org.apache.maven.continuum.model.project.ProjectGroup with
"persistence-modifier=none" yet has either "default-fetch-group=true" or
"primary-key=true" specified! These should be false.
at
org.jpox.metadata.AbstractPropertyMetaData.populate(AbstractPropertyMetaData.java:818)
at
org.jpox.metadata.ClassMetaData.populatePropertyMetaData(ClassMetaData.java:418)
at org.jpox.metadata.ClassMetaData.populate(ClassMetaData.java:238)
at
org.jpox.metadata.MetaDataManager.populateClassesInterfacesInFile(MetaDataManager.java:1308)
at
org.jpox.metadata.MetaDataManager.loadMetaDataForClass(MetaDataManager.java:1430)
at
org.jpox.metadata.MetaDataManager.getMetaDataForClassOrInterface(MetaDataManager.java:544)
at
org.jpox.metadata.MetaDataManager.getMetaDataForClassInternal(MetaDataManager.java:509)
at
org.jpox.metadata.MetaDataManager.getMetaDataForClass(MetaDataManager.java:392)
at
org.jpox.metadata.MetaDataManager.getMetaDataForClass(MetaDataManager.java:378)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.getReferencedClasses(RDBMSManager.java:2852)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2603)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTablesAndValidate(RDBMSManager.java:2915)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.run(RDBMSManager.java:2540)
at
org.jpox.store.rdbms.RDBMSManager$MgmtTransaction.execute(RDBMSManager.java:2397)
at
org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:603)
at org.jpox.SchemaTool.createSchemaTables(SchemaTool.java:279)
at
org.apache.maven.continuum.AbstractContinuumTest.getStore(AbstractContinuumTest.java:132)
at
org.apache.maven.continuum.AbstractContinuumTest.setUp(AbstractContinuumTest.java:62)
at
org.apache.maven.continuum.buildcontroller.DefaultBuildControllerTest.setUp(DefaultBuildControllerTest.java:26)
If i fix the jdo file manually, I get another one just like this for
another mapping... and so on, and so on...
Do I really need to use this base test, or does someone have a way to
write a simple unit test?
- Brill Pappin