Change internally created StringBuffer and StringBuilder StringAppenderWrapper implementations used by the StringAppender from Singletons to Prototypes.

Fixes bug in StringAppender that maintained stale Log messages in the buffers of the wrappers between tests.

Resolves gh-73.
This commit is contained in:
John Blum
2020-02-14 17:46:14 -08:00
parent 562dc6c6ed
commit ab03a7c3c1
2 changed files with 46 additions and 19 deletions

View File

@@ -74,7 +74,8 @@ public class StringAppenderUnitTests {
assertThat(stringAppender.isStarted()).isFalse();
assertThat(stringAppender.getContext()).isEqualTo(LoggerFactory.getILoggerFactory());
assertThat(stringAppender.getName()).isEqualTo(StringAppender.DEFAULT_NAME);
assertThat(stringAppender.getStringAppenderWrapper()).isSameAs(StringAppender.stringBuilderAppenderWrapper);
assertThat(stringAppender.getStringAppenderWrapper())
.isInstanceOf(StringAppender.StringBuilderAppenderWrapper.class);
}
@Test
@@ -116,7 +117,8 @@ public class StringAppenderUnitTests {
assertThat(stringAppender.isStarted()).isTrue();
assertThat(stringAppender.getContext()).isEqualTo(mockContext);
assertThat(stringAppender.getName()).isEqualTo("TestStringAppender");
assertThat(stringAppender.getStringAppenderWrapper()).isEqualTo(StringAppender.stringBufferAppenderWrapper);
assertThat(stringAppender.getStringAppenderWrapper())
.isInstanceOf(StringAppender.StringBufferAppenderWrapper.class);
assertThat(rootLogger.getAppender("TestStringAppender")).isEqualTo(stringAppender);
verify(delegate, times(1)).setAppender(isA(CompositeAppender.class));