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