package org.infinispan.commons.test.skip; import java.util.Arrays; import org.junit.Assume; import org.junit.rules.MethodRule; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.Statement; public class SkipOnOsRule implements MethodRule { @Override public Statement apply(Statement base, FrameworkMethod method, Object target) { Statement result = base; SkipOnOs skipOsAnnotation = getSkipOsAnnotation(method); if (skipOsAnnotation != null && Arrays.asList(skipOsAnnotation.value()).contains(SkipOnOsUtils.getOs())) { result = new IgnoreStatement(method, skipOsAnnotation.value()); } return result; } private SkipOnOs getSkipOsAnnotation(FrameworkMethod method) { return method.getAnnotation(SkipOnOs.class); } private static class IgnoreStatement extends Statement { private final FrameworkMethod method; private final SkipOnOs.OS [] skippedOses; IgnoreStatement(FrameworkMethod method, SkipOnOs.OS[] skippedOses) { this.method = method; this.skippedOses = skippedOses; } @Override public void evaluate() { String msg = "Skipping test " + method.getName() + " on " + Arrays.toString(skippedOses); System.out.println(msg); Assume.assumeTrue(msg, false); } } }