diff --git a/logback-classic-blackbox/src/test/blackboxInput/joran/conditional/includeWithVariableAndConditional.xml b/logback-classic-blackbox/src/test/blackboxInput/joran/conditional/includeWithVariableAndConditional.xml new file mode 100644 index 0000000000..22d43a0ba9 --- /dev/null +++ b/logback-classic-blackbox/src/test/blackboxInput/joran/conditional/includeWithVariableAndConditional.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + diff --git a/logback-classic-blackbox/src/test/java/ch/qos/logback/classic/blackbox/joran/conditional/ConditionalTest.java b/logback-classic-blackbox/src/test/java/ch/qos/logback/classic/blackbox/joran/conditional/ConditionalTest.java index 74dbbb8812..8c2cb7b382 100644 --- a/logback-classic-blackbox/src/test/java/ch/qos/logback/classic/blackbox/joran/conditional/ConditionalTest.java +++ b/logback-classic-blackbox/src/test/java/ch/qos/logback/classic/blackbox/joran/conditional/ConditionalTest.java @@ -30,6 +30,7 @@ import ch.qos.logback.core.testUtil.CoreTestConstants; import ch.qos.logback.core.testUtil.RandomUtil; import ch.qos.logback.core.util.StatusPrinter; +import ch.qos.logback.core.util.StatusPrinter2; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -51,6 +52,7 @@ public class ConditionalTest { Logger root = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME); Logger logger = loggerContext.getLogger(this.getClass().getName()); + StatusPrinter2 statusPrinter2 = new StatusPrinter2(); StatusUtil checker = new StatusUtil(loggerContext); int diff = RandomUtil.getPositiveInt(); @@ -132,7 +134,7 @@ public void conditionalInclusionWithExistingFile() throws JoranException, IOExce String configFileAsStr = BlackboxClassicTestConstants.JORAN_INPUT_PREFIX + "conditional/conditionalIncludeExistingFile.xml"; configure(configFileAsStr); - StatusPrinter.print(loggerContext); + //statusPrinter2.print(loggerContext); ConsoleAppender consoleAppender = (ConsoleAppender) root.getAppender("CON"); assertNotNull(consoleAppender); @@ -152,6 +154,22 @@ public void conditionalInclusionWithInexistentFile() throws JoranException, IOEx assertTrue(checker.isErrorFree(0)); } + // https://jira.qos.ch/browse/LOGBACK-1732 + @Test + public void conditionalInclusionWithVariableDefinition() throws JoranException, IOException, InterruptedException { + + String configFileAsStr = BlackboxClassicTestConstants.JORAN_INPUT_PREFIX + + "conditional/includeWithVariableAndConditional.xml"; + configure(configFileAsStr); + + statusPrinter2.print(loggerContext); + + ConsoleAppender consoleAppender = (ConsoleAppender) root.getAppender("CON"); + assertNotNull(consoleAppender); + assertTrue(checker.isErrorFree(0)); + } + + private AppenderTracker getAppenderTracker() { SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT"); return ha.getAppenderTracker(); @@ -161,7 +179,7 @@ private AppenderTracker getAppenderTracker() { @Test public void nestedWithinIfThen() throws JoranException { configure(BlackboxClassicTestConstants.JORAN_INPUT_PREFIX + "conditional/siftNestedWithinIfThen.xml"); - StatusPrinter.print(loggerContext); + //statusPrinter2.print(loggerContext); String msg = "nestedWithinIfThen"; logger.debug(msg); Appender appender = getAppenderTracker().find("ifThenDefault"); @@ -172,4 +190,6 @@ public void nestedWithinIfThen() throws JoranException { assertEquals(msg, eventList.get(0).getMessage()); checker.isWarningOrErrorFree(0); } + + } diff --git a/logback-classic/src/test/input/joran/include/includeWithVariableAndConditional.xml b/logback-classic/src/test/input/joran/include/includeWithVariableAndConditional.xml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java index eb51efecb8..44c1b45f5b 100644 --- a/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java +++ b/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java @@ -27,6 +27,7 @@ import ch.qos.logback.classic.turbo.DebugUsersTurboFilter; import ch.qos.logback.classic.turbo.NOPTurboFilter; import ch.qos.logback.classic.turbo.TurboFilter; +import ch.qos.logback.classic.util.LogbackMDCAdapter; import ch.qos.logback.core.ConsoleAppender; import ch.qos.logback.core.CoreConstants; import ch.qos.logback.core.encoder.LayoutWrappingEncoder; @@ -51,6 +52,7 @@ import org.junit.jupiter.api.Test; import org.slf4j.MDC; import org.slf4j.event.KeyValuePair; +import org.slf4j.spi.MDCAdapter; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -72,6 +74,7 @@ public class JoranConfiguratorTest { LoggerContext loggerContext = new LoggerContext(); + MDCAdapter mdcAdapter = new LogbackMDCAdapter(); Logger logger = loggerContext.getLogger(this.getClass().getName()); Logger root = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME); StatusPrinter2 statusPrinter2 = new StatusPrinter2(); @@ -79,6 +82,7 @@ public class JoranConfiguratorTest { int diff = RandomUtil.getPositiveInt(); void configure(String file) throws JoranException { + loggerContext.setMDCAdapter(mdcAdapter); JoranConfigurator jc = new JoranConfigurator(); jc.setContext(loggerContext); loggerContext.putProperty("diff", "" + diff); @@ -673,15 +677,15 @@ public void kvp() throws JoranException { } + // See LOGBACK-1746 @Test public void inclusionWithVariables() throws JoranException { configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "include/topLevel0.xml"); - Logger root = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME); - statusPrinter2.print(loggerContext); + //statusPrinter2.print(loggerContext); assertEquals(Level.ERROR, root.getLevel()); } - + // https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46697 @Test public void ossFuzz_46697() throws JoranException {