diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java deleted file mode 100644 index 9a21caee..00000000 --- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.tools.ant.taskdefs.optional.junit; - -import java.lang.annotation.Annotation; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import junit.framework.Test; -import junit.framework.TestCase; - -/** - * Work around for some changes to the public JUnit API between - * different JUnit releases. - * @since Ant 1.7 - */ -// CheckStyle:HideUtilityClassConstructorCheck OFF (bc) -public class JUnitVersionHelper { - - private static Method testCaseName = null; - - /** - * Name of the JUnit4 class we look for. - * {@value} - * @since Ant 1.7.1 - */ - public static final String JUNIT_FRAMEWORK_JUNIT4_TEST_CASE_FACADE - = "junit.framework.JUnit4TestCaseFacade"; - private static final String UNKNOWN_TEST_CASE_NAME = "unknown"; - - static { - try { - testCaseName = TestCase.class.getMethod("getName", new Class[0]); - } catch (NoSuchMethodException e) { - // pre JUnit 3.7 - try { - testCaseName = TestCase.class.getMethod("name", new Class[0]); - } catch (NoSuchMethodException ignored) { - // ignore - } - } - } - - /** - * JUnit 3.7 introduces TestCase.getName() and subsequent versions - * of JUnit remove the old name() method. This method provides - * access to the name of a TestCase via reflection that is - * supposed to work with version before and after JUnit 3.7. - * - * <p>since Ant 1.5.1 this method will invoke "<code>public - * String getName()</code>" on any implementation of Test if - * it exists.</p> - * - * <p>Since Ant 1.7 also checks for JUnit4TestCaseFacade explicitly. - * This is used by junit.framework.JUnit4TestAdapter.</p> - * @param t the test. - * @return the name of the test. - */ - public static String getTestCaseName(Test t) { - if (t == null) { - return UNKNOWN_TEST_CASE_NAME; - } - if (t.getClass().getName().equals(JUNIT_FRAMEWORK_JUNIT4_TEST_CASE_FACADE)) { - // Self-describing as of JUnit 4 (#38811). But trim "(ClassName)". - String name = t.toString(); - if (name.endsWith(")")) { - int paren = name.lastIndexOf('('); - return name.substring(0, paren); - } else { - return name; - } - } - if (t instanceof TestCase && testCaseName != null) { - try { - return (String) testCaseName.invoke(t, new Object[0]); - } catch (Throwable ignored) { - // ignore - } - } else { - try { - Method getNameMethod = null; - try { - getNameMethod = - t.getClass().getMethod("getName", new Class [0]); - } catch (NoSuchMethodException e) { - getNameMethod = t.getClass().getMethod("name", - new Class [0]); - } - if (getNameMethod != null - && getNameMethod.getReturnType() == String.class) { - return (String) getNameMethod.invoke(t, new Object[0]); - } - } catch (Throwable ignored) { - // ignore - } - } - return UNKNOWN_TEST_CASE_NAME; - } - - /** - * Tries to find the name of the class which a test represents - * across JUnit 3 and 4. For JUnit4 it parses the toString() value of the - * test, and extracts it from there. - * @since Ant 1.7.1 (it was private until then) - * @param test test case to look at - * @return the extracted class name. - */ - public static String getTestCaseClassName(Test test) { - String className = test.getClass().getName(); - if (test instanceof JUnitTaskMirrorImpl.VmExitErrorTest) { - className = ((JUnitTaskMirrorImpl.VmExitErrorTest) test).getClassName(); - } else - if (className.equals(JUNIT_FRAMEWORK_JUNIT4_TEST_CASE_FACADE)) { - // JUnit 4 wraps solo tests this way. We can extract - // the original test name with a little hack. - String name = test.toString(); - int paren = name.lastIndexOf('('); - if (paren != -1 && name.endsWith(")")) { - className = name.substring(paren + 1, name.length() - 1); - } - } - return className; - } - - public static String getIgnoreMessage(Test test) { - String message = null; - - try { - Class<?> junit4FacadeClass = Class.forName("junit.framework.JUnit4TestCaseFacade"); - if (test != null && test.getClass().isAssignableFrom(junit4FacadeClass)) { - //try and get the message coded as part of the ignore - /* - * org.junit.runner.Description contains a getAnnotation(Class) method... but this - * wasn't in older versions of JUnit4 so we have to try and do this by reflection - */ - Class<?> testClass = Class.forName(JUnitVersionHelper.getTestCaseClassName(test)); - - Method testMethod = testClass.getMethod(JUnitVersionHelper.getTestCaseName(test)); - Class ignoreAnnotation = Class.forName("org.junit.Ignore"); - Annotation annotation = testMethod.getAnnotation(ignoreAnnotation); - if (annotation != null) { - Method valueMethod = annotation.getClass().getMethod("value"); - String value = (String) valueMethod.invoke(annotation); - if (value != null && value.length() > 0) { - message = value; - } - } - - } - } catch (NoSuchMethodException e) { - // silently ignore - we'll report a skip with no message - } catch (ClassNotFoundException e) { - // silently ignore - we'll report a skip with no message - } catch (InvocationTargetException e) { - // silently ignore - we'll report a skip with no message - } catch (IllegalAccessException e) { - // silently ignore - we'll report a skip with no message - } - return message; - - } - -} |