Skip to content

Commit 3898ef3

Browse files
committed
Create the default project only when it is necessary.
- Default project is configured with a (default) JRE, that will produce unwanted symbols when other projects don't use the default JRE - Place default project creation logic into the invisible project importer since that is the importer requiring it - Continue to support some special cases where default project should be created (eg. Maven/Gradle project & opening a standalone file) - Update testcases & add a testcase Signed-off-by: Roland Grunberg <[email protected]>
1 parent 199f5f2 commit 3898ef3

19 files changed

+97
-67
lines changed

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/JDTUtils.java

+6
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,12 @@ static ICompilationUnit getFakeCompilationUnit(URI uri, IProgressMonitor monitor
266266
return null;
267267
}
268268

269+
try {
270+
ProjectsManager.createJavaProject(ProjectsManager.getDefaultProject(), new NullProgressMonitor());
271+
ProjectsManager.cleanupResources(ProjectsManager.getDefaultProject());
272+
} catch (Exception e) {
273+
// continue
274+
}
269275
IProject project = JavaLanguageServerPlugin.getProjectsManager().getDefaultProject();
270276
if (project == null || !project.isAccessible()) {
271277
String fileName = path.getFileName().toString();

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/BuildWorkspaceHandler.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ public BuildWorkspaceStatus buildWorkspace(boolean forceReBuild, IProgressMonito
5656
if (monitor.isCanceled()) {
5757
return BuildWorkspaceStatus.CANCELLED;
5858
}
59-
projectsManager.cleanupResources(projectsManager.getDefaultProject());
59+
if (ProjectUtils.getAllProjects(false).length == 0) {
60+
ProjectsManager.cleanupResources(ProjectsManager.getDefaultProject());
61+
}
6062
if (forceReBuild) {
6163
SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
6264
ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.CLEAN_BUILD, subMonitor.split(50));
@@ -67,7 +69,7 @@ public BuildWorkspaceStatus buildWorkspace(boolean forceReBuild, IProgressMonito
6769
List<IMarker> problemMarkers = new ArrayList<>();
6870
IProject[] projects = ProjectUtils.getAllProjects();
6971
for (IProject project : projects) {
70-
if (!project.equals(projectsManager.getDefaultProject())) {
72+
if (!project.equals(ProjectsManager.getDefaultProject())) {
7173
List<IMarker> markers = ResourceUtils.getErrorMarkers(project);
7274
if (markers != null) {
7375
problemMarkers.addAll(markers);

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/InvisibleProjectImporter.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import java.util.Arrays;
2727
import java.util.Collection;
2828
import java.util.Collections;
29-
import java.util.Comparator;
3029
import java.util.EnumSet;
3130
import java.util.HashMap;
3231
import java.util.HashSet;
@@ -51,15 +50,14 @@
5150
import org.eclipse.core.runtime.IPath;
5251
import org.eclipse.core.runtime.IProgressMonitor;
5352
import org.eclipse.core.runtime.IStatus;
53+
import org.eclipse.core.runtime.NullProgressMonitor;
5454
import org.eclipse.core.runtime.OperationCanceledException;
5555
import org.eclipse.core.runtime.Path;
5656
import org.eclipse.core.runtime.Status;
5757
import org.eclipse.core.runtime.jobs.Job;
5858
import org.eclipse.jdt.core.IClasspathEntry;
59-
import org.eclipse.jdt.core.IJavaModelStatus;
6059
import org.eclipse.jdt.core.IJavaProject;
6160
import org.eclipse.jdt.core.JavaCore;
62-
import org.eclipse.jdt.internal.core.ClasspathEntry;
6361
import org.eclipse.jdt.ls.core.internal.AbstractProjectImporter;
6462
import org.eclipse.jdt.ls.core.internal.IConstants;
6563
import org.eclipse.jdt.ls.core.internal.JDTUtils;
@@ -102,6 +100,9 @@ public void importToWorkspace(IProgressMonitor monitor) throws OperationCanceled
102100
return;
103101
}
104102

103+
ProjectsManager.createJavaProject(ProjectsManager.getDefaultProject(), new NullProgressMonitor());
104+
ProjectsManager.cleanupResources(ProjectsManager.getDefaultProject());
105+
105106
IPath rootPath = ResourceUtils.filePathFromURI(rootFolder.toPath().toUri().toString());
106107
Optional<IPath> triggerJavaFile = triggerFiles.stream().filter(triggerFile -> rootPath.isPrefixOf(triggerFile)).findFirst();
107108
if (!triggerJavaFile.isPresent()) {
@@ -201,7 +202,7 @@ private static Collection<IPath> collectSourcePaths(IPath triggerFilePath, IFold
201202
return Collections.emptySet();
202203
}
203204
Collection<IPath> triggerFiles = collectTriggerFiles(currentProject, foldersToSearch);
204-
205+
205206
Set<IPath> sourcePaths = new HashSet<>();
206207
sourcePaths.add(triggerFolder.getFullPath());
207208

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/ProjectsManager.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
import org.eclipse.core.runtime.IProgressMonitor;
6161
import org.eclipse.core.runtime.IStatus;
6262
import org.eclipse.core.runtime.MultiStatus;
63+
import org.eclipse.core.runtime.NullProgressMonitor;
6364
import org.eclipse.core.runtime.OperationCanceledException;
6465
import org.eclipse.core.runtime.Platform;
6566
import org.eclipse.core.runtime.Status;
@@ -116,8 +117,10 @@ public void initializeProjects(final Collection<IPath> rootPaths, IProgressMonit
116117
if (!preferenceManager.getClientPreferences().skipProjectConfiguration()) {
117118
SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
118119
cleanInvalidProjects(rootPaths, subMonitor.split(20));
119-
createJavaProject(getDefaultProject(), subMonitor.split(10));
120-
cleanupResources(getDefaultProject());
120+
if (rootPaths.isEmpty() && !ProjectsManager.getDefaultProject().exists()) {
121+
ProjectsManager.createJavaProject(ProjectsManager.getDefaultProject(), new NullProgressMonitor());
122+
ProjectsManager.cleanupResources(ProjectsManager.getDefaultProject());
123+
}
121124
Collection<IPath> projectConfigurations = preferenceManager.getPreferences().getProjectConfigurations();
122125
if (projectConfigurations == null) {
123126
// old way to import project
@@ -153,6 +156,7 @@ private void updateEncoding(IProgressMonitor monitor) throws CoreException {
153156
protected void importProjects(Collection<IPath> rootPaths, IProgressMonitor monitor) throws CoreException, OperationCanceledException {
154157
SubMonitor subMonitor = SubMonitor.convert(monitor, rootPaths.size() * 100);
155158
MultiStatus importStatusCollection = new MultiStatus(IConstants.PLUGIN_ID, -1, "Failed to import projects", null);
159+
156160
for (IPath rootPath : rootPaths) {
157161
File rootFolder = rootPath.toFile();
158162
try {
@@ -336,7 +340,7 @@ public IStatus runInWorkspace(IProgressMonitor monitor) {
336340
return job;
337341
}
338342

339-
public void cleanupResources(IProject project) throws CoreException {
343+
public static void cleanupResources(IProject project) throws CoreException {
340344
IJavaProject javaProj = JavaCore.create(project);
341345
if (javaProj == null) {
342346
return;
@@ -724,7 +728,7 @@ public IStatus runInWorkspace(IProgressMonitor monitor) {
724728
for (Entry<IBuildSupport, List<IProject>> entry : groupByBuildSupport(projects).entrySet()) {
725729
IStatus onWillUpdateStatus = onWillConfigurationUpdate(entry.getKey(),
726730
entry.getValue(), monitor);
727-
731+
728732
// if onWillUpdate() failed, skip updating the projects.
729733
if (!onWillUpdateStatus.isOK()) {
730734
status.add(onWillUpdateStatus);

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/JVMConfiguratorTest.java

+16
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal;
1414

15+
import static org.eclipse.jdt.ls.core.internal.ProjectUtils.getJavaSourceLevel;
1516
import static org.junit.Assert.assertEquals;
1617
import static org.junit.Assert.assertNotEquals;
1718
import static org.junit.Assert.assertNotNull;
@@ -30,6 +31,7 @@
3031
import org.eclipse.core.runtime.CoreException;
3132
import org.eclipse.core.runtime.FileLocator;
3233
import org.eclipse.core.runtime.IStatus;
34+
import org.eclipse.core.runtime.NullProgressMonitor;
3335
import org.eclipse.core.runtime.Platform;
3436
import org.eclipse.core.runtime.URIUtil;
3537
import org.eclipse.jdt.core.IJavaProject;
@@ -42,11 +44,13 @@
4244
import org.eclipse.jdt.launching.JavaRuntime;
4345
import org.eclipse.jdt.launching.LibraryLocation;
4446
import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
47+
import org.eclipse.jdt.ls.core.internal.handlers.WorkspaceSymbolHandler;
4548
import org.eclipse.jdt.ls.core.internal.managers.AbstractInvisibleProjectBasedTest;
4649
import org.eclipse.jdt.ls.core.internal.preferences.ClientPreferences;
4750
import org.eclipse.jdt.ls.core.internal.preferences.Preferences;
4851
import org.eclipse.lsp4j.MessageParams;
4952
import org.eclipse.lsp4j.MessageType;
53+
import org.eclipse.lsp4j.SymbolInformation;
5054
import org.junit.After;
5155
import org.junit.Before;
5256
import org.junit.Test;
@@ -246,6 +250,18 @@ public void testInvalidRuntime() throws Exception {
246250
assertEquals("Invalid runtime for " + runtime.getName() + ": 'bin' should be removed from the path (" + runtime.getPath() + ").", notification.getMessage());
247251
}
248252

253+
// https://github.com/redhat-developer/vscode-java/issues/3452
254+
@Test
255+
public void testJavaRuntimesDoNotLeak() throws Exception {
256+
importProjects("maven/salut-java11");
257+
IProject project = WorkspaceHelper.getProject("salut-java11");
258+
assertIsJavaProject(project);
259+
assertEquals("11", getJavaSourceLevel(project));
260+
List<SymbolInformation> results = WorkspaceSymbolHandler.search("java.lang.Object", new NullProgressMonitor());
261+
int numOfObjectSymbols = results.stream().filter(s -> "java.lang".equals(s.getContainerName()) && "Object".equals(s.getName())).toList().size();
262+
assertEquals(1, numOfObjectSymbols);
263+
}
264+
249265
private void assertComplianceAndPreviewSupport(IJavaProject javaProject, String compliance, boolean previewEnabled) {
250266
assertEquals(previewEnabled ? JavaCore.ENABLED : JavaCore.DISABLED, javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true));
251267
assertEquals(compliance, javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true));

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/commands/ProjectCommandTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ public void testIsTestFileForGradle() throws Exception {
391391
public void getAllJavaProject() throws Exception {
392392
importProjects("maven/multimodule");
393393
List<URI> projects = ProjectCommand.getAllJavaProjects();
394-
assertEquals(4, projects.size());
394+
assertEquals(3, projects.size());
395395
}
396396

397397
private static Range START_OF_DOCUMENT = new Range(new Position(0, 0), new Position(0, 0));

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/filesystem/GradleProjectMetadataFileTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public void testMetadataFileLocation2() throws Exception {
121121
@Test
122122
public void testSettingsGradle() throws Exception {
123123
List<IProject> projects = importProjects("gradle/sample");
124-
assertEquals(3, projects.size());//default, app, sample
124+
assertEquals(2, projects.size()); // app, sample
125125
IProject root = WorkspaceHelper.getProject("sample");
126126
assertIsGradleProject(root);
127127
IProject project = WorkspaceHelper.getProject("app");

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/filesystem/MavenProjectMetadataFileTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public void testMetadataFileSync() throws Exception {
111111
@Test
112112
public void testInvalidProject() throws Exception {
113113
List<IProject> projects = importProjects(MAVEN_INVALID);
114-
assertEquals(2, projects.size());
114+
assertEquals(1, projects.size());
115115
IProject invalid = WorkspaceHelper.getProject(INVALID);
116116
assertIsMavenProject(invalid);
117117
IFile projectFile = invalid.getFile(IProjectDescription.DESCRIPTION_FILE_NAME);
@@ -123,7 +123,7 @@ public void testInvalidProject() throws Exception {
123123
file.delete();
124124
assertFalse(file.exists());
125125
projects = importProjects(MAVEN_INVALID);
126-
assertEquals(2, projects.size());
126+
assertEquals(1, projects.size());
127127
invalid = WorkspaceHelper.getProject(INVALID);
128128
assertIsMavenProject(invalid);
129129
}

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/handlers/BuildWorkspaceHandlerTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void testParallelBuildForEclipseProjects() throws Exception
8787
preferences.setMaxBuildCount(4);
8888

8989
List<IProject> projects = importProjects("eclipse/multi");
90-
assertEquals(3, projects.size());
90+
assertEquals(2, projects.size());
9191

9292
BuildWorkspaceStatus result = handler.buildWorkspace(false, monitor);
9393
assertEquals(String.format("BuildWorkspaceStatus is: %s.", result.toString()), result, BuildWorkspaceStatus.SUCCEED);
@@ -98,7 +98,7 @@ public void testParallelBuildSupport() throws Exception {
9898
preferences.setMaxBuildCount(4);
9999

100100
List<IProject> projects = importProjects("maven/multimodule");
101-
assertEquals(6, projects.size());
101+
assertEquals(5, projects.size());
102102

103103
BuildWorkspaceStatus result = handler.buildWorkspace(false, monitor);
104104
assertEquals(String.format("BuildWorkspaceStatus is: %s.", result.toString()), result, BuildWorkspaceStatus.SUCCEED);

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/handlers/ImportNewProjectsTest.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void testImportNewMavenProjects() throws Exception {
7272
importProjects("maven/multimodule");
7373
waitForJobs();
7474
projects = workspace.getRoot().getProjects();
75-
assertEquals(6, projects.length);
75+
assertEquals(5, projects.length);
7676

7777
// Add new sub-module
7878
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("multimodule");
@@ -103,7 +103,7 @@ public void testImportNewMavenProjects() throws Exception {
103103

104104
// Verify no projects imported
105105
projects = workspace.getRoot().getProjects();
106-
assertEquals(6, projects.length);
106+
assertEquals(5, projects.length);
107107

108108
// Verify import projects
109109
projectsManager.setConnection(client);
@@ -112,7 +112,7 @@ public void testImportNewMavenProjects() throws Exception {
112112
IProject newProject = workspace.getRoot().getProject("module4");
113113
assertTrue(newProject.exists());
114114
projects = workspace.getRoot().getProjects();
115-
assertEquals(7, projects.length);
115+
assertEquals(6, projects.length);
116116

117117
ArgumentCaptor<EventNotification> argument = ArgumentCaptor.forClass(EventNotification.class);
118118
verify(client, times(1)).sendEventNotification(argument.capture());
@@ -130,7 +130,7 @@ public void testManualImportNewMavenProjects() throws Exception {
130130
importProjects("maven/multimodule");
131131
waitForJobs();
132132
projects = workspace.getRoot().getProjects();
133-
assertEquals(6, projects.length);
133+
assertEquals(5, projects.length);
134134

135135
// Add new sub-module
136136
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("multimodule");
@@ -161,7 +161,7 @@ public void testManualImportNewMavenProjects() throws Exception {
161161

162162
// Verify no projects imported
163163
projects = workspace.getRoot().getProjects();
164-
assertEquals(6, projects.length);
164+
assertEquals(5, projects.length);
165165

166166
// Verify import projects
167167
projectsManager.setConnection(client);
@@ -173,7 +173,7 @@ public void testManualImportNewMavenProjects() throws Exception {
173173
IProject newProject = workspace.getRoot().getProject("module4");
174174
assertTrue("New module is imported", newProject.exists());
175175
projects = workspace.getRoot().getProjects();
176-
assertEquals(7, projects.length);
176+
assertEquals(6, projects.length);
177177

178178
ArgumentCaptor<EventNotification> argument = ArgumentCaptor.forClass(EventNotification.class);
179179
verify(client, times(1)).sendEventNotification(argument.capture());
@@ -192,7 +192,7 @@ public void testImportNewGradleProjects() throws Exception {
192192
importProjects("gradle/multi-module");
193193
waitForJobs();
194194
projects = workspace.getRoot().getProjects();
195-
assertEquals(4, projects.length);
195+
assertEquals(3, projects.length);
196196
// Add new sub-module
197197
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("multi-module");
198198
File projectBasePath = project.getLocation().toFile();
@@ -207,7 +207,7 @@ public void testImportNewGradleProjects() throws Exception {
207207

208208
// Verify no projects imported
209209
projects = workspace.getRoot().getProjects();
210-
assertEquals(4, projects.length);
210+
assertEquals(3, projects.length);
211211

212212
// Verify import projects
213213
projectsManager.setConnection(client);
@@ -216,7 +216,7 @@ public void testImportNewGradleProjects() throws Exception {
216216
IProject newProject = workspace.getRoot().getProject("test");
217217
assertTrue(newProject.exists());
218218
projects = workspace.getRoot().getProjects();
219-
assertEquals(5, projects.length);
219+
assertEquals(4, projects.length);
220220

221221
ArgumentCaptor<EventNotification> argument = ArgumentCaptor.forClass(EventNotification.class);
222222
verify(client, times(1)).sendEventNotification(argument.capture());
@@ -231,7 +231,7 @@ public void testImportMixedProjects() throws Exception {
231231
IProject[] projects = workspace.getRoot().getProjects();
232232
assertEquals(0, projects.length);
233233
importProjects("mixed");
234-
assertEquals(4, wsRoot.getProjects().length);
234+
assertEquals(3, wsRoot.getProjects().length);
235235
IProject hello = wsRoot.getProject("hello");
236236
assertNotNull(hello);
237237
assertIsJavaProject(hello);

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/handlers/NavigateToDefinitionHandlerTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,12 @@ public class NavigateToDefinitionHandlerTest extends AbstractProjectsManagerBase
4444

4545
private NavigateToDefinitionHandler handler;
4646
private IProject project;
47-
private IProject defaultProject;
4847

4948
@Before
5049
public void setUp() throws Exception {
5150
handler = new NavigateToDefinitionHandler(preferenceManager);
5251
importProjects("maven/salut");
5352
project = WorkspaceHelper.getProject("salut");
54-
defaultProject = linkFilesToDefaultProject("singlefile/Single.java").getProject();
5553
Job.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_BUILD, monitor);
5654
Job.getJobManager().join(ResourcesPlugin.FAMILY_MANUAL_BUILD, monitor);
5755
Job.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_REFRESH, monitor);
@@ -144,6 +142,7 @@ public void testMethodInAnonymousClass2() throws Exception {
144142
public void testJdkClasses() throws Exception {
145143
// because for test, we are using fake rt.jar(rtstubs.jar), the issue of issue https://bugs.eclipse.org/bugs/show_bug.cgi?id=541573 will
146144
// never occur in test cases
145+
IProject defaultProject = linkFilesToDefaultProject("singlefile/Single.java").getProject();
147146
String uri = ClassFileUtil.getURI(defaultProject, "Single");
148147
TextDocumentIdentifier identifier = new TextDocumentIdentifier(uri);
149148
handler.definition(new TextDocumentPositionParams(identifier, new Position(1, 31)), monitor);

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/handlers/WorkspaceSymbolHandlerTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void testWorkspaceSearch() {
7878
String query = "Array";
7979
List<SymbolInformation> results = WorkspaceSymbolHandler.search(query, monitor);
8080
assertNotNull(results);
81-
assertEquals("Unexpected results", 22, results.size());
81+
assertEquals("Unexpected results", 11, results.size());
8282
Range defaultRange = JDTUtils.newRange();
8383
for (SymbolInformation symbol : results) {
8484
assertNotNull("Kind is missing", symbol.getKind());

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/AbstractProjectsManagerBasedTest.java

+7
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import org.eclipse.core.runtime.IRegistryChangeEvent;
5757
import org.eclipse.core.runtime.IRegistryChangeListener;
5858
import org.eclipse.core.runtime.NullProgressMonitor;
59+
import org.eclipse.core.runtime.OperationCanceledException;
5960
import org.eclipse.core.runtime.Path;
6061
import org.eclipse.core.runtime.Platform;
6162
import org.eclipse.core.runtime.jobs.Job;
@@ -211,6 +212,12 @@ protected IJavaProject newDefaultProject() throws Exception {
211212
}
212213

213214
protected IFile linkFilesToDefaultProject(String path) throws Exception {
215+
try {
216+
ProjectsManager.createJavaProject(ProjectsManager.getDefaultProject(), new NullProgressMonitor());
217+
ProjectsManager.cleanupResources(ProjectsManager.getDefaultProject());
218+
} catch (OperationCanceledException e) {
219+
} catch (CoreException e) {
220+
}
214221
IProject testProject = ProjectsManager.getDefaultProject();
215222
String fullpath = copyFiles(path, true).getAbsolutePath().replace('\\', '/');
216223
String fileName = fullpath.substring(fullpath.lastIndexOf("/") + 1);

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/EclipseProjectImporterTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public void ignoreMissingResourceFilters() throws Exception {
9494
@Test
9595
public void importMultipleJavaProject() throws Exception {
9696
List<IProject> projects = importProjects("eclipse/multi");
97-
assertEquals(3, projects.size());
97+
assertEquals(2, projects.size());
9898

9999
IProject bar = getProject("bar");
100100
assertIsJavaProject(bar);
@@ -123,7 +123,7 @@ public void testJavaImportExclusions() throws Exception {
123123
try {
124124
javaImportExclusions.add(BAR_PATTERN);
125125
List<IProject> projects = importProjects("eclipse/multi");
126-
assertEquals(2, projects.size());
126+
assertEquals(1, projects.size());
127127
IProject bar = getProject("bar");
128128
assertNull(bar);
129129
IProject foo = getProject("foo");

0 commit comments

Comments
 (0)