Skip to content

Commit 639dccf

Browse files
authored
feature: Add OFF log level to StandardEnvironment (#3904)
1 parent 6eb4f1f commit 639dccf

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

src/main/java/spoon/support/Level.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
* Enum for representing logging levels.
1212
*/
1313
public enum Level {
14-
ERROR(100), WARN(200), INFO(300), DEBUG(400), TRACE(500);
14+
OFF(0), ERROR(100), WARN(200), INFO(300), DEBUG(400), TRACE(500);
1515

1616
private final int levelValue;
1717

src/main/java/spoon/support/StandardEnvironment.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ public void report(Processor<?> processor, Level level, String message) {
274274
}
275275

276276
private void print(String message, Level messageLevel) {
277-
if (messageLevel.toInt() <= this.level.toInt()) {
277+
if (this.level != Level.OFF && messageLevel.toInt() <= this.level.toInt()) {
278278
switch (messageLevel) {
279279
case ERROR: logger.error(message);
280280
break;

src/test/java/spoon/test/logging/LogTest.java

+24-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.junit.runners.Parameterized;
2323
import spoon.Launcher;
2424
import spoon.MavenLauncher;
25+
import spoon.support.JavaOutputProcessor;
2526
import spoon.support.Level;
2627
import uk.org.lidalia.slf4jtest.TestLogger;
2728
import uk.org.lidalia.slf4jtest.TestLoggerFactory;
@@ -43,7 +44,8 @@ public static Collection<Object[]> data() {
4344
{Level.DEBUG, 6 },
4445
{Level.INFO, 2 },
4546
{Level.WARN, 0 },
46-
{Level.ERROR, 0 }
47+
{Level.ERROR, 0 },
48+
{Level.OFF, 0}
4749
});
4850
}
4951

@@ -87,5 +89,26 @@ public void testMavenLauncherLogs() {
8789
mavenLauncher = new MavenLauncher("./pom.xml", MavenLauncher.SOURCE_TYPE.APP_SOURCE, new String[]{"./"});
8890
assertEquals("Running in FULLCLASSPATH mode. Classpath is manually set (doc: http://spoon.gforge.inria.fr/launcher.html).",logger.getLoggingEvents().get(0).getMessage());
8991
}
92+
93+
@Test
94+
public void testLoggingOff() {
95+
// contract: When logging is off, no message should me logged independent of logging level.
96+
final TestLogger logger = TestLoggerFactory.getTestLogger(Launcher.class);
97+
final Launcher launcher = new Launcher();
98+
logger.clear();
99+
launcher.setArgs(new String[] {
100+
"-i", "./src/test/java/spoon/test/logging",
101+
"--level", Level.OFF.toString()
102+
});
103+
104+
// test messages with all logging levels
105+
for (Level level : Level.values()) {
106+
launcher.getEnvironment().report(new JavaOutputProcessor(), level,
107+
"This is a message with level " + level.toString());
108+
}
109+
assertEquals(0, logger.getLoggingEvents().size());
110+
}
90111
}
112+
113+
91114
}

0 commit comments

Comments
 (0)