|
55 | 55 | import org.eclipse.core.resources.IMarker; |
56 | 56 | import org.eclipse.core.resources.IProject; |
57 | 57 | import org.eclipse.core.resources.IResource; |
| 58 | +import org.eclipse.core.resources.IResourceChangeEvent; |
| 59 | +import org.eclipse.core.resources.IResourceChangeListener; |
| 60 | +import org.eclipse.core.resources.IResourceDelta; |
| 61 | +import org.eclipse.core.resources.IResourceDeltaVisitor; |
58 | 62 | import org.eclipse.core.resources.IResourceVisitor; |
59 | 63 | import org.eclipse.core.resources.IWorkspaceRoot; |
60 | 64 | import org.eclipse.core.resources.IWorkspaceRunnable; |
61 | 65 | import org.eclipse.core.resources.ResourcesPlugin; |
62 | 66 | import org.eclipse.core.runtime.CoreException; |
63 | 67 | import org.eclipse.core.runtime.IPath; |
64 | 68 | import org.eclipse.core.runtime.Platform; |
| 69 | +import org.eclipse.core.runtime.Status; |
65 | 70 | import org.eclipse.core.runtime.jobs.Job; |
66 | 71 | import org.eclipse.core.runtime.preferences.IEclipsePreferences; |
67 | 72 | import org.eclipse.core.runtime.preferences.InstanceScope; |
|
75 | 80 | @ExtendWith(WorkspaceResetExtension.class) |
76 | 81 | public class MarkerTest { |
77 | 82 |
|
| 83 | + private static final IResourceChangeListener LOG_RESOURCE_DELTA = MarkerTest::logDeltaEvent; |
| 84 | + |
78 | 85 | public static final String TRANSIENT_MARKER = "org.eclipse.core.tests.resources.transientmarker"; |
79 | 86 | public static final String TEST_PROBLEM_MARKER = "org.eclipse.core.tests.resources.testproblem"; |
80 | 87 |
|
@@ -211,6 +218,7 @@ public void tearDown() throws Exception { |
211 | 218 | } |
212 | 219 | IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(ResourcesPlugin.PI_RESOURCES); |
213 | 220 | prefs.putBoolean(ResourcesPlugin.PREF_AUTO_REFRESH, originalRefreshSetting); |
| 221 | + ResourcesPlugin.getWorkspace().removeResourceChangeListener(LOG_RESOURCE_DELTA); |
214 | 222 | } |
215 | 223 |
|
216 | 224 | /** |
@@ -950,6 +958,7 @@ public void testMarkerDeltasMoveFolder(TestInfo testInfo) throws CoreException { |
950 | 958 | */ |
951 | 959 | @Test |
952 | 960 | public void testMarkerDeltasMoveFile(TestInfo testInfo) throws CoreException { |
| 961 | + ResourcesPlugin.getWorkspace().addResourceChangeListener(LOG_RESOURCE_DELTA); |
953 | 962 | IWorkspaceRoot root = getWorkspace().getRoot(); |
954 | 963 | final IProject project = root.getProject("MyProject"); |
955 | 964 | IFolder folder = project.getFolder("folder"); |
@@ -1384,4 +1393,50 @@ public void testSetGetAttribute2() throws CoreException { |
1384 | 1393 | } |
1385 | 1394 | } |
1386 | 1395 |
|
| 1396 | + private static void logDeltaEvent(IResourceChangeEvent event) { |
| 1397 | + StringBuilder s = new StringBuilder(); |
| 1398 | + s.append("Logging resource change event"); |
| 1399 | + s.append(System.lineSeparator()); |
| 1400 | + s.append("thread: "); |
| 1401 | + s.append(Thread.currentThread().getName()); |
| 1402 | + s.append(System.lineSeparator()); |
| 1403 | + s.append("type: "); |
| 1404 | + s.append(event.getType()); |
| 1405 | + s.append(System.lineSeparator()); |
| 1406 | + s.append("buildKind: "); |
| 1407 | + s.append(event.getBuildKind()); |
| 1408 | + s.append(System.lineSeparator()); |
| 1409 | + s.append("resource: "); |
| 1410 | + s.append(event.getResource()); |
| 1411 | + s.append(System.lineSeparator()); |
| 1412 | + s.append("source: "); |
| 1413 | + s.append(event.getSource()); |
| 1414 | + IResourceDelta delta = event.getDelta(); |
| 1415 | + if (delta != null) { |
| 1416 | + s.append(System.lineSeparator()); |
| 1417 | + s.append("Delta:"); |
| 1418 | + IResourceDeltaVisitor visitor = d -> { |
| 1419 | + s.append(System.lineSeparator()); |
| 1420 | + s.append("\tkind: "); |
| 1421 | + s.append(d.getKind()); |
| 1422 | + s.append(", resource: "); |
| 1423 | + s.append(d.getResource()); |
| 1424 | + return true; |
| 1425 | + }; |
| 1426 | + try { |
| 1427 | + delta.accept(visitor); |
| 1428 | + } catch (CoreException e) { |
| 1429 | + logError("Error occurred while visiting delta", e); |
| 1430 | + } |
| 1431 | + logInfo(s.toString()); |
| 1432 | + } |
| 1433 | + } |
| 1434 | + |
| 1435 | + private static void logError(String errorMessage, CoreException e) { |
| 1436 | + ResourcesPlugin.getPlugin().getLog().log(Status.error(errorMessage, e)); |
| 1437 | + } |
| 1438 | + |
| 1439 | + private static void logInfo(String message) { |
| 1440 | + ResourcesPlugin.getPlugin().getLog().log(Status.info(message)); |
| 1441 | + } |
1387 | 1442 | } |
0 commit comments