private Ignore buildIgnore(SkipForDialect skip) { return buildIgnore("@SkipForDialect match", skip.comment(), skip.jiraKey()); }
protected Ignore convertSkipToIgnore(FrameworkMethod frameworkMethod) { // @Skip Skip skip = Helper.locateAnnotation(Skip.class, frameworkMethod, getTestClass()); if (skip != null) { if (isMatch(skip.condition())) { return buildIgnore(skip); } } // @SkipForDialects & @SkipForDialect for (SkipForDialect skipForDialectAnn : Helper.collectAnnotations( SkipForDialect.class, SkipForDialects.class, frameworkMethod, getTestClass())) { for (Class<? extends Dialect> dialectClass : skipForDialectAnn.value()) { if (skipForDialectAnn.strictMatching()) { if (dialectClass.equals(dialect.getClass())) { return buildIgnore(skipForDialectAnn); } } else { if (dialectClass.isInstance(dialect)) { return buildIgnore(skipForDialectAnn); } } } } // @RequiresDialects & @RequiresDialect for (RequiresDialect requiresDialectAnn : Helper.collectAnnotations( RequiresDialect.class, RequiresDialects.class, frameworkMethod, getTestClass())) { boolean foundMatch = false; for (Class<? extends Dialect> dialectClass : requiresDialectAnn.value()) { foundMatch = requiresDialectAnn.strictMatching() ? dialectClass.equals(dialect.getClass()) : dialectClass.isInstance(dialect); if (foundMatch) { break; } } if (!foundMatch) { return buildIgnore(requiresDialectAnn); } } // @RequiresDialectFeature RequiresDialectFeature requiresDialectFeatureAnn = Helper.locateAnnotation(RequiresDialectFeature.class, frameworkMethod, getTestClass()); if (requiresDialectFeatureAnn != null) { try { boolean foundMatch = false; for (Class<? extends DialectCheck> checkClass : requiresDialectFeatureAnn.value()) { foundMatch = checkClass.newInstance().isMatch(dialect); if (!foundMatch) { return buildIgnore(requiresDialectFeatureAnn); } } } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new RuntimeException("Unable to instantiate DialectCheck", e); } } return null; }