1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package ch.qos.logback.core.joran.sanity;
16
17 import ch.qos.logback.core.Context;
18 import ch.qos.logback.core.ContextBase;
19 import ch.qos.logback.core.model.AppenderModel;
20 import ch.qos.logback.core.model.TopModel;
21 import ch.qos.logback.core.status.Status;
22 import ch.qos.logback.core.status.testUtil.StatusChecker;
23 import org.junit.jupiter.api.BeforeEach;
24 import org.junit.jupiter.api.Test;
25
26 import static ch.qos.logback.core.joran.sanity.AppenderWithinAppenderSanityChecker.NESTED_APPENDERS_WARNING;
27
28 public class AppenderWithinAppenderSanityCheckerTest {
29
30
31 Context context = new ContextBase();
32 AppenderWithinAppenderSanityChecker awasc = new AppenderWithinAppenderSanityChecker();
33 StatusChecker statusChecker = new StatusChecker(context);
34
35 @BeforeEach
36 public void setUp() throws Exception {
37 awasc.setContext(context);
38 }
39
40 @Test
41 public void smoke() {
42
43 TopModel topModel = new TopModel();
44 awasc.check(topModel);
45 statusChecker.assertIsWarningOrErrorFree();
46 }
47
48
49 @Test
50 public void singleAppender() {
51 TopModel topModel = new TopModel();
52 AppenderModel appenderModel0 = new AppenderModel();
53 appenderModel0.setLineNumber(1);
54 topModel.addSubModel(appenderModel0);
55 awasc.check(topModel);
56 statusChecker.assertIsWarningOrErrorFree();
57 }
58
59 @Test
60 public void nestedAppender() {
61 TopModel topModel = new TopModel();
62 AppenderModel appenderModel0 = new AppenderModel();
63 appenderModel0.setLineNumber(1);
64 topModel.addSubModel(appenderModel0);
65
66 AppenderModel appenderModel1 = new AppenderModel();
67 appenderModel1.setLineNumber(2);
68 appenderModel0.addSubModel(appenderModel1);
69
70 awasc.check(topModel);
71
72 statusChecker.assertContainsMatch(Status.WARN, NESTED_APPENDERS_WARNING);
73 statusChecker.assertContainsMatch(Status.WARN,"Appender at line 1");
74 }
75
76 }