mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
test discovery: pass module through system property if applicable
This commit is contained in:
+4
-4
@@ -35,14 +35,16 @@ import java.util.List;
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public class InternalTestDiscoveryListener implements TestListener, Closeable {
|
||||
private final String myModuleName;
|
||||
private final String myTracesDirectory;
|
||||
private List<String> myCompletedMethodNames = new ArrayList<String>();
|
||||
private String myTracesDirectory;
|
||||
private final Alarm myProcessTracesAlarm;
|
||||
private TestDiscoveryIndex myDiscoveryIndex;
|
||||
|
||||
public InternalTestDiscoveryListener() {
|
||||
myProcessTracesAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, null);
|
||||
myTracesDirectory = System.getProperty("org.jetbrains.instrumentation.trace.dir");
|
||||
myModuleName = System.getProperty("org.jetbrains.instrumentation.main.module");
|
||||
}
|
||||
|
||||
private TestDiscoveryIndex getIndex() {
|
||||
@@ -89,9 +91,7 @@ public class InternalTestDiscoveryListener implements TestListener, Closeable {
|
||||
protected void flushCurrentTraces() {
|
||||
final String[] fullTestNames = ArrayUtil.toStringArray(myCompletedMethodNames);
|
||||
myCompletedMethodNames.clear();
|
||||
myProcessTracesAlarm.addRequest(() -> {
|
||||
TestDiscoveryExtension.processAvailableTraces(fullTestNames, myTracesDirectory, null, getIndex());
|
||||
}, 100);
|
||||
myProcessTracesAlarm.addRequest(() -> TestDiscoveryExtension.processAvailableTraces(fullTestNames, myTracesDirectory, myModuleName, "j", getIndex()), 100);
|
||||
}
|
||||
|
||||
private static String getMethodName(Test test) {
|
||||
|
||||
+13
-7
@@ -35,13 +35,12 @@ import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.testIntegration.TestFramework;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.ContainerUtilRt;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public abstract class TestDiscoveryConfigurationProducer extends JavaRunConfigurationProducerBase<JavaTestConfigurationBase> {
|
||||
protected TestDiscoveryConfigurationProducer(ConfigurationType type) {
|
||||
@@ -90,11 +89,18 @@ public abstract class TestDiscoveryConfigurationProducer extends JavaRunConfigur
|
||||
configuration.getFrameworkPrefix());
|
||||
if (modules.isEmpty()) return true;
|
||||
|
||||
final List<Module> survivedModules = new ArrayList<>();
|
||||
final ModuleManager moduleManager = ModuleManager.getInstance(project);
|
||||
for (String moduleName : modules) {
|
||||
final Module moduleByName = moduleManager.findModuleByName(moduleName);
|
||||
if (moduleByName != null) {
|
||||
survivedModules.add(moduleByName);
|
||||
}
|
||||
}
|
||||
if (survivedModules.isEmpty()) return true;
|
||||
|
||||
final Set<Module> allModules = new HashSet<>(Arrays.asList(moduleManager.getModules()));
|
||||
modules.stream()
|
||||
.map(moduleManager::findModuleByName)
|
||||
.filter(module -> module != null)
|
||||
survivedModules
|
||||
.forEach(module -> {
|
||||
final List<Module> dependentModules = ModuleUtilCore.getAllDependentModules(module);
|
||||
dependentModules.add(module);
|
||||
|
||||
+10
-5
@@ -74,6 +74,9 @@ public class TestDiscoveryExtension extends RunConfigurationExtension {
|
||||
@NotNull final ProcessHandler handler,
|
||||
@Nullable RunnerSettings runnerSettings) {
|
||||
if (runnerSettings == null && isApplicableFor(configuration)) {
|
||||
final String frameworkPrefix = ((JavaTestConfigurationBase)configuration).getFrameworkPrefix();
|
||||
final String moduleName = ((JavaTestConfigurationBase)configuration).getConfigurationModule().getModuleName();
|
||||
|
||||
final Alarm processTracesAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, null);
|
||||
final MessageBusConnection connection = configuration.getProject().getMessageBus().connect();
|
||||
connection.subscribe(SMTRunnerEventsListener.TEST_STATUS, new SMTRunnerEventsAdapter() {
|
||||
@@ -84,12 +87,12 @@ public class TestDiscoveryExtension extends RunConfigurationExtension {
|
||||
if ((root == null || root.getHandler() == handler)) {
|
||||
final String fullTestName = test.getLocationUrl();
|
||||
if (fullTestName != null && fullTestName.startsWith(JavaTestLocator.TEST_PROTOCOL)) {
|
||||
myCompletedMethodNames.add(((JavaTestConfigurationBase)configuration).getFrameworkPrefix() + fullTestName.substring(JavaTestLocator.TEST_PROTOCOL.length() + 3));
|
||||
myCompletedMethodNames.add(frameworkPrefix + fullTestName.substring(JavaTestLocator.TEST_PROTOCOL.length() + 3));
|
||||
if (myCompletedMethodNames.size() > 50) {
|
||||
final String[] fullTestNames = ArrayUtil.toStringArray(myCompletedMethodNames);
|
||||
myCompletedMethodNames.clear();
|
||||
processTracesAlarm.addRequest(() -> processAvailableTraces(fullTestNames,
|
||||
getTracesDirectory(configuration), configuration,
|
||||
getTracesDirectory(configuration), moduleName, frameworkPrefix,
|
||||
TestDiscoveryIndex.getInstance(configuration.getProject())
|
||||
), 100);
|
||||
}
|
||||
@@ -162,7 +165,8 @@ public class TestDiscoveryExtension extends RunConfigurationExtension {
|
||||
if (testMethodTraces != null) {
|
||||
for (File testMethodTrace : testMethodTraces) {
|
||||
try {
|
||||
coverageIndex.updateFromTestTrace(testMethodTrace, (JavaTestConfigurationBase)configuration);
|
||||
coverageIndex.updateFromTestTrace(testMethodTrace, ((JavaTestConfigurationBase)configuration).getConfigurationModule().getModuleName(),
|
||||
((JavaTestConfigurationBase)configuration).getFrameworkPrefix());
|
||||
FileUtil.delete(testMethodTrace);
|
||||
}
|
||||
catch (IOException e) {
|
||||
@@ -180,7 +184,8 @@ public class TestDiscoveryExtension extends RunConfigurationExtension {
|
||||
|
||||
public static void processAvailableTraces(final String[] fullTestNames,
|
||||
final String tracesDirectory,
|
||||
RunConfigurationBase configuration,
|
||||
final String moduleName,
|
||||
final String frameworkPrefix,
|
||||
final TestDiscoveryIndex discoveryIndex) {
|
||||
synchronized (ourTracesLock) {
|
||||
for (String fullTestName : fullTestNames) {
|
||||
@@ -190,7 +195,7 @@ public class TestDiscoveryExtension extends RunConfigurationExtension {
|
||||
final File testMethodTrace = new File(tracesDirectory, className + "-" + methodName + ".tr");
|
||||
if (testMethodTrace.exists()) {
|
||||
try {
|
||||
discoveryIndex.updateFromTestTrace(testMethodTrace, (JavaTestConfigurationBase)configuration);
|
||||
discoveryIndex.updateFromTestTrace(testMethodTrace, moduleName, frameworkPrefix);
|
||||
FileUtil.delete(testMethodTrace);
|
||||
}
|
||||
catch (IOException e) {
|
||||
|
||||
+4
-3
@@ -296,11 +296,12 @@ public class TestDiscoveryIndex implements ProjectComponent {
|
||||
public void projectClosed() {
|
||||
}
|
||||
|
||||
public void updateFromTestTrace(@NotNull File file, @Nullable JavaTestConfigurationBase configurationBase) throws IOException {
|
||||
public void updateFromTestTrace(@NotNull File file,
|
||||
@Nullable final String moduleName,
|
||||
@NotNull final String frameworkPrefix) throws IOException {
|
||||
int fileNameDotIndex = file.getName().lastIndexOf('.');
|
||||
final String testName = fileNameDotIndex != -1 ? file.getName().substring(0, fileNameDotIndex) : file.getName();
|
||||
final Module module = configurationBase != null ? configurationBase.getConfigurationModule().getModule() : null;
|
||||
doUpdateFromTestTrace(file, testName, module != null ? configurationBase.getFrameworkPrefix() + module.getName() : null);
|
||||
doUpdateFromTestTrace(file, testName, moduleName != null ? frameworkPrefix + moduleName : null);
|
||||
}
|
||||
|
||||
private void doUpdateFromTestTrace(File file, final String testName, @Nullable final String moduleName) throws IOException {
|
||||
|
||||
Reference in New Issue
Block a user