Bug 479450 - Set project encoding when creating a new project
This change automatically writes project encoding property on opening
just created projects to the project local settings, if that property
doesn't exist yet.
Change-Id: I63a12a16c563154f12bba4e17e6be39a755674f2
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.resources/+/96963
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
index ead6c1f..bbac6b8 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java
@@ -23,6 +23,7 @@
import java.util.*;
import org.eclipse.core.filesystem.*;
import org.eclipse.core.internal.events.LifecycleEvent;
+import org.eclipse.core.internal.preferences.EclipsePreferences;
import org.eclipse.core.internal.utils.*;
import org.eclipse.core.resources.*;
import org.eclipse.core.resources.team.IMoveDeleteHook;
@@ -1095,6 +1096,11 @@
monitor.worked(Policy.opWork * 60 / 100);
}
}
+
+ // Project is new and does not have any content already (not imported)
+ if (!used && !unknownChildren) {
+ writeEncodingAfterOpen(monitor);
+ }
//creation of this project may affect overlapping resources
workspace.getAliasManager().updateAliases(this, getStore(), IResource.DEPTH_INFINITE, monitor);
} catch (OperationCanceledException e) {
@@ -1108,6 +1114,28 @@
}
}
+ /**
+ * Try to set encoding if we open the project for the first time. See bug 479450
+ */
+ private void writeEncodingAfterOpen(IProgressMonitor monitor) throws CoreException {
+ IPath settings = new Path(EclipsePreferences.DEFAULT_PREFERENCES_DIRNAME).append(ResourcesPlugin.PI_RESOURCES)
+ .addFileExtension(EclipsePreferences.PREFS_FILE_EXTENSION);
+ IFile file = getFile(settings);
+
+ // The file could not yet be up-to-date with underlined resource
+ // force refresh to force reading project preferences via
+ // org.eclipse.core.internal.resources.ProjectPreferences.updatePreferences(IFile)
+ IPath location = file.getLocation();
+ if (!file.exists() && location != null && location.toFile().exists()) {
+ file.refreshLocal(IResource.DEPTH_ZERO, monitor);
+ }
+ String charset = workspace.getCharsetManager().getCharsetFor(getFullPath(), false);
+ if (charset == null) {
+ String encoding = ResourcesPlugin.getEncoding();
+ workspace.getCharsetManager().setCharsetFor(getFullPath(), encoding);
+ }
+ }
+
@Override
public void open(IProgressMonitor monitor) throws CoreException {
open(IResource.NONE, monitor);
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/localstore/SymlinkResourceTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/localstore/SymlinkResourceTest.java
index c37354b..d736c3b 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/localstore/SymlinkResourceTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/localstore/SymlinkResourceTest.java
@@ -91,8 +91,8 @@
@Override
public boolean visit(IResource resource) {
resourceCount++;
- //We have 1 root + 3 folders + 4 elements --> 8 elements to visit at most
- assertTrue(resourceCount <= 8);
+ // We have 1 root + 4 folders + 5 elements --> 10 elements to visit at most
+ assertTrue(resourceCount <= 10);
return true;
}
});
@@ -120,7 +120,9 @@
resourceCount[0]++;
return true;
});
- //We have 1 root + 1 folder + 1 file (.project) --> 3 elements to visit
- assertEquals(3, resourceCount[0]);
+ // We have 1 root + 1 folder + 1 file (.project)
+ // + .settings / resources prefs
+ // --> 5 elements to visit
+ assertEquals(5, resourceCount[0]);
}
}
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/resources/ProjectPreferencesTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/resources/ProjectPreferencesTest.java
index 317922b..168b0e8 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/resources/ProjectPreferencesTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/resources/ProjectPreferencesTest.java
@@ -398,7 +398,7 @@
assertEquals("0.8", value1, node.get(key1, null));
assertEquals("0.9", value2, node.get(key2, null));
IFile prefsFile = getFileInWorkspace(project1, ResourcesPlugin.PI_RESOURCES);
- assertTrue("1.0", !prefsFile.exists());
+ assertTrue("1.0", prefsFile.exists());
try {
node.flush();
} catch (BackingStoreException e) {
@@ -478,8 +478,8 @@
IProject project2 = getProject(getUniqueString());
ensureExistsInWorkspace(new IResource[] {project1}, true);
Preferences node = new ProjectScope(project1).getNode(ResourcesPlugin.PI_RESOURCES);
+ assertTrue("1.0", getFileInWorkspace(project1, ResourcesPlugin.PI_RESOURCES).exists());
node.put("key", "value");
- assertTrue("1.0", !getFileInWorkspace(project1, ResourcesPlugin.PI_RESOURCES).exists());
try {
node.flush();
} catch (BackingStoreException e) {
@@ -508,6 +508,7 @@
public void test_61277c() {
IProject project1 = getProject(getUniqueString());
ensureExistsInWorkspace(new IResource[] {project1}, true);
+ assertTrue("1.0", getFileInWorkspace(project1, ResourcesPlugin.PI_RESOURCES).exists());
Preferences node = new ProjectScope(project1).getNode(ResourcesPlugin.PI_RESOURCES);
String key1 = "key";
String emptyKey = "";
@@ -515,8 +516,6 @@
String value2 = getUniqueString();
node.put(key1, value1);
node.put(emptyKey, value2);
- assertTrue("1.0", !getFileInWorkspace(project1, ResourcesPlugin.PI_RESOURCES).exists());
-
try {
node.flush();
} catch (BackingStoreException e) {
@@ -729,6 +728,7 @@
// copy the pref file to the destination project
try {
+ getFileInWorkspace(project2, ResourcesPlugin.PI_RESOURCES).delete(true, null);
prefFile.copy(getFileInWorkspace(project2, ResourcesPlugin.PI_RESOURCES).getFullPath(), true, null);
} catch (CoreException e) {
fail("4.0", e);
@@ -1259,8 +1259,8 @@
Preferences node = new ProjectScope(project1).getNode("");
String[] childrenNames = node.childrenNames();
- assertEquals(1, childrenNames.length);
- assertEquals(nodeA, childrenNames[0]);
+ assertEquals(2, childrenNames.length);
+ assertEquals(nodeA, childrenNames[1]);
node = node.node(nodeA);
childrenNames = node.childrenNames();
assertEquals(1, childrenNames.length);
@@ -1586,9 +1586,8 @@
File projectFolder = new File(project1.getLocationURI());
File settingsFolder = new File(projectFolder, ".settings");
assertTrue(projectFolder.exists());
- assertFalse(settingsFolder.exists());
- settingsFolder.mkdir();
assertTrue(settingsFolder.exists());
+
// create the preference file also out of synch with the workspace
File prefsFile = new File(settingsFolder, "nodeA.prefs");
prefsFile.createNewFile();
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/CharsetTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/CharsetTest.java
index 6aa9c93..31751c0 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/CharsetTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/CharsetTest.java
@@ -481,13 +481,13 @@
}
IFile regularPrefs = getResourcesPreferenceFile(project1, false);
IFile derivedPrefs = getResourcesPreferenceFile(project1, true);
- assertDoesNotExistInWorkspace("0.2", regularPrefs);
+ assertExistsInWorkspace("0.2", regularPrefs);
assertDoesNotExistInWorkspace("0.3", derivedPrefs);
//1 - setting preference on project
verifier.reset();
- verifier.addExpectedChange(regularPrefs.getParent(), IResourceDelta.ADDED, 0);
- verifier.addExpectedChange(regularPrefs, IResourceDelta.ADDED, 0);
+ verifier.addExpectedChange(regularPrefs.getParent(), IResourceDelta.CHANGED, 0);
+ verifier.addExpectedChange(regularPrefs, IResourceDelta.CHANGED, IResourceDelta.CONTENT);
setDerivedEncodingStoredSeparately("1.0", project1, true);
assertTrue("1.1", verifier.waitForEvent(10000));
assertTrue("1.2 " + verifier.getMessage(), verifier.isDeltaValid());
@@ -910,6 +910,12 @@
IFile file1 = project.getFile("file1.txt");
IFile file2 = folder1.getFile("file2.txt");
IFile file3 = folder2.getFile("file3.txt");
+
+ ensureExistsInWorkspace(new IResource[] { project }, true);
+ assertEquals(ResourcesPlugin.getEncoding(), project.getDefaultCharset(false));
+ project.setDefaultCharset(null, getMonitor());
+ assertEquals(null, project.getDefaultCharset(false));
+
ensureExistsInWorkspace(new IResource[] {file1, file2, file3}, true);
// project and children should be using the workspace's default now
assertCharsetIs("1.0", ResourcesPlugin.getEncoding(), new IResource[] {workspace.getRoot(), project, file1, folder1, file2, folder2, file3}, true);
@@ -1063,7 +1069,7 @@
ensureExistsInWorkspace(new IResource[] {file1, file2}, true);
IFile resourcesPrefs = getResourcesPreferenceFile(project, false);
- assertTrue("0.9", !resourcesPrefs.exists());
+ assertTrue("0.9", resourcesPrefs.exists());
try {
file1.setCharset("CHARSET1", getMonitor());
@@ -1119,7 +1125,8 @@
ensureExistsInWorkspace(new IResource[] {project, folder1}, true);
verifier.reset();
verifier.addExpectedChange(folder1, IResourceDelta.CHANGED, IResourceDelta.ENCODING);
- verifier.addExpectedChange(new IResource[] {prefs, prefs.getParent()}, IResourceDelta.ADDED, 0);
+ verifier.addExpectedChange(new IResource[] { prefs.getParent() }, IResourceDelta.CHANGED, 0);
+ verifier.addExpectedChange(new IResource[] { prefs }, IResourceDelta.CHANGED, IResourceDelta.CONTENT);
try {
folder1.setDefaultCharset("new_charset", getMonitor());
} catch (CoreException e) {
@@ -1257,7 +1264,8 @@
// change from default
verifier.reset();
verifier.addExpectedChange(file1, IResourceDelta.CHANGED, IResourceDelta.ENCODING);
- verifier.addExpectedChange(new IResource[] {prefs, prefs.getParent()}, IResourceDelta.ADDED, 0);
+ verifier.addExpectedChange(new IResource[] { prefs.getParent() }, IResourceDelta.CHANGED, 0);
+ verifier.addExpectedChange(new IResource[] { prefs }, IResourceDelta.CHANGED, IResourceDelta.CONTENT);
try {
file1.setCharset("FOO", getMonitor());
} catch (CoreException e) {
@@ -1267,9 +1275,8 @@
// change to default (clear it)
verifier.reset();
+ verifier.addExpectedChange(prefs, IResourceDelta.CHANGED, IResourceDelta.CONTENT);
verifier.addExpectedChange(file1, IResourceDelta.CHANGED, IResourceDelta.ENCODING);
- verifier.addExpectedChange(prefs.getParent(), IResourceDelta.CHANGED, 0);
- verifier.addExpectedChange(prefs, IResourceDelta.REMOVED, 0);
try {
file1.setCharset(null, getMonitor());
} catch (CoreException e) {
@@ -1279,11 +1286,10 @@
// change to default (equal to it but it doesn't inherit)
verifier.reset();
+ verifier.addExpectedChange(prefs, IResourceDelta.CHANGED, IResourceDelta.CONTENT);
verifier.addExpectedChange(file1, IResourceDelta.CHANGED, IResourceDelta.ENCODING);
- verifier.addExpectedChange(prefs.getParent(), IResourceDelta.CHANGED, 0);
- verifier.addExpectedChange(prefs, IResourceDelta.ADDED, 0);
try {
- file1.setCharset(file1.getCharset(), getMonitor());
+ file1.setCharset(project.getDefaultCharset(), getMonitor());
} catch (CoreException e) {
fail("1.2.0", e);
}
@@ -1342,7 +1348,7 @@
IFile file1 = project.getFile("file1.txt");
IFile file2 = folder.getFile("file2.txt");
ensureExistsInWorkspace(new IResource[] {file1, file2}, true);
- assertDoesNotExistInWorkspace("1.0", getResourcesPreferenceFile(project, false));
+ assertExistsInWorkspace("1.0", getResourcesPreferenceFile(project, false));
project.setDefaultCharset("FOO", getMonitor());
assertExistsInWorkspace("2.0", getResourcesPreferenceFile(project, false));
project.setDefaultCharset(null, getMonitor());
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/HiddenResourceTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/HiddenResourceTest.java
index cc222bc..78f3642 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/HiddenResourceTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/HiddenResourceTest.java
@@ -99,7 +99,7 @@
fail("2.0", e);
}
// +1 for the project description file
- assertEquals("2.1", 3, members.length);
+ assertEquals("2.1", 4, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -141,14 +141,14 @@
fail("7.0", e);
}
// +1 for the project description file
- assertEquals("7.1", 3, members.length);
+ assertEquals("7.1", 4, members.length);
try {
members = project.members(IContainer.INCLUDE_HIDDEN);
} catch (CoreException e) {
fail("7.2", e);
}
// +1 for the project description file
- assertEquals("7.3", 3, members.length);
+ assertEquals("7.3", 4, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -164,7 +164,7 @@
fail("8.1", e);
}
// +1 for project description, -1 for hidden folder
- assertEquals("8.2", 2, members.length);
+ assertEquals("8.2", 3, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -177,7 +177,7 @@
fail("8.5", e);
}
// +1 for project description, -1 for hidden folder
- assertEquals("8.6", 2, members.length);
+ assertEquals("8.6", 3, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -190,7 +190,7 @@
fail("8.9", e);
}
// +1 for project description
- assertEquals("8.10", 3, members.length);
+ assertEquals("8.10", 4, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -219,7 +219,7 @@
fail("9.6", e);
}
// +1 for project description
- assertEquals("9.7", 3, members.length);
+ assertEquals("9.7", 4, members.length);
try {
members = folder.members(IContainer.INCLUDE_HIDDEN);
} catch (CoreException e) {
@@ -237,7 +237,9 @@
IFolder folder = project.getFolder("folder");
IFile file = project.getFile("file.txt");
IFile subFile = folder.getFile("subfile.txt");
- IResource[] resources = new IResource[] {project, folder, file, subFile};
+ IFolder settings = project.getFolder(".settings");
+ IFile prefs = settings.getFile("org.eclipse.core.resources.prefs");
+ IResource[] resources = new IResource[] { project, folder, file, subFile, settings, prefs };
ensureExistsInWorkspace(resources, true);
IResource description = project.getFile(IProjectDescription.DESCRIPTION_FILE_NAME);
@@ -279,6 +281,8 @@
visitor.addExpected(project);
visitor.addExpected(file);
visitor.addExpected(description);
+ visitor.addExpected(settings);
+ visitor.addExpected(prefs);
try {
project.accept(visitor);
} catch (CoreException e) {
@@ -290,6 +294,8 @@
visitor.addExpected(project);
visitor.addExpected(file);
visitor.addExpected(description);
+ visitor.addExpected(settings);
+ visitor.addExpected(prefs);
try {
project.accept(visitor, IResource.DEPTH_INFINITE, IResource.NONE);
} catch (CoreException e) {
@@ -569,7 +575,9 @@
IFile file = project.getFile("file.txt");
IFile subFile = folder.getFile("subfile.txt");
IFile description = project.getFile(IProjectDescription.DESCRIPTION_FILE_NAME);
- final IResource[] resources = new IResource[] {project, folder, file, subFile};
+ IFolder settings = project.getFolder(".settings");
+ IFile prefs = settings.getFile("org.eclipse.core.resources.prefs");
+ final IResource[] resources = new IResource[] { project, folder, file, subFile, settings, prefs };
final ResourceDeltaVerifier listener = new ResourceDeltaVerifier();
getWorkspace().addResourceChangeListener(listener);
try {
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceChangeListenerTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceChangeListenerTest.java
index a1e576c..3677ef4 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceChangeListenerTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceChangeListenerTest.java
@@ -49,9 +49,11 @@
IFolder folder1; //below project2
IFolder folder2; //below folder1
IFolder folder3; //same as file1
+ IFolder settings; // .settings
/* some random resource handles */
IProject project1;
IFile project1MetaData;
+ IFile prefs; // org.eclipse.core.resources.prefs
IProject project2;
IFile project2MetaData;
ResourceDeltaVerifier verifier;
@@ -208,6 +210,8 @@
folder1 = project1.getFolder("Folder" + 1);
folder2 = folder1.getFolder("Folder" + 2);
folder3 = folder1.getFolder("File" + 1);
+ settings = project1.getFolder(".settings");
+ prefs = settings.getFile("org.eclipse.core.resources.prefs");
file1 = folder1.getFile("File" + 1);
file2 = folder1.getFile("File" + 2);
file3 = folder2.getFile("File" + 1);
@@ -1248,10 +1252,17 @@
verifier.addExpectedChange(project1.getFile(".project"), IResourceDelta.REMOVED, IResourceDelta.MOVED_TO, null, project2.getFile(".project").getFullPath());
verifier.addExpectedChange(folder1, IResourceDelta.REMOVED, IResourceDelta.MOVED_TO, null, project2.getFolder(folder1.getProjectRelativePath()).getFullPath());
verifier.addExpectedChange(file1, IResourceDelta.REMOVED, IResourceDelta.MOVED_TO, null, project2.getFile(file1.getProjectRelativePath()).getFullPath());
+
+ verifier.addExpectedChange(settings, IResourceDelta.REMOVED, IResourceDelta.MOVED_TO, null, project2.getFolder(settings.getProjectRelativePath()).getFullPath());
+ verifier.addExpectedChange(prefs, IResourceDelta.REMOVED, IResourceDelta.MOVED_TO, null, project2.getFile(prefs.getProjectRelativePath()).getFullPath());
+
verifier.addExpectedChange(project2, IResourceDelta.ADDED, IResourceDelta.OPEN | IResourceDelta.DESCRIPTION | IResourceDelta.MOVED_FROM, project1.getFullPath(), null);
verifier.addExpectedChange(project2.getFile(".project"), IResourceDelta.ADDED, IResourceDelta.CONTENT | IResourceDelta.MOVED_FROM, project1.getFile(".project").getFullPath(), null);
verifier.addExpectedChange(project2.getFolder(folder1.getProjectRelativePath()), IResourceDelta.ADDED, IResourceDelta.MOVED_FROM, folder1.getFullPath(), null);
verifier.addExpectedChange(project2.getFile(file1.getProjectRelativePath()), IResourceDelta.ADDED, IResourceDelta.MOVED_FROM, file1.getFullPath(), null);
+
+ verifier.addExpectedChange(project2.getFolder(settings.getProjectRelativePath()), IResourceDelta.ADDED, IResourceDelta.MOVED_FROM, settings.getFullPath(), null);
+ verifier.addExpectedChange(project2.getFile(prefs.getProjectRelativePath()), IResourceDelta.ADDED, IResourceDelta.MOVED_FROM, prefs.getFullPath(), null);
getWorkspace().run((IWorkspaceRunnable) m -> {
m.beginTask("Creating and moving", 100);
try {
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceTest.java
index fbdb938..c004340 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/IResourceTest.java
@@ -2518,6 +2518,8 @@
// https://bugs.eclipse.org/461838
public void testAcceptProxyVisitorAlphabetic() throws CoreException {
IProject project = getWorkspace().getRoot().getProject("P");
+ IFolder settings = project.getFolder(".settings");
+ IFile prefs = settings.getFile("org.eclipse.core.resources.prefs");
IFolder a = project.getFolder("a");
IFile a1 = a.getFile("a1.txt");
IFile a2 = a.getFile("a2.txt");
@@ -2525,7 +2527,7 @@
IFile b1 = b.getFile("b1.txt");
IFile b2 = b.getFile("B2.txt");
- ensureExistsInWorkspace(new IResource[] {project, a, a1, a2, b, b1, b2}, true);
+ ensureExistsInWorkspace(new IResource[] {project, settings, prefs, a, a1, a2, b, b1, b2}, true);
final List<IResource> actualOrder = new ArrayList<>();
IResourceProxyVisitor visitor = proxy -> {
@@ -2535,7 +2537,7 @@
project.accept(visitor, IResource.DEPTH_INFINITE, IResource.NONE);
- List<IResource> expectedOrder = Arrays.asList(project, project.getFile(".project"), a, a1, a2, b, b2, b1);
+ List<IResource> expectedOrder = Arrays.asList(project, project.getFile(".project"), settings, prefs, a, a1, a2, b, b2, b1);
assertEquals("1.0", expectedOrder.toString(), actualOrder.toString());
}
}
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/TeamPrivateMemberTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/TeamPrivateMemberTest.java
index 096a10d..57f2845 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/TeamPrivateMemberTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/TeamPrivateMemberTest.java
@@ -85,7 +85,9 @@
IFolder folder = project.getFolder("folder");
IFile file = project.getFile("file.txt");
IFile subFile = folder.getFile("subfile.txt");
- IResource[] resources = new IResource[] {project, folder, file, subFile};
+ IFolder settings = project.getFolder(".settings");
+ IFile prefs = settings.getFile("org.eclipse.core.resources.prefs");
+ IResource[] resources = new IResource[] { project, folder, file, subFile, settings, prefs };
IResource[] members = null;
ensureExistsInWorkspace(resources, true);
@@ -99,7 +101,7 @@
fail("2.0", e);
}
// +1 for the project description file
- assertEquals("2.1", 3, members.length);
+ assertEquals("2.1", 4, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -141,14 +143,14 @@
fail("7.0", e);
}
// +1 for the project description file
- assertEquals("7.1", 3, members.length);
+ assertEquals("7.1", 4, members.length);
try {
members = project.members(IContainer.INCLUDE_TEAM_PRIVATE_MEMBERS);
} catch (CoreException e) {
fail("7.2", e);
}
// +1 for the project description file
- assertEquals("7.3", 3, members.length);
+ assertEquals("7.3", 4, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -164,7 +166,7 @@
fail("8.1", e);
}
// +1 for project description, -1 for team private folder
- assertEquals("8.2", 2, members.length);
+ assertEquals("8.2", 3, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -177,7 +179,7 @@
fail("8.5", e);
}
// +1 for project description, -1 for team private folder
- assertEquals("8.6", 2, members.length);
+ assertEquals("8.6", 3, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -190,7 +192,7 @@
fail("8.9", e);
}
// +1 for project description
- assertEquals("8.10", 3, members.length);
+ assertEquals("8.10", 4, members.length);
try {
members = folder.members();
} catch (CoreException e) {
@@ -219,7 +221,7 @@
fail("9.6", e);
}
// +1 for project description
- assertEquals("9.7", 3, members.length);
+ assertEquals("9.7", 4, members.length);
try {
members = folder.members(IContainer.INCLUDE_TEAM_PRIVATE_MEMBERS);
} catch (CoreException e) {
@@ -244,7 +246,9 @@
IFolder folder = project.getFolder("folder");
IFile file = project.getFile("file.txt");
IFile subFile = folder.getFile("subfile.txt");
- IResource[] resources = new IResource[] {project, folder, file, subFile};
+ IFolder settings = project.getFolder(".settings");
+ IFile prefs = settings.getFile("org.eclipse.core.resources.prefs");
+ IResource[] resources = new IResource[] { project, folder, file, subFile, settings, prefs };
ensureExistsInWorkspace(resources, true);
IResource description = project.getFile(IProjectDescription.DESCRIPTION_FILE_NAME);
@@ -286,6 +290,8 @@
visitor.addExpected(project);
visitor.addExpected(file);
visitor.addExpected(description);
+ visitor.addExpected(settings);
+ visitor.addExpected(prefs);
try {
project.accept(visitor);
} catch (CoreException e) {
@@ -297,6 +303,8 @@
visitor.addExpected(project);
visitor.addExpected(file);
visitor.addExpected(description);
+ visitor.addExpected(settings);
+ visitor.addExpected(prefs);
try {
project.accept(visitor, IResource.DEPTH_INFINITE, IResource.NONE);
} catch (CoreException e) {
@@ -607,8 +615,10 @@
final IFolder folder = project.getFolder("folder");
IFile file = project.getFile("file.txt");
IFile subFile = folder.getFile("subfile.txt");
+ IFolder settings = project.getFolder(".settings");
+ IFile prefs = settings.getFile("org.eclipse.core.resources.prefs");
IFile description = project.getFile(IProjectDescription.DESCRIPTION_FILE_NAME);
- final IResource[] resources = new IResource[] {project, folder, file, subFile};
+ IResource[] resources = new IResource[] { project, folder, file, subFile, settings, prefs };
final ResourceDeltaVerifier listener = new ResourceDeltaVerifier();
getWorkspace().addResourceChangeListener(listener);
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_028981.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_028981.java
index fa96816..5410a1a 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_028981.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_028981.java
@@ -36,6 +36,8 @@
IFile phantomFile = project.getFile("phantom.txt");
IFile regularFile = project.getFile("regular.txt");
IFile projectDescriptionFile = project.getFile(".project");
+ IFolder settings = project.getFolder(".settings");
+ IFile prefs = settings.getFile("org.eclipse.core.resources.prefs");
ensureExistsInWorkspace(new IResource[] {teamPrivateFile, regularFile}, true);
try {
@@ -61,6 +63,8 @@
verifier.addExpected(project);
verifier.addExpected(projectDescriptionFile);
verifier.addExpected(regularFile);
+ verifier.addExpected(settings);
+ verifier.addExpected(prefs);
try {
project.accept(verifier);
} catch (CoreException e) {
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_192631.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_192631.java
index 91c5d3c..c055378 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_192631.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_192631.java
@@ -80,13 +80,13 @@
linkB.createLink(commonB, IResource.NONE, getMonitor());
toVisit.addAll(Arrays.asList(new URI[] {projectA.getLocationURI(), commonA, folderA, projectA.getFile(".project").getLocationURI()}));
- toVisitCount[0] = 4;
+ toVisitCount[0] = 6;
projectA.accept(visitor);
assertTrue("1.1", toVisit.isEmpty());
assertEquals("1.2", 0, toVisitCount[0]);
toVisit.addAll(Arrays.asList(new URI[] {projectB.getLocationURI(), commonB, folderB, projectB.getFile(".project").getLocationURI()}));
- toVisitCount[0] = 4;
+ toVisitCount[0] = 6;
projectB.accept(visitor);
assertTrue("2.1", toVisit.isEmpty());
assertEquals("2.2", 0, toVisitCount[0]);
@@ -125,13 +125,13 @@
linkB.createLink(commonB, IResource.NONE, getMonitor());
toVisit.addAll(Arrays.asList(new URI[] {projectA.getLocationURI(), commonA, folderA, projectA.getFile(".project").getLocationURI()}));
- toVisitCount[0] = 4;
+ toVisitCount[0] = 6;
projectA.accept(visitor);
assertTrue("1.1", toVisit.isEmpty());
assertEquals("1.2", 0, toVisitCount[0]);
toVisit.addAll(Arrays.asList(new URI[] {projectB.getLocationURI(), commonB, folderB, projectB.getFile(".project").getLocationURI()}));
- toVisitCount[0] = 4;
+ toVisitCount[0] = 6;
projectB.accept(visitor);
assertTrue("2.1", toVisit.isEmpty());
assertEquals("2.2", 0, toVisitCount[0]);
@@ -170,13 +170,13 @@
linkB.createLink(commonB, IResource.NONE, getMonitor());
toVisit.addAll(Arrays.asList(new URI[] {projectA.getLocationURI(), commonA, folderA, projectA.getFile(".project").getLocationURI()}));
- toVisitCount[0] = 4;
+ toVisitCount[0] = 6;
projectA.accept(visitor);
assertTrue("1.1", toVisit.isEmpty());
assertEquals("1.2", 0, toVisitCount[0]);
toVisit.addAll(Arrays.asList(new URI[] {projectB.getLocationURI(), commonB, folderB, projectB.getFile(".project").getLocationURI()}));
- toVisitCount[0] = 4;
+ toVisitCount[0] = 6;
projectB.accept(visitor);
assertTrue("2.1", toVisit.isEmpty());
assertEquals("2.2", 0, toVisitCount[0]);
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_332543.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_332543.java
index 6615c65..bf3e5ea 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_332543.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/Bug_332543.java
@@ -97,12 +97,12 @@
IFile f = project.getFile("foo.txt");
ensureExistsInFileSystem(f);
- // Set our evil IOException on close() fs.
- WrapperFileSystem.setCustomFileStore(IOErrOnCloseFileStore.class);
-
// Now open the project
project.open(getMonitor());
+ // Set our evil IOException on close() fs.
+ WrapperFileSystem.setCustomFileStore(IOErrOnCloseFileStore.class);
+
// Try #setContents on an existing file
try {
f.setContents(wrap.apply(new ByteArrayInputStream("Random".getBytes())), false, true, getMonitor());
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/PR_1GEAB3C_Test.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/PR_1GEAB3C_Test.java
index 57f0454..481fe8d 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/PR_1GEAB3C_Test.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/regression/PR_1GEAB3C_Test.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.core.tests.resources.regression;
+import org.eclipse.core.internal.preferences.EclipsePreferences;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.SubMonitor;
@@ -67,8 +68,12 @@
public void test_1GEAB3C() {
verifier.reset();
final IProject project = getWorkspace().getRoot().getProject("MyAddedAndOpenedProject");
+ IFile prefs = project.getFolder(EclipsePreferences.DEFAULT_PREFERENCES_DIRNAME)
+ .getFile(ResourcesPlugin.PI_RESOURCES + "." + EclipsePreferences.PREFS_FILE_EXTENSION);
verifier.addExpectedChange(project, IResourceDelta.ADDED, IResourceDelta.OPEN);
verifier.addExpectedChange(project.getFile(IProjectDescription.DESCRIPTION_FILE_NAME), IResourceDelta.ADDED, 0);
+ verifier.addExpectedChange(new IResource[] { prefs.getParent() }, IResourceDelta.ADDED, 0);
+ verifier.addExpectedChange(new IResource[] { prefs }, IResourceDelta.ADDED, 0);
IWorkspaceRunnable body = monitor -> {
monitor.beginTask("Creating and deleting", 100);
try {
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/session/TestCloseNoSave.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/session/TestCloseNoSave.java
index 0f6c7a9..7eac3ab 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/session/TestCloseNoSave.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/resources/session/TestCloseNoSave.java
@@ -50,7 +50,7 @@
project.open(null);
}
- assertEquals("2.0", 2, project.members().length);
+ assertEquals("2.0", 3, project.members().length);
assertTrue("2.1", folder.exists());
assertTrue("2.2", file.exists());
}