diff options
author | Jiri Vanek <[email protected]> | 2013-11-13 10:05:32 +0100 |
---|---|---|
committer | Jiri Vanek <[email protected]> | 2013-11-13 10:05:32 +0100 |
commit | 4c33f8335773f823825086b6088765195d5cd06f (patch) | |
tree | fa6eba9214bfcc2a7567af248be4105ac805aabd | |
parent | 1c0876d0d5afafdd6472fbb873a5472fb62adf0a (diff) |
Added test-extension to silence stdout/err of itw when run from junit
5 files changed, 105 insertions, 9 deletions
@@ -1,5 +1,15 @@ 2013-11-13 Jiri Vanek <[email protected]> + Added test-extension to silence stdout/err of itw when run from junit + * tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java: now extends NoStdOutErrTest + * tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java: same + * tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPClassLoaderTest.java: same + * tests/test-extensions/net/sourceforge/jnlp/util/logging/NoStdOutErrTest.java: + new class with (disableStds) BeforeClass method and (restoreStds) AfterClass + method which are responsible for silence all itw messages from extending test. + +2013-11-13 Jiri Vanek <[email protected]> + Enabled access to manifests' attributes from JNLPFile class Implemented http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#app_name * netx/net/sourceforge/jnlp/JNLPFile.java: Added (manifestsAttributes) field. diff --git a/tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java b/tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java index 8285df2..d647364 100644 --- a/tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java +++ b/tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java @@ -47,11 +47,12 @@ import java.util.Map; import net.sourceforge.jnlp.JNLPFile.Match; import net.sourceforge.jnlp.annotations.Bug; import net.sourceforge.jnlp.mock.MockJNLPFile; +import net.sourceforge.jnlp.util.logging.NoStdOutErrTest; import org.junit.Assert; import org.junit.Test; -public class JNLPFileTest { +public class JNLPFileTest extends NoStdOutErrTest{ Locale jvmLocale = new Locale("en", "CA", "utf8"); MockJNLPFile file = new MockJNLPFile(jvmLocale); diff --git a/tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java b/tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java index 048e517..c5f32dc 100644 --- a/tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java +++ b/tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java @@ -37,20 +37,17 @@ exception statement from your version. package net.sourceforge.jnlp; -import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.List; -import net.sourceforge.jnlp.runtime.CodeBaseClassLoaderTest; import net.sourceforge.jnlp.mock.DummyJNLPFile; +import net.sourceforge.jnlp.util.logging.NoStdOutErrTest; -import org.junit.After; import org.junit.Assert; -import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /** Test that the parser works with basic jnlp files */ -public class ParserBasic { +public class ParserBasic extends NoStdOutErrTest{ private static Node root; private static Parser parser; diff --git a/tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPClassLoaderTest.java b/tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPClassLoaderTest.java index 49da8d5..e713512 100644 --- a/tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPClassLoaderTest.java +++ b/tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPClassLoaderTest.java @@ -42,9 +42,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; import java.io.File; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.jar.Attributes; import java.util.jar.Manifest; @@ -52,10 +50,11 @@ import net.sourceforge.jnlp.LaunchException; import net.sourceforge.jnlp.cache.UpdatePolicy; import net.sourceforge.jnlp.mock.DummyJNLPFileWithJar; import net.sourceforge.jnlp.util.FileTestUtils; +import net.sourceforge.jnlp.util.logging.NoStdOutErrTest; import org.junit.Test; -public class JNLPClassLoaderTest { +public class JNLPClassLoaderTest extends NoStdOutErrTest{ /* Note: Only does file leak testing for now. */ @Test diff --git a/tests/test-extensions/net/sourceforge/jnlp/util/logging/NoStdOutErrTest.java b/tests/test-extensions/net/sourceforge/jnlp/util/logging/NoStdOutErrTest.java new file mode 100644 index 0000000..ee9e977 --- /dev/null +++ b/tests/test-extensions/net/sourceforge/jnlp/util/logging/NoStdOutErrTest.java @@ -0,0 +1,89 @@ +/* +Copyright (C) 2011-2012 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + */ +package net.sourceforge.jnlp.util.logging; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import org.junit.AfterClass; +import org.junit.BeforeClass; + +/** + * It is crucial that BeforeClass inits logging subsystem. + * If logging subsytem of itw is enabled from itw, then junit's classloader do not + * see it. And so when is junit manipualting with logging, then it creates new (second!) + * static instance. On opposite, if junit creates the instance, then itw see this one. + * + * Explanation is that junit classloader (fresh for each test-class) is creating + * special classlaoder for itw (or better itw is creating its own one). The itw + * classlaoder is then branch...or leaf of junit classlaoder. So any class loaded + * by junit classlaoder is visible from itw, but not vice verse. + */ +public class NoStdOutErrTest { + + private static boolean origialStds; + + private static final String setLogToStreams = "setLogToStreams"; + + @BeforeClass + public static void disableStds() throws Exception { + //init logger and log and flush message + //it is crucial for junit to grip it + OutputController.getLogger().log("initialising"); + //one more times: if TESTED class is the first which creates instance of logger + //then when junit can not access this class, and creates its own for its purposes + //when junit creates this class, then also TESTED class have access to it and so it behaves as expected + OutputController.getLogger().flush(); + origialStds = LogConfig.getLogConfig().isLogToStreams(); + invokeSetLogToStreams(false); + } + + @AfterClass + public static void restoreStds() throws Exception { + OutputController.getLogger().flush(); + invokeSetLogToStreams(origialStds); + } + + private static void invokeSetLogToStreams(boolean state) throws IllegalAccessException, SecurityException, NoSuchMethodException, InvocationTargetException, IllegalArgumentException { + Method lcs = LogConfig.class.getDeclaredMethod(setLogToStreams, boolean.class); + lcs.setAccessible(true); + lcs.invoke(LogConfig.getLogConfig(), state); + } + + + +} |