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

Reply via email to