org.junit.platform.launcher.core.DefaultDiscoveryRequest Maven / Gradle / Ivy
/*
* Copyright 2015-2019 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.core;
import static java.util.Collections.unmodifiableList;
import static java.util.stream.Collectors.toList;
import java.util.List;
import org.junit.platform.commons.util.Preconditions;
import org.junit.platform.engine.ConfigurationParameters;
import org.junit.platform.engine.DiscoveryFilter;
import org.junit.platform.engine.DiscoverySelector;
import org.junit.platform.engine.EngineDiscoveryRequest;
import org.junit.platform.launcher.EngineFilter;
import org.junit.platform.launcher.LauncherDiscoveryRequest;
import org.junit.platform.launcher.PostDiscoveryFilter;
/**
* {@code DefaultDiscoveryRequest} is the default implementation of the
* {@link EngineDiscoveryRequest} and {@link LauncherDiscoveryRequest} APIs.
*
* @since 1.0
*/
final class DefaultDiscoveryRequest implements LauncherDiscoveryRequest {
// Selectors provided to the engines to be used for discovering tests
private final List selectors;
// Filters based on engines
private final List engineFilters;
// Discovery filters are handed through to all engines to be applied during discovery.
private final List> discoveryFilters;
// Descriptor filters are applied by the launcher itself after engines have performed discovery.
private final List postDiscoveryFilters;
// Configuration parameters can be used to provide custom configuration to engines, e.g. for extensions
private final LauncherConfigurationParameters configurationParameters;
DefaultDiscoveryRequest(List selectors, List engineFilters,
List> discoveryFilters, List postDiscoveryFilters,
LauncherConfigurationParameters configurationParameters) {
this.selectors = selectors;
this.engineFilters = engineFilters;
this.discoveryFilters = discoveryFilters;
this.postDiscoveryFilters = postDiscoveryFilters;
this.configurationParameters = configurationParameters;
}
@Override
public List getSelectorsByType(Class selectorType) {
Preconditions.notNull(selectorType, "selectorType must not be null");
return this.selectors.stream().filter(selectorType::isInstance).map(selectorType::cast).collect(toList());
}
@Override
public List getEngineFilters() {
return unmodifiableList(this.engineFilters);
}
@Override
public > List getFiltersByType(Class filterType) {
Preconditions.notNull(filterType, "filterType must not be null");
return this.discoveryFilters.stream().filter(filterType::isInstance).map(filterType::cast).collect(toList());
}
@Override
public List getPostDiscoveryFilters() {
return unmodifiableList(this.postDiscoveryFilters);
}
@Override
public ConfigurationParameters getConfigurationParameters() {
return this.configurationParameters;
}
}