001package org.conqat.lib.commons.test;
002
003import java.io.IOException;
004
005import org.conqat.lib.commons.system.SystemUtils;
006import org.junit.jupiter.api.extension.ConditionEvaluationResult;
007import org.junit.jupiter.api.extension.ExecutionCondition;
008import org.junit.jupiter.api.extension.ExtensionContext;
009
010/**
011 * Extension class for conditional test execution. Checks whether a .NET runtime
012 * environment is installed (.NET Framework on Windows and Mono on Linux/Mac).
013 */
014public class AssumeDotNetInstalledCondition implements ExecutionCondition {
015
016        /** Evaluates whether execution is on CI server. */
017        @Override
018        public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
019                if (SystemUtils.isWindows()) {
020                        return ConditionEvaluationResult.enabled(".NET Framework is installed on Windows.");
021                }
022
023                try {
024                        Runtime.getRuntime().exec("mono --version");
025                        return ConditionEvaluationResult.enabled("Mono is installed.");
026                } catch (IOException e) {
027                        return ConditionEvaluationResult.disabled("Mono is not isntalled.");
028                }
029        }
030}