This is an automated email from the git hooks/post-receive script. eugene-guest pushed a commit to annotated tag OpenBSD in repository testng.
commit dbe729282b45780f21cfede19ef4ab0b206423ef Author: Vladislav Rassokhin <[email protected]> Date: Sun Nov 23 01:32:16 2014 +0300 Invoker: Simplify #collectResults; Do not use deprecated methods; invokeTestMethods now returns single ITestResult (due to migration from instances to instance) Set test result end time asap after method invoked, before any post-invocation checks --- src/main/java/org/testng/internal/Invoker.java | 86 +++++++++++----------- .../TestMethodWithDataProviderMethodWorker.java | 2 +- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/main/java/org/testng/internal/Invoker.java b/src/main/java/org/testng/internal/Invoker.java index 08045fb..f74bf1c 100644 --- a/src/main/java/org/testng/internal/Invoker.java +++ b/src/main/java/org/testng/internal/Invoker.java @@ -42,6 +42,8 @@ import org.testng.xml.XmlTest; import java.lang.annotation.Annotation; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -667,11 +669,10 @@ public class Invoker implements IInvoker { m_notifier.addInvokedMethod(invokedMethod); - Method thisMethod= tm.getMethod(); + Method thisMethod = tm.getConstructorOrMethod().getMethod(); if(confInvocationPassed(tm, tm, testClass, instance)) { - log(3, "Invoking " + thisMethod.getDeclaringClass().getName() + "." + - thisMethod.getName()); + log(3, "Invoking " + tm.getRealClass().getName() + "." + tm.getMethodName()); // If no timeOut, just invoke the method if (MethodHelper.calculateTimeOut(tm) <= 0) { @@ -680,7 +681,7 @@ public class Invoker implements IInvoker { // If this method is a IHookable, invoke its run() method // IHookable hookableInstance = - IHookable.class.isAssignableFrom(thisMethod.getDeclaringClass()) ? + IHookable.class.isAssignableFrom(tm.getRealClass()) ? (IHookable) instance : m_configuration.getHookable(); if (hookableInstance != null) { MethodInvocationHelper.invokeHookable(instance, @@ -726,10 +727,12 @@ public class Invoker implements IInvoker { testResult.setStatus(ITestResult.FAILURE); } finally { + // Set end time ASAP + testResult.setEndMillis(System.currentTimeMillis()); + ExpectedExceptionsHolder expectedExceptionClasses = MethodHelper.findExpectedExceptions(m_annotationFinder, tm.getMethod()); - List<ITestResult> results = Lists.newArrayList(); - results.add(testResult); + List<ITestResult> results = Lists.<ITestResult>newArrayList(testResult); handleInvocationResults(tm, results, null, 0, expectedExceptionClasses, false, false /* collect results */); @@ -748,14 +751,13 @@ public class Invoker implements IInvoker { // tm.incrementCurrentInvocationCount(); - if (testResult != null) { - testResult.setEndMillis(System.currentTimeMillis()); - } - // Run invokedMethodListeners after updating TestResult runInvokedMethodListeners(AFTER_INVOCATION, invokedMethod, testResult); runTestListeners(testResult); - collectResults(tm, results, testResult); + // Do not notify if will retry. + if (!results.isEmpty()) { + collectResults(tm, Collections.<ITestResult>singleton(testResult)); + } // // Invoke afterMethods only if @@ -782,21 +784,21 @@ public class Invoker implements IInvoker { return testResult; } - private void collectResults(ITestNGMethod testMethod, List<ITestResult> results, TestResult testResult) { - for (int i = 0; i < results.size(); i++) { + void collectResults(ITestNGMethod testMethod, Collection<ITestResult> results) { + for (ITestResult result : results) { // Collect the results - int status = results.get(i).getStatus(); + final int status = result.getStatus(); if(ITestResult.SUCCESS == status) { - m_notifier.addPassedTest(testMethod, testResult); + m_notifier.addPassedTest(testMethod, result); } else if(ITestResult.SKIP == status) { - m_notifier.addSkippedTest(testMethod, testResult); + m_notifier.addSkippedTest(testMethod, result); } else if(ITestResult.FAILURE == status) { - m_notifier.addFailedTest(testMethod, testResult); + m_notifier.addFailedTest(testMethod, result); } else if(ITestResult.SUCCESS_PERCENTAGE_FAILURE == status) { - m_notifier.addFailedButWithinSuccessPercentageTest(testMethod, testResult); + m_notifier.addFailedButWithinSuccessPercentageTest(testMethod, result); } else { assert false : "UNKNOWN STATUS:" + status; @@ -857,10 +859,10 @@ public class Invoker implements IInvoker { * </ul> * * <p/> - * This method is also reponsible for invoking @BeforeGroup, @BeforeMethod, @AfterMethod, @AfterGroup + * This method is also responsible for invoking @BeforeGroup, @BeforeMethod, @AfterMethod, @AfterGroup * if it is the case for the passed in @Test method. */ - protected List<ITestResult> invokeTestMethod(Object instance, + protected ITestResult invokeTestMethod(Object instance, final ITestNGMethod tm, Object[] parameterValues, int parametersIndex, @@ -871,15 +873,13 @@ public class Invoker implements IInvoker { ITestNGMethod[] afterMethods, ConfigurationGroupMethods groupMethods) { - List<ITestResult> results = Lists.newArrayList(); - // Mark this method with the current thread id tm.setId(ThreadUtil.currentThreadInfo()); - results.add(invokeMethod(instance, tm, parameterValues, parametersIndex, suite, params, - testClass, beforeMethods, afterMethods, groupMethods)); + ITestResult result = invokeMethod(instance, tm, parameterValues, parametersIndex, suite, params, + testClass, beforeMethods, afterMethods, groupMethods); - return results; + return result; } /** @@ -1081,15 +1081,13 @@ public class Invoker implements IInvoker { { // Potential bug here if the test method was declared on a parent class assert null != testMethod.getTestClass() - : "COULDN'T FIND TESTCLASS FOR " + testMethod.getMethod().getDeclaringClass(); + : "COULDN'T FIND TESTCLASS FOR " + testMethod.getRealClass(); List<ITestResult> result = Lists.newArrayList(); if (!MethodHelper.isEnabled(testMethod.getMethod(), m_annotationFinder)) { - /* - * return if the method is not enabled. No need to do any more calculations - */ - return result; + // return if the method is not enabled. No need to do any more calculations + return Collections.emptyList(); } ITestClass testClass= testMethod.getTestClass(); @@ -1202,16 +1200,16 @@ public class Invoker implements IInvoker { List<ITestResult> tmpResults = Lists.newArrayList(); try { - tmpResults.addAll(invokeTestMethod(instance, - testMethod, - parameterValues, - parametersIndex, - suite, - parameters, - testClass, - beforeMethods, - afterMethods, - groupMethods)); + tmpResults.add(invokeTestMethod(instance, + testMethod, + parameterValues, + parametersIndex, + suite, + parameters, + testClass, + beforeMethods, + afterMethods, + groupMethods)); } finally { List<Object> failedInstances = Lists.newArrayList(); @@ -1713,7 +1711,9 @@ public class Invoker implements IInvoker { ITestNGMethod testMethod, ITestResult testResult, int failureCount) { - testResult.setThrowable(throwable); + if (throwable != null) { + testResult.setThrowable(throwable); + } int successPercentage= testMethod.getSuccessPercentage(); int invocationCount= testMethod.getInvocationCount(); float numberOfTestsThatCanFail= ((100 - successPercentage) * invocationCount) / 100f; @@ -1729,13 +1729,13 @@ public class Invoker implements IInvoker { /** * @param ite The exception that was just thrown - * @param expectedExceptions The list of expected exceptions for this + * @param exceptionHolder Expected exceptions holder for this * test method * @return true if the exception that was just thrown is part of the * expected exceptions */ private boolean isExpectedException(Throwable ite, ExpectedExceptionsHolder exceptionHolder) { - if (exceptionHolder == null) { + if (exceptionHolder == null || exceptionHolder.expectedClasses == null) { return false; } diff --git a/src/main/java/org/testng/internal/TestMethodWithDataProviderMethodWorker.java b/src/main/java/org/testng/internal/TestMethodWithDataProviderMethodWorker.java index 4b4005b..9f71b66 100755 --- a/src/main/java/org/testng/internal/TestMethodWithDataProviderMethodWorker.java +++ b/src/main/java/org/testng/internal/TestMethodWithDataProviderMethodWorker.java @@ -70,7 +70,7 @@ public class TestMethodWithDataProviderMethodWorker implements Callable<List<ITe long start = System.currentTimeMillis(); try { - tmpResults.addAll(m_invoker.invokeTestMethod(m_instance, + tmpResults.add(m_invoker.invokeTestMethod(m_instance, m_testMethod, m_parameterValues, m_parameterIndex, -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/testng.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

