Skip to content

Commit decda84

Browse files
ejsmithclaude
andcommitted
Fix the Logback reset test when another test's context is cached
When MvcIntegrationTest runs first, its cached application context keeps its own appender on the shared root logger, so asserting that no appender named EXCEPTIONLESS remains failed depending on test-class order (CI vs local). Assert only on the appenders this test's context added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent dfbf7b3 commit decda84

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

‎exceptionless-spring-boot-starter/src/test/java/com/exceptionless/spring/boot/ExceptionlessAutoConfigurationTest.java‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,19 +346,23 @@ void addsLogbackAppenderWhileTheContextRuns() {
346346
void addsTheAppenderAgainWhenLogbackIsReset() throws Exception {
347347
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
348348
AtomicReference<LogbackAppenderRegistration> registration = new AtomicReference<>();
349+
List<ExceptionlessAppender> added = new ArrayList<>();
349350
try {
350351
runner.run(
351352
context -> {
352353
ExceptionlessClient client = context.getBean(ExceptionlessClient.class);
353354
registration.set(context.getBean(LogbackAppenderRegistration.class));
354355
ExceptionlessAppender original = registration.get().getAppender();
356+
assertThat(original).isNotNull();
357+
added.add(original);
355358
assertThat(rootAppenders()).contains(original);
356359

357360
// What Logback does when it reloads a changed logback.xml (scan="true").
358361
loggerContext.reset();
359362

360363
ExceptionlessAppender replacement = registration.get().getAppender();
361364
assertThat(replacement).isNotNull().isNotSameAs(original);
365+
added.add(replacement);
362366
assertThat(replacement.isStarted()).isTrue();
363367
assertThat(original.isStarted()).isFalse();
364368
assertThat(rootAppenders()).contains(replacement).doesNotContain(original);
@@ -368,8 +372,8 @@ void addsTheAppenderAgainWhenLogbackIsReset() throws Exception {
368372
.extracting(e -> e.get("message"))
369373
.contains("After reset");
370374
});
371-
assertThat(rootAppenders())
372-
.noneMatch(a -> LogbackAppenderRegistration.APPENDER_NAME.equals(a.getName()));
375+
// Only this context's appenders: a cached context from another test class can have its own.
376+
assertThat(rootAppenders()).doesNotContainAnyElementsOf(added);
373377
assertThat(loggerContext.getCopyOfListenerList()).doesNotContain(registration.get());
374378
} finally {
375379
// Restore the default configuration (logback-test.xml or Logback's defaults).

0 commit comments

Comments
 (0)