001package org.conqat.lib.commons.test; 002 003import java.util.Optional; 004 005import org.conqat.lib.commons.test.tags.AssumeExecutionOnCiServer; 006import org.junit.jupiter.api.extension.ConditionEvaluationResult; 007import org.junit.jupiter.api.extension.ExecutionCondition; 008import org.junit.jupiter.api.extension.ExtensionContext; 009import org.junit.platform.commons.util.AnnotationUtils; 010 011/** 012 * Extension class for conditional test execution. Checks classes and/or methods 013 * annotated with {@link AssumeExecutionOnCiServer}. If annotation present, test 014 * will only be executed on the CI server. 015 */ 016public class AssumeExecutionOnCiServerCondition implements ExecutionCondition { 017 018 /** Evaluates whether execution is on CI server. */ 019 @Override 020 public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) { 021 022 Optional<AssumeExecutionOnCiServer> annotation = AnnotationUtils.findAnnotation(context.getElement(), 023 AssumeExecutionOnCiServer.class); 024 025 if (!annotation.isPresent()) { 026 return ConditionEvaluationResult.enabled("No AssumeExecutionOnCiServer annotation found. Continuing test!"); 027 } 028 029 if (!TestUtils.isExecutionOnCiServer()) { 030 return ConditionEvaluationResult 031 .disabled("This test can only be executed in CI server environment. Skipping!"); 032 } 033 return ConditionEvaluationResult.enabled("Test is executed in CI server environment. Continuing test!"); 034 } 035}