Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Grunberg2016-12-13 21:30:43 +0000
committerRoland Grunberg2017-01-09 21:31:39 +0000
commitbcfacf1b03f5defe4d15ce6c139c0a43e9e31fc0 (patch)
treeda4b4fb84bc79ba69c80319b1b2698233345ba18
parent4fd70f530ffa58e5c2a8ef4214109dfcfb8d6c18 (diff)
downloadrt.equinox.p2-bcfacf1b03f5defe4d15ce6c139c0a43e9e31fc0.tar.gz
rt.equinox.p2-bcfacf1b03f5defe4d15ce6c139c0a43e9e31fc0.tar.xz
rt.equinox.p2-bcfacf1b03f5defe4d15ce6c139c0a43e9e31fc0.zip
Bug 508905: Change File.canWrite to Files.isWritable for p2 Droplets.
For compatibility with Windows, use java.nio.Files.isWritable(Path) instead of java.io.File.canWrite(). This is due to the fact that canWrite always returns true for directories on Windows. - Enable all tests disabled on Windows by 416b782 - Introduce reallyReadOnly/removeReallyReadonly functions that operate recursively on a directory (like chmod -R on linux) since certain test cases require this Change-Id: I615dfdef60e4abd23c34602bd324c307325e00d4 Signed-off-by: Roland Grunberg <rgrunber@redhat.com>
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AllTests.java5
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java30
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/BundlesTxtTestExtendedConfigured.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorTests.java13
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorUtilsExtendedConfiguredTest.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorTests.java7
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java3
8 files changed, 44 insertions, 25 deletions
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java
index 5fc0e73b5..8106718c8 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java
@@ -14,6 +14,7 @@ package org.eclipse.equinox.internal.p2.engine;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
+import java.nio.file.Files;
import java.util.*;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -135,7 +136,7 @@ public class EngineActivator implements BundleActivator {
}
if (extension.isDirectory()) {
- if (extension.canWrite()) {
+ if (Files.isWritable(extension.toPath())) {
synchronized (reportedExtensions) {
if (!reportedExtensions.contains(extension)) {
reportedExtensions.add(extension);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AllTests.java
index 938d6cbb5..a3fe6af53 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AllTests.java
@@ -12,7 +12,6 @@
package org.eclipse.equinox.p2.tests.reconciler.dropins;
import junit.framework.*;
-import org.eclipse.equinox.p2.tests.sharedinstall.AbstractSharedInstallTest;
/**
* To run the reconciler tests, you must perform some manual setup steps:
@@ -30,9 +29,7 @@ public class AllTests extends TestCase {
suite.addTest(FeaturePatchTest.suite());
suite.addTest(SharedInstallTests.suite());
suite.addTest(SharedInstallTestsProfileSpoofEnabled.suite());
- if (!AbstractSharedInstallTest.WINDOWS) {
- suite.addTest(SharedInstallTestsProfileSpoofEnabledConfigured.suite());
- }
+ suite.addTest(SharedInstallTestsProfileSpoofEnabledConfigured.suite());
suite.addTest(Bug362692.suite());
return suite;
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java
index e31bd1f3b..119f0a766 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java
@@ -193,6 +193,21 @@ public abstract class AbstractSharedInstallTest extends AbstractReconcilerTest {
realExecuteVerifier(verificationProperties, true);
}
+ public static void reallyReadOnly(File folder, boolean recurse) {
+ reallyReadOnly(folder);
+ if (folder.exists() && recurse) {
+ File[] dirs = folder.listFiles(new FileFilter() {
+ @Override
+ public boolean accept(File pathname) {
+ return pathname.isDirectory();
+ }
+ });
+ for (File dir : dirs) {
+ reallyReadOnly(dir, true);
+ }
+ }
+ }
+
public static void reallyReadOnly(File folder) {
if (!Platform.getOS().equals(Platform.OS_WIN32))
return;
@@ -210,6 +225,21 @@ public abstract class AbstractSharedInstallTest extends AbstractReconcilerTest {
}
}
+ public static void removeReallyReadOnly(File folder, boolean recurse) {
+ removeReallyReadOnly(folder);
+ if (folder.exists() && recurse) {
+ File[] dirs = folder.listFiles(new FileFilter() {
+ @Override
+ public boolean accept(File pathname) {
+ return pathname.isDirectory();
+ }
+ });
+ for (File dir : dirs) {
+ removeReallyReadOnly(dir, true);
+ }
+ }
+ }
+
public static void removeReallyReadOnly(File folder) {
if (!Platform.getOS().equals(Platform.OS_WIN32))
return;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/BundlesTxtTestExtendedConfigured.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/BundlesTxtTestExtendedConfigured.java
index 2e08c5467..c75bb75ac 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/BundlesTxtTestExtendedConfigured.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/BundlesTxtTestExtendedConfigured.java
@@ -29,7 +29,7 @@ public class BundlesTxtTestExtendedConfigured extends BundlesTxtTestExtended {
Activator.EXTENSIONS = testData.toString();
System.setProperty("p2.fragments", Activator.EXTENSIONS);
AbstractSharedInstallTest.setReadOnly(testData, true);
- AbstractSharedInstallTest.reallyReadOnly(testData);
+ AbstractSharedInstallTest.reallyReadOnly(testData, true);
}
@Override
@@ -45,7 +45,7 @@ public class BundlesTxtTestExtendedConfigured extends BundlesTxtTestExtended {
@Override
protected void tearDown() throws Exception {
Activator.EXTENSIONS = null;
- AbstractSharedInstallTest.removeReallyReadOnly(testData);
+ AbstractSharedInstallTest.removeReallyReadOnly(testData, true);
AbstractSharedInstallTest.setReadOnly(testData, false);
testData.delete();
super.tearDown();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorTests.java
index ece7ba749..4eccacd1f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorTests.java
@@ -10,7 +10,6 @@ package org.eclipse.equinox.p2.tests.simpleconfigurator;
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.eclipse.equinox.p2.tests.sharedinstall.AbstractSharedInstallTest;
public class SimpleConfiguratorTests {
@@ -21,21 +20,15 @@ public class SimpleConfiguratorTests {
suite.addTestSuite(SimpleConfiguratorTest.class);
suite.addTestSuite(SimpleConfiguratorTestExtended.class);
- if (!AbstractSharedInstallTest.WINDOWS) {
- suite.addTestSuite(SimpleConfiguratorTestExtendedConfigured.class);
- }
+ suite.addTestSuite(SimpleConfiguratorTestExtendedConfigured.class);
suite.addTestSuite(SimpleConfiguratorUtilsTest.class);
suite.addTestSuite(SimpleConfiguratorUtilsExtendedTest.class);
- if (!AbstractSharedInstallTest.WINDOWS) {
- suite.addTestSuite(SimpleConfiguratorUtilsExtendedConfiguredTest.class);
- }
+ suite.addTestSuite(SimpleConfiguratorUtilsExtendedConfiguredTest.class);
suite.addTestSuite(BundlesTxtTest.class);
suite.addTestSuite(BundlesTxtTestExtended.class);
- if (!AbstractSharedInstallTest.WINDOWS) {
- suite.addTestSuite(BundlesTxtTestExtendedConfigured.class);
- }
+ suite.addTestSuite(BundlesTxtTestExtendedConfigured.class);
suite.addTestSuite(NonExclusiveMode.class);
suite.addTestSuite(NonExclusiveModeExtended.class);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorUtilsExtendedConfiguredTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorUtilsExtendedConfiguredTest.java
index efba8732f..814667553 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorUtilsExtendedConfiguredTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/SimpleConfiguratorUtilsExtendedConfiguredTest.java
@@ -33,7 +33,7 @@ public class SimpleConfiguratorUtilsExtendedConfiguredTest extends SimpleConfigu
copy("preparing readonly data", getTestData("simpleconfigurator extensions", "testData/simpleConfiguratorExtendedTest"), testData);
testData = new File(testData, "extensions");
AbstractSharedInstallTest.setReadOnly(testData.getParentFile(), true);
- AbstractSharedInstallTest.reallyReadOnly(testData.getParentFile());
+ AbstractSharedInstallTest.reallyReadOnly(testData.getParentFile(), true);
Activator.EXTENSIONS = testData.toString();
mainBundlesInfo = getTestData("simpleconfigurator extensions - main bundles.info", "testData/simpleConfiguratorExtendedTest/main/bundles.info");
@@ -42,7 +42,7 @@ public class SimpleConfiguratorUtilsExtendedConfiguredTest extends SimpleConfigu
@Override
protected void tearDown() throws Exception {
Activator.EXTENSIONS = null;
- AbstractSharedInstallTest.removeReallyReadOnly(testData.getParentFile());
+ AbstractSharedInstallTest.removeReallyReadOnly(testData.getParentFile(), true);
AbstractSharedInstallTest.setReadOnly(testData.getParentFile(), false);
testData.getParentFile().delete();
super.tearDown();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorTests.java
index 1e22b03f5..c46209f3f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorTests.java
@@ -88,11 +88,6 @@ public class SimpleConfiguratorManipulatorTests extends AbstractProvisioningTest
}
public void testLoadConfigurationExtended() throws Exception {
- // See org.eclipse.equinox.p2.tests.simpleconfigurator.SimpleConfiguratorTests
- if (AbstractSharedInstallTest.WINDOWS) {
- return;
- }
-
// installation info
URI installArea = EquinoxUtils.getInstallLocationURI(TestActivator.getContext());
@@ -108,6 +103,7 @@ public class SimpleConfiguratorManipulatorTests extends AbstractProvisioningTest
File fragDir = getTempFolder();
copy("Copying ..", fragTestData, fragDir);
SharedInstallTests.setReadOnly(fragDir, true);
+ AbstractSharedInstallTest.reallyReadOnly(fragDir, true);
Activator.EXTENDED = true;
Activator.EXTENSIONS = fragDir.getAbsolutePath();
@@ -132,6 +128,7 @@ public class SimpleConfiguratorManipulatorTests extends AbstractProvisioningTest
}
}
+ AbstractSharedInstallTest.removeReallyReadOnly(fragDir, true);
SharedInstallTests.setReadOnly(fragDir, false);
}
}
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
index e5ceced3b..a210530d3 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
@@ -13,6 +13,7 @@ package org.eclipse.equinox.internal.simpleconfigurator.utils;
import java.io.*;
import java.net.*;
+import java.nio.file.Files;
import java.util.*;
import org.eclipse.equinox.internal.simpleconfigurator.Activator;
import org.osgi.framework.Version;
@@ -141,7 +142,7 @@ public class SimpleConfiguratorUtils {
}
if (extension.isDirectory()) {
- if (extension.canWrite()) {
+ if (Files.isWritable(extension.toPath())) {
synchronized (reportedExtensions) {
if (!reportedExtensions.contains(extension)) {
reportedExtensions.add(extension);

Back to the top