package com.vtence.molecule.support; import org.hamcrest.Matcher; import java.util.ArrayList; import java.util.List; import java.util.logging.Handler; import java.util.logging.LogRecord; import java.util.logging.Logger; import static java.util.stream.Collectors.toList; import static org.junit.Assert.assertThat; public class LoggingSupport { public static Logger anonymousLogger(Handler handler) { Logger logger = Logger.getAnonymousLogger(); logger.setUseParentHandlers(false); logger.addHandler(handler); return logger; } public static class LogRecordingHandler extends Handler { private final List<LogRecord> records = new ArrayList<>(); @Override public void publish(LogRecord record) { records.add(record); } @Override public void flush() { } @Override public void close() throws SecurityException { } public List<String> messages() { return records.stream().map(LogRecord::getMessage).collect(toList()); } public void assertEntries(Matcher<? super List<String>> matching) { assertThat("log messages", messages(), matching); } } }