void (PyTestTask testTask, String testName, List<String> roots) { Assume.assumeFalse("Tests launched in remote SDK mode, and this test is not remote", SETTINGS.useRemoteSdk()); PyEnvTaskRunner taskRunner = new PyEnvTaskRunner(roots, myLoggingRule); final EnvTestTagsRequired classAnnotation = getClass().getAnnotation(EnvTestTagsRequired.class); EnvTestTagsRequired methodAnnotation = null; try { String methodName = myTestName.getMethodName(); if (methodName.contains("[")) { methodName = methodName.substring(0, methodName.indexOf('[')); } final Method method = getClass().getMethod(methodName); methodAnnotation = method.getAnnotation(EnvTestTagsRequired.class); } catch (final NoSuchMethodException e) { throw new AssertionError("No such method", e); } final Class<? extends PythonSdkFlavor>[] skipOnFlavors; final EnvTestTagsRequired firstAnnotation = (methodAnnotation != null ? methodAnnotation : classAnnotation); if (firstAnnotation != null) { Assume.assumeFalse("Test skipped on this os", Arrays.stream(firstAnnotation.skipOnOSes()).anyMatch(TestEnv::isThisOs)); skipOnFlavors = firstAnnotation.skipOnFlavors(); } else { skipOnFlavors = null; } final String[] classTags = getTags(classAnnotation); final String[] methodTags = getTags(methodAnnotation); taskRunner.runTask(testTask, testName, skipOnFlavors, ArrayUtil.mergeArrays(methodTags, classTags)); }