diff --git a/src/test/java/com/samskivert/depot/TestBase.java b/src/test/java/com/samskivert/depot/TestBase.java
index 1470017..12cbe4a 100644
--- a/src/test/java/com/samskivert/depot/TestBase.java
+++ b/src/test/java/com/samskivert/depot/TestBase.java
@@ -20,11 +20,13 @@
package com.samskivert.depot;
+import java.sql.Connection;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Properties;
+import com.samskivert.jdbc.ConnectionProvider;
import com.samskivert.jdbc.StaticConnectionProvider;
import com.samskivert.util.Calendars;
@@ -41,15 +43,50 @@ public abstract class TestBase
* to clean up after themselves to avoid conflicting with one another.
*/
protected static PersistenceContext createPersistenceContext ()
+ {
+ return createPersistenceContext("test");
+ }
+
+ /**
+ * Creates a persistence context configured to run against an (empty) in-memory HSQLDB.
+ * Note: all in-memory HSQL databases with the same {@code dbname} are shared for the
+ * duration of the VM, so tests have to clean up after themselves or use unique dbnames.
+ */
+ protected static PersistenceContext createPersistenceContext (String dbname)
+ {
+ return createPersistenceContext(dbname, null);
+ }
+
+ /**
+ * Creates a persistence context configured to run against an (empty) in-memory HSQLDB.
+ * Note: all in-memory HSQL databases with the same {@code dbname} are shared for the
+ * duration of the VM, so tests have to clean up after themselves or use unique dbnames.
+ *
+ * @param initSQL initialization SQL used to populate the database before the persistence
+ * context is initialized.
+ */
+ protected static PersistenceContext createPersistenceContext (String dbname, String[] initSQL)
{
Properties props = new Properties();
props.put("default.driver", "org.hsqldb.jdbcDriver");
- props.put("default.url", "jdbc:hsqldb:mem:test");
+ props.put("default.url", "jdbc:hsqldb:mem:" + dbname);
props.put("default.username", "sa");
props.put("default.password", "");
PersistenceContext perCtx = new PersistenceContext();
- perCtx.init("test", new StaticConnectionProvider(props), new TestCacheAdapter());
+ ConnectionProvider conprov = new StaticConnectionProvider(props);
+ if (initSQL != null) {
+ try {
+ Connection conn = conprov.getConnection(dbname, false);
+ for (String sql : initSQL) {
+ conn.createStatement().executeUpdate(sql);
+ }
+ conprov.releaseConnection(dbname, false, conn);
+ } catch (Exception e) {
+ throw new DatabaseException(e);
+ }
+ }
+ perCtx.init(dbname, conprov, new TestCacheAdapter());
return perCtx;
}