Skip to content

Commit

Permalink
Call LauncherSessionListener closed method in reverse order
Browse files Browse the repository at this point in the history
Issue: #3082
  • Loading branch information
marcphilipp committed Jan 10, 2023
1 parent a51b850 commit b91532a
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

package org.junit.platform.launcher.listeners.session;

import static org.junit.platform.commons.util.CollectionUtils.forEachInReverseOrder;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand All @@ -36,6 +38,6 @@ public void launcherSessionOpened(LauncherSession session) {

@Override
public void launcherSessionClosed(LauncherSession session) {
listeners.forEach(delegate -> delegate.launcherSessionClosed(session));
forEachInReverseOrder(listeners, delegate -> delegate.launcherSessionClosed(session));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@

class LauncherSessionTests {

LauncherSessionListener firstSessionListener = mock(LauncherSessionListener.class);
LauncherSessionListener secondSessionListener = mock(LauncherSessionListener.class);
LauncherSessionListener firstSessionListener = mock(LauncherSessionListener.class, "firstSessionListener");
LauncherSessionListener secondSessionListener = mock(LauncherSessionListener.class, "secondSessionListener");
LauncherConfig launcherConfig = createLauncherConfigBuilderWithDisabledServiceLoading() //
.addLauncherSessionListeners(firstSessionListener, secondSessionListener) //
.addTestEngines(new TestEngineStub()) //
Expand All @@ -44,22 +44,22 @@ void callsRegisteredListenersWhenLauncherIsUsedDirectly() {
var launcherSession = ArgumentCaptor.forClass(LauncherSession.class);
inOrder.verify(firstSessionListener).launcherSessionOpened(launcherSession.capture());
inOrder.verify(secondSessionListener).launcherSessionOpened(launcherSession.getValue());
inOrder.verify(firstSessionListener).launcherSessionClosed(launcherSession.getValue());
inOrder.verify(secondSessionListener).launcherSessionClosed(launcherSession.getValue());
inOrder.verify(firstSessionListener).launcherSessionClosed(launcherSession.getValue());

launcher.execute(testPlan);

inOrder.verify(firstSessionListener).launcherSessionOpened(launcherSession.capture());
inOrder.verify(secondSessionListener).launcherSessionOpened(launcherSession.getValue());
inOrder.verify(firstSessionListener).launcherSessionClosed(launcherSession.getValue());
inOrder.verify(secondSessionListener).launcherSessionClosed(launcherSession.getValue());
inOrder.verify(firstSessionListener).launcherSessionClosed(launcherSession.getValue());

launcher.execute(request);

inOrder.verify(firstSessionListener).launcherSessionOpened(launcherSession.capture());
inOrder.verify(secondSessionListener).launcherSessionOpened(launcherSession.getValue());
inOrder.verify(firstSessionListener).launcherSessionClosed(launcherSession.getValue());
inOrder.verify(secondSessionListener).launcherSessionClosed(launcherSession.getValue());
inOrder.verify(firstSessionListener).launcherSessionClosed(launcherSession.getValue());
}

@Test
Expand Down Expand Up @@ -87,8 +87,8 @@ void callsRegisteredListenersWhenLauncherIsUsedViaSession() {

session.close();

inOrder.verify(firstSessionListener).launcherSessionClosed(session);
inOrder.verify(secondSessionListener).launcherSessionClosed(session);
inOrder.verify(firstSessionListener).launcherSessionClosed(session);
verifyNoMoreInteractions(firstSessionListener, secondSessionListener);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* Copyright 2015-2023 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v2.0 which
* accompanies this distribution and is available at
*
* https://www.eclipse.org/legal/epl-v20.html
*/

package org.junit.platform.launcher.listeners.session;

import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;

import java.util.List;

import org.junit.jupiter.api.Test;
import org.junit.platform.launcher.LauncherSession;
import org.junit.platform.launcher.LauncherSessionListener;
import org.mockito.InOrder;

public class CompositeLauncherSessionListenerTests {

@Test
void callsListenersInReverseOrderForClosedEvents() {
var firstListener = mock(LauncherSessionListener.class, "firstListener");
var secondListener = mock(LauncherSessionListener.class, "secondListener");

var launcherSession = mock(LauncherSession.class);

var composite = new CompositeLauncherSessionListener(List.of(firstListener, secondListener));
composite.launcherSessionOpened(launcherSession);
composite.launcherSessionClosed(launcherSession);

InOrder inOrder = inOrder(firstListener, secondListener);
inOrder.verify(firstListener).launcherSessionOpened(launcherSession);
inOrder.verify(secondListener).launcherSessionOpened(launcherSession);
inOrder.verify(secondListener).launcherSessionClosed(launcherSession);
inOrder.verify(firstListener).launcherSessionClosed(launcherSession);
}
}

0 comments on commit b91532a

Please sign in to comment.