package net.bytebuddy.test.utility;
import org.junit.rules.MethodRule;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.logging.Logger;
public class IntegrationRule implements MethodRule {
private static final String PROPERTY_KEY = "net.bytebuddy.test.integration";
private final boolean integration;
public IntegrationRule() {
integration = Boolean.getBoolean(PROPERTY_KEY);
}
@Override
public Statement apply(Statement base, FrameworkMethod method, Object target) {
return !integration && method.getAnnotation(Enforce.class) != null
? new NoOpStatement()
: base;
}
@Retention(RetentionPolicy.RUNTIME)
public @interface Enforce {
/* empty */
}
private static class NoOpStatement extends Statement {
@Override
public void evaluate() throws Throwable {
Logger.getLogger("net.bytebuddy").warning("Ignored test case that is only to be run on the CI server due to long runtime");
}
}
}