You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ce...@apache.org on 2004/03/31 16:04:08 UTC

cvs commit: logging-log4j/tests/src/java/org/apache/joran JoranParserTest.java

ceki        2004/03/31 06:04:08

  Modified:    tests/input/joran parser2.xml
               src/java/org/apache/log4j/joran/action
                        AppenderRefAction.java
               tests/src/java/org/apache/joran JoranParserTest.java
  Log:
  
  Improvements to unit tests
  
  Revision  Changes    Path
  1.2       +1 -1      logging-log4j/tests/input/joran/parser2.xml
  
  Index: parser2.xml
  ===================================================================
  RCS file: /home/cvs/logging-log4j/tests/input/joran/parser2.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- parser2.xml	2 Sep 2003 18:47:48 -0000	1.1
  +++ parser2.xml	31 Mar 2004 14:04:08 -0000	1.2
  @@ -20,7 +20,7 @@
     </logger>
     
      <logger name="asd">
  -    <level value ="debug" />
  +    <level value ="info" />
       <appender-ref ref="A1" />
     </logger>
       
  
  
  
  1.6       +8 -5      logging-log4j/src/java/org/apache/log4j/joran/action/AppenderRefAction.java
  
  Index: AppenderRefAction.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/joran/action/AppenderRefAction.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AppenderRefAction.java	31 Mar 2004 13:13:15 -0000	1.5
  +++ AppenderRefAction.java	31 Mar 2004 14:04:08 -0000	1.6
  @@ -25,6 +25,7 @@
   import org.apache.log4j.spi.AppenderAttachable;
   
   import org.xml.sax.Attributes;
  +
   import java.util.HashMap;
   
   
  @@ -32,7 +33,7 @@
     static final Logger logger = Logger.getLogger(AppenderRefAction.class);
   
     public void begin(
  -    ExecutionContext ec, String localName, Attributes attributes) {
  +    ExecutionContext ec, String tagName, Attributes attributes) {
       // Let us forget about previous errors (in this object)
       inError = false;
   
  @@ -41,11 +42,13 @@
       Object o = ec.peekObject();
   
       if (!(o instanceof AppenderAttachable)) {
  -      logger.warn(
  -        "Could not find an AppenderAttachable object at the top of execution stack.");
  +      String errMsg =
  +        "Could not find an AppenderAttachable at the top of execution stack. Near <"
  +        + tagName + "> line " + getLineNumber(ec);
  +
  +      logger.warn(errMsg);
         inError = true;
  -      ec.addError(
  -        "For element <appender-ref>, could not find a  AppenderAttachable object at the top of execution stack.");
  +      ec.addError(errMsg);
   
         return;
       }
  
  
  
  1.10      +49 -3     logging-log4j/tests/src/java/org/apache/joran/JoranParserTest.java
  
  Index: JoranParserTest.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/tests/src/java/org/apache/joran/JoranParserTest.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- JoranParserTest.java	30 Mar 2004 17:13:22 -0000	1.9
  +++ JoranParserTest.java	31 Mar 2004 14:04:08 -0000	1.10
  @@ -33,6 +33,7 @@
   
   import org.apache.log4j.Appender;
   import org.apache.log4j.ConsoleAppender;
  +import org.apache.log4j.FileAppender;
   import org.apache.log4j.Level;
   import org.apache.log4j.LogManager;
   import org.apache.log4j.Logger;
  @@ -93,6 +94,13 @@
       SAXParserFactory spf = SAXParserFactory.newInstance();
       return spf.newSAXParser();
     }
  +  
  +  /** 
  +   * Tests the basic looping contruct in JoranParser.
  +   * 
  +   * The parser is set up to push 2 string objects for each element encountered.
  +   * The results are compared with a witness stack.
  +   */
     public void testBasicLoop() throws Exception {
       
       RuleStore rs = new SimpleRuleStore();
  @@ -122,7 +130,7 @@
      * This test verifies that <logger>, <root> and embedded <level> elements
      * are handled correctly.  
      */
  -  public void testLoop() throws Exception {
  +  public void testParsing1() throws Exception {
       logger.debug("Starting testLoop");
   
       RuleStore rs = new SimpleRuleStore();
  @@ -160,7 +168,15 @@
       }
     }
   
  -  public void xtestLoop2() throws Exception {
  +  /**
  +   * This tests verifies the handling of logger, logger/level, root, root/level
  +   * logger/appender-ref, root/appender-ref, appender, appender/layout,
  +   * and param actions.
  +   * 
  +   * These cover a fairly significant part of log4j configuration directives.
  +   * 
  +   * */
  +  public void testParsing2() throws Exception {
       logger.debug("Starting testLoop2");
       RuleStore rs = new SimpleRuleStore();
       rs.addRule(new Pattern("log4j:configuration/logger"), new LoggerAction());
  @@ -189,6 +205,36 @@
       ec.pushObject(LogManager.getLoggerRepository());
       SAXParser saxParser = createParser();
       saxParser.parse("file:input/joran/parser2.xml", jp);
  +
  +    // the following assertions depend on the contensts of parser2.xml
  +    Logger rootLogger = LogManager.getLoggerRepository().getRootLogger();
  +    assertSame(Level.DEBUG, rootLogger.getLevel());
  + 
  +    Logger asdLogger = LogManager.getLoggerRepository().getLogger("asd");
  +    assertSame(Level.INFO, asdLogger.getLevel());
  +    
  +    FileAppender a1Back = (FileAppender) asdLogger.getAppender("A1");  
  +    assertFalse("a1.append should be false", a1Back.getAppend());
  +    assertEquals("output/temp.A1", a1Back.getFile());
  +    PatternLayout plBack = (PatternLayout) a1Back.getLayout();
  +    assertEquals("%-5p %c{2} - %m%n", plBack.getConversionPattern());
  +    
  +    a1Back = (FileAppender) rootLogger.getAppender("A1");  
  +    
  +    assertEquals(3, ec.getErrorList().size());
  +    String e0 = (String) ec.getErrorList().get(0);
  +    if(!e0.startsWith("No 'name' attribute in element")) {
  +      fail("Expected error string [No 'name' attribute in element]");
  +    }
  +    String e1 = (String) ec.getErrorList().get(1);
  +    if(!e1.startsWith("For element <level>")) {
  +      fail("Expected error string [For element <level>]");
  +    }
  +    String e2 = (String) ec.getErrorList().get(2);
  +    if(!e2.startsWith("Could not find an AppenderAttachable at the top of execution stack. Near")) {
  +      fail("Expected error string [Could not find an AppenderAttachable at the top of execution stack. Near]");
  +    }
  +    
     }
   
     public void xtestLoop3() throws Exception {
  @@ -285,7 +331,7 @@
     public static Test suite() {
       TestSuite suite = new TestSuite();
       //suite.addTest(new JoranParserTest("testBasicLoop"));
  -    suite.addTest(new JoranParserTest("testLoop"));
  +    suite.addTest(new JoranParserTest("testParsing2"));
       return suite;
     }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org