Skip to content

Commit

Permalink
Teach CustomRunner to read orm.junit annotations
Browse files Browse the repository at this point in the history
  • Loading branch information
beikov committed Nov 23, 2022
1 parent 43f9cd6 commit 818bb41
Showing 1 changed file with 58 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,14 @@ RequiresDialect.class, RequiresDialects.class, frameworkMethod, getTestClass()
return buildIgnore( requiresDialects );
}

final List<org.hibernate.testing.orm.junit.RequiresDialect> effectiveRequiresDialects = Helper.collectAnnotations(
org.hibernate.testing.orm.junit.RequiresDialect.class, org.hibernate.testing.orm.junit.RequiresDialects.class, frameworkMethod, getTestClass()
);

if ( !effectiveRequiresDialects.isEmpty() && !isDialectMatchingRequired2( effectiveRequiresDialects ) ) {
return buildIgnore2( effectiveRequiresDialects );
}

// @RequiresDialectFeature
final List<RequiresDialectFeature> requiresDialectFeatures = Helper.locateAllAnnotations(
RequiresDialectFeature.class,
Expand Down Expand Up @@ -366,6 +374,43 @@ private boolean isDialectMatchingRequired(List<RequiresDialect> requiresDialects
return foundMatch;
}

private boolean isDialectMatchingRequired2(List<org.hibernate.testing.orm.junit.RequiresDialect> effectiveRequiresDialects) {
for ( org.hibernate.testing.orm.junit.RequiresDialect requiresDialect : effectiveRequiresDialects ) {
final boolean versionsMatch;
final int matchingMajorVersion = requiresDialect.majorVersion();

if ( matchingMajorVersion >= 0 ) {
final int matchingMinorVersion = requiresDialect.minorVersion();
final int matchingMicroVersion = requiresDialect.microVersion();

versionsMatch = DialectFilterExtension.versionsMatch(
matchingMajorVersion,
matchingMinorVersion,
matchingMicroVersion,
dialect,
requiresDialect.matchSubTypes()
);
}
else {
versionsMatch = true;
}


if ( ! requiresDialect.value().isInstance( dialect ) ) {
continue;
}

if ( ! versionsMatch ) {
continue;
}

if ( requiresDialect.matchSubTypes() || requiresDialect.value().equals( dialect.getClass() ) ) {
return true;
}
}
return false;
}

private Ignore buildIgnore(Skip skip) {
return new IgnoreImpl( "@Skip : " + skip.message() );
}
Expand Down Expand Up @@ -412,6 +457,19 @@ private Ignore buildIgnore(List<RequiresDialect> requiresDialects) {
return new IgnoreImpl( ignoreMessage );
}

private Ignore buildIgnore2(List<org.hibernate.testing.orm.junit.RequiresDialect> requiresDialects) {
String ignoreMessage = "";
for ( org.hibernate.testing.orm.junit.RequiresDialect requiresDialect : requiresDialects ) {
ignoreMessage += getIgnoreMessage(
"@RequiresDialect non-match",
requiresDialect.comment(),
null
);
ignoreMessage += System.lineSeparator();
}
return new IgnoreImpl( ignoreMessage );
}

private Ignore buildIgnore(RequiresDialectFeature requiresDialectFeature) {
return buildIgnore(
"@RequiresDialectFeature non-match",
Expand Down

0 comments on commit 818bb41

Please sign in to comment.