Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,18 @@
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
Expand All @@ -75,6 +80,8 @@
@ExtendWith(WorkspaceResetExtension.class)
public class MarkerTest {

private static final IResourceChangeListener LOG_RESOURCE_DELTA = MarkerTest::logDeltaEvent;

public static final String TRANSIENT_MARKER = "org.eclipse.core.tests.resources.transientmarker";
public static final String TEST_PROBLEM_MARKER = "org.eclipse.core.tests.resources.testproblem";

Expand Down Expand Up @@ -211,6 +218,7 @@ public void tearDown() throws Exception {
}
IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(ResourcesPlugin.PI_RESOURCES);
prefs.putBoolean(ResourcesPlugin.PREF_AUTO_REFRESH, originalRefreshSetting);
ResourcesPlugin.getWorkspace().removeResourceChangeListener(LOG_RESOURCE_DELTA);
}

/**
Expand Down Expand Up @@ -950,6 +958,7 @@ public void testMarkerDeltasMoveFolder(TestInfo testInfo) throws CoreException {
*/
@Test
public void testMarkerDeltasMoveFile(TestInfo testInfo) throws CoreException {
ResourcesPlugin.getWorkspace().addResourceChangeListener(LOG_RESOURCE_DELTA);
IWorkspaceRoot root = getWorkspace().getRoot();
final IProject project = root.getProject("MyProject");
IFolder folder = project.getFolder("folder");
Expand Down Expand Up @@ -1384,4 +1393,50 @@ public void testSetGetAttribute2() throws CoreException {
}
}

private static void logDeltaEvent(IResourceChangeEvent event) {
StringBuilder s = new StringBuilder();
s.append("Logging resource change event");
s.append(System.lineSeparator());
s.append("thread: ");
s.append(Thread.currentThread().getName());
s.append(System.lineSeparator());
s.append("type: ");
s.append(event.getType());
s.append(System.lineSeparator());
s.append("buildKind: ");
s.append(event.getBuildKind());
s.append(System.lineSeparator());
s.append("resource: ");
s.append(event.getResource());
s.append(System.lineSeparator());
s.append("source: ");
s.append(event.getSource());
IResourceDelta delta = event.getDelta();
if (delta != null) {
s.append(System.lineSeparator());
s.append("Delta:");
IResourceDeltaVisitor visitor = d -> {
s.append(System.lineSeparator());
s.append("\tkind: ");
s.append(d.getKind());
s.append(", resource: ");
s.append(d.getResource());
return true;
};
try {
delta.accept(visitor);
} catch (CoreException e) {
logError("Error occurred while visiting delta", e);
}
logInfo(s.toString());
}
}

private static void logError(String errorMessage, CoreException e) {
ResourcesPlugin.getPlugin().getLog().log(Status.error(errorMessage, e));
}

private static void logInfo(String message) {
ResourcesPlugin.getPlugin().getLog().log(Status.info(message));
}
}
Loading