Author: ceki Date: Fri Oct 3 19:56:46 2008 New Revision: 1176 Added: slf4j/trunk/integration/src/test/java/org/slf4j/Pre154VersionMismatchTest.java slf4j/trunk/integration/src/test/java/org/slf4j/StringPrintStream.java slf4j/trunk/integration/src/test/java/org/slf4j/VersionMatchTest.java Removed: slf4j/trunk/integration/src/test/java/org/slf4j/VersionTest.java Modified: slf4j/trunk/integration/build.xml slf4j/trunk/slf4j-site/src/site/pages/news.html
Log: - added a new version checking test - updates to the docs Modified: slf4j/trunk/integration/build.xml ============================================================================== --- slf4j/trunk/integration/build.xml (original) +++ slf4j/trunk/integration/build.xml Fri Oct 3 19:56:46 2008 @@ -1,5 +1,14 @@ <project name="integration" default="testAll" basedir="."> + <!-- + This build file is usually run indirectly via Maven. + + When running this build file through Ant diretly, you must + define the currentVersion property on the command line, e.g.: + + ant -DcurrentVersion=1.5.4-SNAPSHOT + --> + <echo message="compile classpath: ${compile_classpath}" /> <echo message="runtime classpath: ${runtime_classpath}" /> <echo message="test classpath: ${test_classpath}" /> @@ -12,27 +21,41 @@ <pathelement location="./lib/slf4j-simple-1.5.0.jar" /> </path > + <path id="pathCurrent"> + <pathelement location="xtarget/classes/" /> + <pathelement location="target/test-classes/" /> + <pathelement location="../slf4j-api/target/slf4j-api-${currentVersion}.jar" /> + <pathelement location="../slf4j-simple/target/slf4j-simple-${currentVersion}.jar" /> + </path > <!-- this is really very ugly, but it's the only way to circumvent http://jira.codehaus.org/browse/MANTRUN-95 --> <taskdef name="junit" classpath="${plugin_classpath};${compile_classpath}" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" /> - - <target name="testAll"> - <echo>Running unit tests via Ant</echo> - <echo>basedir=${basedir}</echo> - <echo>user.home=${user.home}</echo> + <target name="init"> <mkdir dir="target/unit-reports" /> + </target> + <target name="testAll" depends="init, + testPre154, + testMatch"> + </target> + + <target name="testPre154"> <junit printsummary="yes" fork="no" haltonfailure="yes"> <classpath refid="path150" /> <formatter type="plain" /> - <test fork="yes" todir="target/unit-reports" name="org.slf4j.VersionTest" /> + <test fork="yes" todir="target/unit-reports" name="org.slf4j.Pre154VersionMismatchTest" /> </junit> - </target> - + <target name="testMatch"> + <junit printsummary="yes" fork="no" haltonfailure="yes"> + <classpath refid="pathCurrent" /> + <formatter type="plain" /> + <test fork="yes" todir="target/unit-reports" name="org.slf4j.VersionMatchTest" /> + </junit> + </target> </project> \ No newline at end of file Added: slf4j/trunk/integration/src/test/java/org/slf4j/Pre154VersionMismatchTest.java ============================================================================== --- (empty file) +++ slf4j/trunk/integration/src/test/java/org/slf4j/Pre154VersionMismatchTest.java Fri Oct 3 19:56:46 2008 @@ -0,0 +1,43 @@ +package org.slf4j; + +import java.io.PrintStream; +import java.util.Random; + +import junit.framework.TestCase; + +public class Pre154VersionMismatchTest extends TestCase { + + + StringPrintStream sps = new StringPrintStream(System.err); + PrintStream old = System.err; + int diff = 1024 + new Random().nextInt(10000); + + public Pre154VersionMismatchTest(String name) { + super(name); + } + + protected void setUp() throws Exception { + super.setUp(); + System.setErr(sps); + } + + protected void tearDown() throws Exception { + super.tearDown(); + System.setErr(old); + } + + + public void test() throws Exception { + Logger logger = LoggerFactory.getLogger(this.getClass()); + String msg = "hello world "+diff; + logger.info(msg); + String s0 = (String) sps.stringList.get(0); + assertTrue(s0.startsWith("SLF4J: The version of your slf4j-binding is probably older than 1.5.4")); + + String s1 = (String) sps.stringList.get(1); + assertTrue(s1.contains(LoggerFactory.VERSION_MISMATCH)); + + String s2 = (String) sps.stringList.get(2); + assertTrue(s2.contains(msg)); + } +} Added: slf4j/trunk/integration/src/test/java/org/slf4j/StringPrintStream.java ============================================================================== --- (empty file) +++ slf4j/trunk/integration/src/test/java/org/slf4j/StringPrintStream.java Fri Oct 3 19:56:46 2008 @@ -0,0 +1,34 @@ +package org.slf4j; + +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.List; + +public class StringPrintStream extends PrintStream { + + public static final String LINE_SEP = System.getProperty("line.separator"); + PrintStream other; + List stringList = new ArrayList(); + + public StringPrintStream(PrintStream ps) { + super(ps); + other = ps; + } + + public void print(String s) { + other.print(s); + stringList.add(s); + } + + public void println(String s) { + other.println(s); + stringList.add(s); + + } + + public void println(Object o) { + other.println(o); + stringList.add(o); + } +} + Added: slf4j/trunk/integration/src/test/java/org/slf4j/VersionMatchTest.java ============================================================================== --- (empty file) +++ slf4j/trunk/integration/src/test/java/org/slf4j/VersionMatchTest.java Fri Oct 3 19:56:46 2008 @@ -0,0 +1,38 @@ +package org.slf4j; + +import java.io.PrintStream; +import java.util.Random; + +import junit.framework.TestCase; + +public class VersionMatchTest extends TestCase { + + + StringPrintStream sps = new StringPrintStream(System.err); + PrintStream old = System.err; + int diff = 1024 + new Random().nextInt(10000); + + public VersionMatchTest(String name) { + super(name); + } + + protected void setUp() throws Exception { + super.setUp(); + System.setErr(sps); + } + + protected void tearDown() throws Exception { + super.tearDown(); + System.setErr(old); + } + + + public void test() throws Exception { + Logger logger = LoggerFactory.getLogger(this.getClass()); + String msg = "hello world "+diff; + logger.info(msg); + assertEquals(1, sps.stringList.size()); + String s0 = (String) sps.stringList.get(0); + assertTrue(s0.contains(msg)); + } +} Modified: slf4j/trunk/slf4j-site/src/site/pages/news.html ============================================================================== --- slf4j/trunk/slf4j-site/src/site/pages/news.html (original) +++ slf4j/trunk/slf4j-site/src/site/pages/news.html Fri Oct 3 19:56:46 2008 @@ -37,6 +37,11 @@ href="http://bugzilla.slf4j.org/show_bug.cgi?id=102">packaging problems</a> related to <em>slf4j-ext</em> module. </p> + + <p>At initialization time, LoggerFactory will check that the version + of the slf4j-binding matches that of slf4j-api. If there is a + mismatch a warning will be issued on the console. This should help + our users identify SLF4J related problems more quickly.</p> <p>We now say that markers contain <em>references</em> to other markers. We no longer talk about child markers. The javadocs of the @@ -47,6 +52,7 @@ </p> + <hr noshade="noshade" size="1"/> <h3>September 12th, 2008 - Release of SLF4J 1.5.3</h3> _______________________________________________ dev mailing list dev@slf4j.org http://www.slf4j.org/mailman/listinfo/dev