From 183bd2c90376c0980fd4de562631098ce51992ec Mon Sep 17 00:00:00 2001 From: Mikhail Mazursky Date: Sun, 22 Sep 2013 17:55:29 +0600 Subject: [PATCH] Move helper method to TeztHelper to allow reuse --- .../classic/spi/ThrowableProxyTest.java | 28 ++++--------------- .../qos/logback/classic/util/TeztHelper.java | 26 ++++++++++++++++- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/ThrowableProxyTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/ThrowableProxyTest.java index e0c552d951..5f43e9a59a 100644 --- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/ThrowableProxyTest.java +++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/ThrowableProxyTest.java @@ -13,14 +13,17 @@ */ package ch.qos.logback.classic.spi; +import static ch.qos.logback.classic.util.TeztHelper.addSuppressed; import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeNotNull; +import static org.junit.Assume.assumeTrue; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import ch.qos.logback.classic.util.TeztHelper; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -30,25 +33,6 @@ public class ThrowableProxyTest { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); - private static final Method ADD_SUPPRESSED_METHOD; - - static { - Method method = null; - try { - method = Throwable.class.getMethod("addSuppressed", Throwable.class); - } catch (NoSuchMethodException e) { - // ignore, will get thrown in Java < 7 - } - ADD_SUPPRESSED_METHOD = method; - } - - private static void addSuppressed(Throwable outer, Throwable suppressed) throws InvocationTargetException, IllegalAccessException - { - if(ADD_SUPPRESSED_METHOD != null) { - ADD_SUPPRESSED_METHOD.invoke(outer, suppressed); - } - } - @Before public void setUp() throws Exception { } @@ -96,7 +80,7 @@ public void nested() { @Test public void suppressed() throws InvocationTargetException, IllegalAccessException { - assumeNotNull(ADD_SUPPRESSED_METHOD); // only execute on Java 7, would work anyway but doesn't make sense. + assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense. Exception ex = null; try { someMethod(); @@ -113,7 +97,7 @@ public void suppressed() throws InvocationTargetException, IllegalAccessExceptio @Test public void suppressedWithCause() throws InvocationTargetException, IllegalAccessException { - assumeNotNull(ADD_SUPPRESSED_METHOD); // only execute on Java 7, would work anyway but doesn't make sense. + assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense. Exception ex = null; try { someMethod(); @@ -130,7 +114,7 @@ public void suppressedWithCause() throws InvocationTargetException, IllegalAcces @Test public void suppressedWithSuppressed() throws Exception { - assumeNotNull(ADD_SUPPRESSED_METHOD); // only execute on Java 7, would work anyway but doesn't make sense. + assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense. Exception ex = null; try { someMethod(); diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztHelper.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztHelper.java index 2bee5886e7..71d6bf7160 100644 --- a/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztHelper.java +++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztHelper.java @@ -13,9 +13,33 @@ */ package ch.qos.logback.classic.util; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + public class TeztHelper { - + private static final Method ADD_SUPPRESSED_METHOD; + + static { + Method method = null; + try { + method = Throwable.class.getMethod("addSuppressed", Throwable.class); + } catch (NoSuchMethodException e) { + // ignore, will get thrown in Java < 7 + } + ADD_SUPPRESSED_METHOD = method; + } + + public static boolean suppressedSupported() { + return ADD_SUPPRESSED_METHOD != null; + } + + public static void addSuppressed(Throwable outer, Throwable suppressed) throws InvocationTargetException, IllegalAccessException { + if(suppressedSupported()) { + ADD_SUPPRESSED_METHOD.invoke(outer, suppressed); + } + } + static public Throwable makeNestedException(int level) { if (level == 0) { return new Exception("nesting level=" + level);