[hibernate-commits] Hibernate SVN: r17778 - in core/trunk/annotations/src/test/java/org/hibernate/test/annotations: manytoonewithformula and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Fri Oct 16 09:02:53 EDT 2009
Author: hardy.ferentschik
Date: 2009-10-16 09:02:53 -0400 (Fri, 16 Oct 2009)
New Revision: 17778
Added:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/SkipForDialect.java
Modified:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/TestCase.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytoonewithformula/ManyToOneWithFormulaTest.java
Log:
HHH-4497
Skipping ManyToOneWithFormulaTest.testManyToOneToPkWithOnlyFormula for now. Added a SkipForDialectAnnotation as counterpart for RequiresDialect
Copied: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/SkipForDialect.java (from rev 17773, core/trunk/annotations/src/test/java/org/hibernate/test/annotations/RequiresDialect.java)
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/SkipForDialect.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/SkipForDialect.java 2009-10-16 13:02:53 UTC (rev 17778)
@@ -0,0 +1,22 @@
+// $Id$
+package org.hibernate.test.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.hibernate.dialect.Dialect;
+
+/**
+ * Annotations used to mark a test to be specific to a given dialect.
+ *
+ * @author Hardy Ferentschik
+ */
+ at Target({ ElementType.METHOD, ElementType.TYPE })
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface SkipForDialect {
+ Class<? extends Dialect>[] value();
+
+ String comment();
+}
\ No newline at end of file
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/TestCase.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/TestCase.java 2009-10-16 12:35:19 UTC (rev 17777)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/TestCase.java 2009-10-16 13:02:53 UTC (rev 17778)
@@ -56,6 +56,11 @@
*/
private final Set<Class<? extends Dialect>> requiredDialectList = new HashSet<Class<? extends Dialect>>();
+ /**
+ * List of dialects for which the current {@code runMethod} should be skipped.
+ */
+ private final Set<Class<? extends Dialect>> skipForDialectList = new HashSet<Class<? extends Dialect>>();
+
public TestCase() {
super();
}
@@ -121,6 +126,7 @@
private void setRunTestFlag(Method runMethod) {
updateRequiredDialectList( runMethod );
+ updateSkipForDialectList( runMethod );
if ( runForCurrentDialect() ) {
runTest = true;
@@ -150,19 +156,44 @@
}
}
+ private void updateSkipForDialectList(Method runMethod) {
+ skipForDialectList.clear();
+
+ SkipForDialect skipForDialectMethodAnn = runMethod.getAnnotation( SkipForDialect.class );
+ if ( skipForDialectMethodAnn != null ) {
+ Class<? extends Dialect>[] skipDialects = skipForDialectMethodAnn.value();
+ skipForDialectList.addAll( Arrays.asList( skipDialects ) );
+ }
+
+ SkipForDialect skipForDialectClassAnn = getClass().getAnnotation( SkipForDialect.class );
+ if ( skipForDialectClassAnn != null ) {
+ Class<? extends Dialect>[] skipDialects = skipForDialectClassAnn.value();
+ skipForDialectList.addAll( Arrays.asList( skipDialects ) );
+ }
+ }
+
protected boolean runForCurrentDialect() {
- if ( requiredDialectList.isEmpty() ) {
- return true;
+ boolean runTestForCurrentDialect = true;
+
+ // check whether the current dialect is assignableFrom from any of the specified required dialects.
+ for ( Class<? extends Dialect> dialect : requiredDialectList ) {
+ if ( dialect.isAssignableFrom( Dialect.getDialect().getClass() ) ) {
+ runTestForCurrentDialect = true;
+ break;
+ }
+ runTestForCurrentDialect = false;
}
- else {
- // check whether the current dialect is assignableFrom from any of the specified required dialects.
- for ( Class<? extends Dialect> dialect : requiredDialectList ) {
- if ( dialect.isAssignableFrom( Dialect.getDialect().getClass() ) ) {
- return true;
- }
+
+ // check whether the current dialect is assignableFrom from any of the specified skip for dialects.
+ for ( Class<? extends Dialect> dialect : skipForDialectList ) {
+ if ( dialect.isAssignableFrom( Dialect.getDialect().getClass() ) ) {
+ runTestForCurrentDialect = false;
+ break;
}
- return false;
+ runTestForCurrentDialect = true;
}
+
+ return runTestForCurrentDialect;
}
private void runTestMethod(Method runMethod) throws Throwable {
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytoonewithformula/ManyToOneWithFormulaTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytoonewithformula/ManyToOneWithFormulaTest.java 2009-10-16 12:35:19 UTC (rev 17777)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytoonewithformula/ManyToOneWithFormulaTest.java 2009-10-16 13:02:53 UTC (rev 17778)
@@ -24,11 +24,12 @@
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
-
package org.hibernate.test.annotations.manytoonewithformula;
import org.hibernate.Session;
import org.hibernate.Transaction;
+import org.hibernate.dialect.HSQLDialect;
+import org.hibernate.test.annotations.SkipForDialect;
import org.hibernate.test.annotations.TestCase;
/**
@@ -39,13 +40,13 @@
public ManyToOneWithFormulaTest(String x) {
super( x );
}
-
+
public void testManyToOneFromNonPk() throws Exception {
Session s = openSession();
Transaction tx = s.beginTransaction();
Menu menu = new Menu();
menu.setOrderNbr( "123" );
- menu.setDefault("F");
+ menu.setDefault( "F" );
s.persist( menu );
FoodItem foodItem = new FoodItem();
foodItem.setItem( "Mouse" );
@@ -53,65 +54,66 @@
s.persist( foodItem );
s.flush();
s.clear();
- foodItem = (FoodItem) s.get( FoodItem.class, foodItem.getId() );
+ foodItem = ( FoodItem ) s.get( FoodItem.class, foodItem.getId() );
assertNotNull( foodItem.getOrder() );
assertEquals( "123", foodItem.getOrder().getOrderNbr() );
tx.rollback();
s.close();
}
-
+
public void testManyToOneFromPk() throws Exception {
Session s = openSession();
Transaction tx = s.beginTransaction();
-
+
Company company = new Company();
s.persist( company );
-
+
Person person = new Person();
- person.setDefaultFlag("T");
- person.setCompanyId(company.getId());
- s.persist(person);
-
+ person.setDefaultFlag( "T" );
+ person.setCompanyId( company.getId() );
+ s.persist( person );
+
s.flush();
s.clear();
-
- company = (Company) s.get( Company.class, company.getId() );
+
+ company = ( Company ) s.get( Company.class, company.getId() );
assertNotNull( company.getDefaultContactPerson() );
assertEquals( person.getId(), company.getDefaultContactPerson().getId() );
tx.rollback();
s.close();
}
+ @SkipForDialect(value = { HSQLDialect.class }, comment = "The used join conditions does not work in HSQLDB. See HHH-4497")
public void testManyToOneToPkWithOnlyFormula() throws Exception {
Session s = openSession();
Transaction tx = s.beginTransaction();
-
+
Language language = new Language();
- language.setCode("EN");
- language.setName("English");
+ language.setCode( "EN" );
+ language.setName( "English" );
s.persist( language );
-
+
Message msg = new Message();
- msg.setLanguageCode("en");
- msg.setLanguageName("English");
- s.persist(msg);
-
+ msg.setLanguageCode( "en" );
+ msg.setLanguageName( "English" );
+ s.persist( msg );
+
s.flush();
s.clear();
-
- msg = (Message) s.get( Message.class, msg.getId() );
- assertNotNull( msg.getLanguage());
+
+ msg = ( Message ) s.get( Message.class, msg.getId() );
+ assertNotNull( msg.getLanguage() );
assertEquals( "EN", msg.getLanguage().getCode() );
tx.rollback();
s.close();
}
-
+
/**
* @see org.hibernate.test.annotations.TestCase#getMappings()
*/
protected java.lang.Class<?>[] getMappings() {
- return new java.lang.Class[]{
+ return new java.lang.Class[] {
Menu.class,
FoodItem.class,
Company.class,
More information about the hibernate-commits
mailing list