Skip to content

Commit

Permalink
Move OutputDirProvider to EngineDiscoveryRequest
Browse files Browse the repository at this point in the history
  • Loading branch information
marcphilipp committed Jul 29, 2023
1 parent 6256b39 commit 170bfa6
Show file tree
Hide file tree
Showing 20 changed files with 84 additions and 134 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ public Optional<String> getArtifactId() {

@Override
public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest, UniqueId uniqueId) {
JupiterConfiguration configuration = new CachingJupiterConfiguration(
new DefaultJupiterConfiguration(discoveryRequest.getConfigurationParameters()));
JupiterConfiguration configuration = new CachingJupiterConfiguration(new DefaultJupiterConfiguration(
discoveryRequest.getConfigurationParameters(), discoveryRequest.getOutputDirProvider()));
JupiterEngineDescriptor engineDescriptor = new JupiterEngineDescriptor(uniqueId, configuration);
new DiscoverySelectorResolver().resolveSelectors(discoveryRequest, engineDescriptor);
return engineDescriptor;
Expand All @@ -82,8 +82,8 @@ protected HierarchicalTestExecutorService createExecutorService(ExecutionRequest

@Override
protected JupiterEngineExecutionContext createExecutionContext(ExecutionRequest request) {
return new JupiterEngineExecutionContext(request.getEngineExecutionListener(), getJupiterConfiguration(request),
request.getOutputDirProvider());
return new JupiterEngineExecutionContext(request.getEngineExecutionListener(),
getJupiterConfiguration(request));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.junit.jupiter.api.io.CleanupMode;
import org.junit.jupiter.api.io.TempDirFactory;
import org.junit.jupiter.api.parallel.ExecutionMode;
import org.junit.platform.engine.reporting.OutputDirProvider;

/**
* Caching implementation of the {@link JupiterConfiguration} API.
Expand Down Expand Up @@ -125,4 +126,8 @@ public Supplier<TempDirFactory> getDefaultTempDirFactorySupplier() {
key -> delegate.getDefaultTempDirFactorySupplier());
}

@Override
public OutputDirProvider getOutputDirProvider() {
return delegate.getOutputDirProvider();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import org.junit.platform.commons.util.ClassNamePatternFilterUtils;
import org.junit.platform.commons.util.Preconditions;
import org.junit.platform.engine.ConfigurationParameters;
import org.junit.platform.engine.reporting.OutputDirProvider;

/**
* Default implementation of the {@link JupiterConfiguration} API.
Expand Down Expand Up @@ -63,10 +64,13 @@ public class DefaultJupiterConfiguration implements JupiterConfiguration {
new InstantiatingConfigurationParameterConverter<>(TempDirFactory.class, "temp dir factory");

private final ConfigurationParameters configurationParameters;
private final OutputDirProvider outputDirProvider;

public DefaultJupiterConfiguration(ConfigurationParameters configurationParameters) {
public DefaultJupiterConfiguration(ConfigurationParameters configurationParameters,
OutputDirProvider outputDirProvider) {
this.configurationParameters = Preconditions.notNull(configurationParameters,
"ConfigurationParameters must not be null");
this.outputDirProvider = outputDirProvider;
}

@Override
Expand Down Expand Up @@ -141,4 +145,8 @@ public Supplier<TempDirFactory> getDefaultTempDirFactorySupplier() {
return () -> supplier.get().orElse(TempDirFactory.Standard.INSTANCE);
}

@Override
public OutputDirProvider getOutputDirProvider() {
return outputDirProvider;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.junit.jupiter.api.io.TempDirFactory;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
import org.junit.platform.engine.reporting.OutputDirProvider;

/**
* @since 5.4
Expand Down Expand Up @@ -70,4 +71,5 @@ public interface JupiterConfiguration {

Supplier<TempDirFactory> getDefaultTempDirFactorySupplier();

OutputDirProvider getOutputDirProvider();
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
import org.junit.platform.engine.TestDescriptor;
import org.junit.platform.engine.TestTag;
import org.junit.platform.engine.reporting.FileEntry;
import org.junit.platform.engine.reporting.OutputDirProvider;
import org.junit.platform.engine.reporting.ReportEntry;
import org.junit.platform.engine.support.hierarchical.Node;
import org.junit.platform.engine.support.store.NamespacedHierarchicalStore;
Expand All @@ -57,18 +56,11 @@ abstract class AbstractExtensionContext<T extends TestDescriptor> implements Ext
private final T testDescriptor;
private final Set<String> tags;
private final JupiterConfiguration configuration;
private final OutputDirProvider outputDirProvider;
private final NamespacedHierarchicalStore<Namespace> valuesStore;
private final ExecutableInvoker executableInvoker;

AbstractExtensionContext(ExtensionContext parent, EngineExecutionListener engineExecutionListener, T testDescriptor,
JupiterConfiguration configuration, ExecutableInvoker executableInvoker) {
this(parent, engineExecutionListener, testDescriptor, configuration, null, executableInvoker);
}

AbstractExtensionContext(ExtensionContext parent, EngineExecutionListener engineExecutionListener, T testDescriptor,
JupiterConfiguration configuration, OutputDirProvider outputDirProvider,
ExecutableInvoker executableInvoker) {
this.executableInvoker = executableInvoker;

Preconditions.notNull(testDescriptor, "TestDescriptor must not be null");
Expand All @@ -78,7 +70,6 @@ abstract class AbstractExtensionContext<T extends TestDescriptor> implements Ext
this.engineExecutionListener = engineExecutionListener;
this.testDescriptor = testDescriptor;
this.configuration = configuration;
this.outputDirProvider = outputDirProvider;
this.valuesStore = createStore(parent);

// @formatter:off
Expand Down Expand Up @@ -119,7 +110,7 @@ public void publishReportEntry(Map<String, String> values) {
@Override
public void publishFile(String fileName, ThrowingConsumer<Path> action) {
try {
getOutputDirProvider().createOutputDirectory(this.testDescriptor).ifPresent(dir -> {
configuration.getOutputDirProvider().createOutputDirectory(this.testDescriptor).ifPresent(dir -> {
try {
Path file = dir.resolve(fileName);
action.accept(file);
Expand All @@ -136,17 +127,6 @@ public void publishFile(String fileName, ThrowingConsumer<Path> action) {
}
}

private OutputDirProvider getOutputDirProvider() {
if (outputDirProvider == null) {
return getParent() //
.filter(it -> it instanceof AbstractExtensionContext) //
.map(it -> (AbstractExtensionContext<?>) it) //
.map(AbstractExtensionContext::getOutputDirProvider).orElseThrow(
() -> new JUnitException("Missing OutputDirProvider"));
}
return outputDirProvider;
}

@Override
public Optional<ExtensionContext> getParent() {
return Optional.ofNullable(this.parent);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public JupiterEngineExecutionContext prepare(JupiterEngineExecutionContext conte
EngineExecutionListener executionListener = context.getExecutionListener();
ExecutableInvoker executableInvoker = new DefaultExecutableInvoker(context);
ExtensionContext extensionContext = new JupiterEngineExtensionContext(executionListener, this,
context.getConfiguration(), context.getOutputDirProvider(), executableInvoker);
context.getConfiguration(), executableInvoker);

// @formatter:off
return context.extend()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import org.junit.jupiter.api.extension.TestInstances;
import org.junit.jupiter.engine.config.JupiterConfiguration;
import org.junit.platform.engine.EngineExecutionListener;
import org.junit.platform.engine.reporting.OutputDirProvider;
import org.junit.platform.engine.support.hierarchical.Node;

/**
Expand All @@ -29,9 +28,9 @@ final class JupiterEngineExtensionContext extends AbstractExtensionContext<Jupit

JupiterEngineExtensionContext(EngineExecutionListener engineExecutionListener,
JupiterEngineDescriptor testDescriptor, JupiterConfiguration configuration,
OutputDirProvider outputDirProvider, ExecutableInvoker executableInvoker) {
ExecutableInvoker executableInvoker) {

super(null, engineExecutionListener, testDescriptor, configuration, outputDirProvider, executableInvoker);
super(null, engineExecutionListener, testDescriptor, configuration, executableInvoker);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import org.junit.platform.commons.logging.Logger;
import org.junit.platform.commons.logging.LoggerFactory;
import org.junit.platform.engine.EngineExecutionListener;
import org.junit.platform.engine.reporting.OutputDirProvider;
import org.junit.platform.engine.support.hierarchical.EngineExecutionContext;
import org.junit.platform.engine.support.hierarchical.ThrowableCollector;

Expand All @@ -38,9 +37,9 @@ public class JupiterEngineExecutionContext implements EngineExecutionContext {
private boolean beforeAllCallbacksExecuted = false;
private boolean beforeAllMethodsExecuted = false;

public JupiterEngineExecutionContext(EngineExecutionListener executionListener, JupiterConfiguration configuration,
OutputDirProvider outputDirProvider) {
this(new State(executionListener, configuration, outputDirProvider));
public JupiterEngineExecutionContext(EngineExecutionListener executionListener,
JupiterConfiguration configuration) {
this(new State(executionListener, configuration));
}

private JupiterEngineExecutionContext(State state) {
Expand Down Expand Up @@ -84,10 +83,6 @@ public ThrowableCollector getThrowableCollector() {
return this.state.throwableCollector;
}

public OutputDirProvider getOutputDirProvider() {
return this.state.outputDirProvider;
}

/**
* Track that an attempt was made to execute {@code BeforeAllCallback} extensions.
*
Expand Down Expand Up @@ -129,17 +124,14 @@ private static final class State implements Cloneable {

final EngineExecutionListener executionListener;
final JupiterConfiguration configuration;
final OutputDirProvider outputDirProvider;
TestInstancesProvider testInstancesProvider;
MutableExtensionRegistry extensionRegistry;
ExtensionContext extensionContext;
ThrowableCollector throwableCollector;

State(EngineExecutionListener executionListener, JupiterConfiguration configuration,
OutputDirProvider outputDirProvider) {
State(EngineExecutionListener executionListener, JupiterConfiguration configuration) {
this.executionListener = executionListener;
this.configuration = configuration;
this.outputDirProvider = outputDirProvider;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.junit.jupiter.engine.descriptor.CustomDisplayNameGenerator;
import org.junit.platform.commons.PreconditionViolationException;
import org.junit.platform.engine.ConfigurationParameters;
import org.junit.platform.engine.reporting.OutputDirProvider;

class DefaultJupiterConfigurationTests {

Expand All @@ -44,20 +45,20 @@ class DefaultJupiterConfigurationTests {
@Test
void getDefaultTestInstanceLifecyclePreconditions() {
PreconditionViolationException exception = assertThrows(PreconditionViolationException.class,
() -> new DefaultJupiterConfiguration(null));
() -> new DefaultJupiterConfiguration(null, OutputDirProvider.NOOP));
assertThat(exception).hasMessage("ConfigurationParameters must not be null");
}

@Test
void getDefaultTestInstanceLifecycleWithNoConfigParamSet() {
JupiterConfiguration configuration = new DefaultJupiterConfiguration(mock());
JupiterConfiguration configuration = new DefaultJupiterConfiguration(mock(), OutputDirProvider.NOOP);
Lifecycle lifecycle = configuration.getDefaultTestInstanceLifecycle();
assertThat(lifecycle).isEqualTo(PER_METHOD);
}

@Test
void getDefaultTempDirCleanupModeWithNoConfigParamSet() {
JupiterConfiguration configuration = new DefaultJupiterConfiguration(mock());
JupiterConfiguration configuration = new DefaultJupiterConfiguration(mock(), OutputDirProvider.NOOP);
CleanupMode cleanupMode = configuration.getDefaultTempDirCleanupMode();
assertThat(cleanupMode).isEqualTo(ALWAYS);
}
Expand All @@ -82,7 +83,7 @@ void shouldGetDefaultDisplayNameGeneratorWithConfigParamSet() {
ConfigurationParameters parameters = mock();
String key = Constants.DEFAULT_DISPLAY_NAME_GENERATOR_PROPERTY_NAME;
when(parameters.get(key)).thenReturn(Optional.of(CustomDisplayNameGenerator.class.getName()));
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters);
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters, OutputDirProvider.NOOP);

DisplayNameGenerator defaultDisplayNameGenerator = configuration.getDefaultDisplayNameGenerator();

Expand All @@ -94,7 +95,7 @@ void shouldGetStandardAsDefaultDisplayNameGeneratorWithoutConfigParamSet() {
ConfigurationParameters parameters = mock();
String key = Constants.DEFAULT_DISPLAY_NAME_GENERATOR_PROPERTY_NAME;
when(parameters.get(key)).thenReturn(Optional.empty());
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters);
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters, OutputDirProvider.NOOP);

DisplayNameGenerator defaultDisplayNameGenerator = configuration.getDefaultDisplayNameGenerator();

Expand All @@ -106,7 +107,7 @@ void shouldGetNothingAsDefaultTestMethodOrderWithoutConfigParamSet() {
ConfigurationParameters parameters = mock();
String key = Constants.DEFAULT_TEST_METHOD_ORDER_PROPERTY_NAME;
when(parameters.get(key)).thenReturn(Optional.empty());
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters);
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters, OutputDirProvider.NOOP);

final Optional<MethodOrderer> defaultTestMethodOrder = configuration.getDefaultTestMethodOrderer();

Expand All @@ -118,7 +119,7 @@ void shouldGetDefaultTempDirFactorySupplierWithConfigParamSet() {
ConfigurationParameters parameters = mock();
String key = Constants.DEFAULT_TEMP_DIR_FACTORY_PROPERTY_NAME;
when(parameters.get(key)).thenReturn(Optional.of(CustomFactory.class.getName()));
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters);
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters, OutputDirProvider.NOOP);

Supplier<TempDirFactory> supplier = configuration.getDefaultTempDirFactorySupplier();

Expand All @@ -138,7 +139,7 @@ void shouldGetStandardAsDefaultTempDirFactorySupplierWithoutConfigParamSet() {
ConfigurationParameters parameters = mock();
String key = Constants.DEFAULT_TEMP_DIR_FACTORY_PROPERTY_NAME;
when(parameters.get(key)).thenReturn(Optional.empty());
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters);
JupiterConfiguration configuration = new DefaultJupiterConfiguration(parameters, OutputDirProvider.NOOP);

Supplier<TempDirFactory> supplier = configuration.getDefaultTempDirFactorySupplier();

Expand All @@ -148,7 +149,8 @@ void shouldGetStandardAsDefaultTempDirFactorySupplierWithoutConfigParamSet() {
private void assertDefaultConfigParam(String configValue, Lifecycle expected) {
ConfigurationParameters configParams = mock();
when(configParams.get(KEY)).thenReturn(Optional.ofNullable(configValue));
Lifecycle lifecycle = new DefaultJupiterConfiguration(configParams).getDefaultTestInstanceLifecycle();
Lifecycle lifecycle = new DefaultJupiterConfiguration(configParams,
OutputDirProvider.NOOP).getDefaultTestInstanceLifecycle();
assertThat(lifecycle).isEqualTo(expected);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ void fromJupiterEngineDescriptor() {
UniqueId.root("engine", "junit-jupiter"), configuration);

JupiterEngineExtensionContext engineContext = new JupiterEngineExtensionContext(null, engineTestDescriptor,
configuration, OutputDirProvider.NOOP, null);
configuration, null);

// @formatter:off
assertAll("engineContext",
Expand Down Expand Up @@ -162,7 +162,7 @@ void fromMethodTestDescriptor() {
Method testMethod = methodTestDescriptor.getTestMethod();

JupiterEngineExtensionContext engineExtensionContext = new JupiterEngineExtensionContext(null, engineDescriptor,
configuration, OutputDirProvider.NOOP, null);
configuration, null);
ClassExtensionContext classExtensionContext = new ClassExtensionContext(engineExtensionContext, null,
classTestDescriptor, configuration, null, null);
MethodExtensionContext methodExtensionContext = new MethodExtensionContext(classExtensionContext, null,
Expand Down Expand Up @@ -259,7 +259,7 @@ void usingStore() {

@TestFactory
Stream<DynamicTest> configurationParameter() throws Exception {
JupiterConfiguration echo = new DefaultJupiterConfiguration(new EchoParameters());
JupiterConfiguration echo = new DefaultJupiterConfiguration(new EchoParameters(), OutputDirProvider.NOOP);
String key = "123";
Optional<String> expected = Optional.of(key);

Expand All @@ -275,8 +275,7 @@ Stream<DynamicTest> configurationParameter() throws Exception {
configuration);

return Stream.of( //
(ExtensionContext) new JupiterEngineExtensionContext(null, engineDescriptor, echo, OutputDirProvider.NOOP,
null), //
(ExtensionContext) new JupiterEngineExtensionContext(null, engineDescriptor, echo, null), //
new ClassExtensionContext(null, null, classTestDescriptor, echo, null, null), //
new MethodExtensionContext(null, null, methodTestDescriptor, echo, null, null) //
).map(context -> dynamicTest(context.getClass().getSimpleName(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
import org.junit.jupiter.engine.execution.JupiterEngineExecutionContext;
import org.junit.platform.engine.TestSource;
import org.junit.platform.engine.UniqueId;
import org.junit.platform.engine.reporting.OutputDirProvider;
import org.junit.platform.engine.support.descriptor.ClasspathResourceSource;
import org.junit.platform.engine.support.descriptor.DirectorySource;
import org.junit.platform.engine.support.descriptor.FilePosition;
Expand Down Expand Up @@ -139,7 +138,7 @@ void before() throws Exception {
extensionContext = mock();
isClosed = false;

context = new JupiterEngineExecutionContext(null, null, OutputDirProvider.NOOP) //
context = new JupiterEngineExecutionContext(null, null) //
.extend() //
.withThrowableCollector(new OpenTest4JAwareThrowableCollector()) //
.withExtensionContext(extensionContext) //
Expand Down
Loading

0 comments on commit 170bfa6

Please sign in to comment.