tests must be skipped on certain OSes

This commit is contained in:
Ilya.Kazakevich
2018-03-27 00:59:41 +03:00
parent df297f18ef
commit e8d12bf09a
4 changed files with 27 additions and 5 deletions
+18 -1
View File
@@ -15,9 +15,26 @@
*/
package com.jetbrains;
import com.intellij.openapi.util.SystemInfo;
import org.jetbrains.annotations.NotNull;
import java.util.function.Supplier;
/**
* @author traff
*/
public enum TestEnv {
WINDOWS, LINUX, MAC
WINDOWS(() -> SystemInfo.isWindows), LINUX(() -> SystemInfo.isLinux), MAC(() -> SystemInfo.isMac);
@NotNull
private final Supplier<Boolean> myThisOs;
TestEnv(@NotNull final Supplier<Boolean> isThisOs) {
myThisOs = isThisOs;
}
public boolean isThisOs() {
return myThisOs.get();
}
}
@@ -15,6 +15,8 @@
*/
package com.jetbrains.env;
import com.jetbrains.TestEnv;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -32,4 +34,5 @@ public @interface EnvTestTagsRequired {
* @return tags should exist on interpreter for this test not to be skipped
*/
String[] tags();
TestEnv[] skipOnOSes() default {};
}
+3 -4
View File
@@ -9,7 +9,6 @@ import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.TestDialog;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.testFramework.LoggedErrorProcessor;
import com.intellij.testFramework.UsefulTestCase;
@@ -105,9 +104,7 @@ public abstract class PyEnvTestCase {
}
else {
for (StagingOn so : description.getTestClass().getMethod(description.getMethodName()).getAnnotationsByType(StagingOn.class)) {
if (so.os() == TestEnv.WINDOWS && SystemInfo.isWindows ||
so.os() == TestEnv.LINUX && SystemInfo.isLinux ||
so.os() == TestEnv.MAC && SystemInfo.isMac) {
if (so.os().isThisOs()) {
return true;
}
}
@@ -251,6 +248,8 @@ public abstract class PyEnvTestCase {
catch (final NoSuchMethodException e) {
throw new AssertionError("No such method", e);
}
Assume.assumeFalse("Test skipped on this os", Arrays.stream(classAnnotation.skipOnOSes()).anyMatch(TestEnv::isThisOs));
final String[] classTags = getTags(classAnnotation);
final String[] methodTags = getTags(methodAnnotation);
@@ -2,6 +2,8 @@ package com.jetbrains.env.python.dotNet;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.projectRoots.Sdk;
import com.jetbrains.TestEnv;
import com.jetbrains.env.EnvTestTagsRequired;
import com.jetbrains.env.PyEnvTestCase;
import com.jetbrains.python.psi.PyFile;
import com.jetbrains.python.sdk.InvalidSdkException;
@@ -17,6 +19,7 @@ import java.io.IOException;
*
* @author Ilya.Kazakevich
*/
@EnvTestTagsRequired(tags = "iron", skipOnOSes = {TestEnv.LINUX, TestEnv.MAC})
public final class PyIronPythonTest extends PyEnvTestCase {
/**