Skip to content

Commit a303cb0

Browse files
committed
Fix FileUtilsTest for Windows
We used POSIX paths which Windows (like so many other sane things) cannot really grok. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
1 parent ab39e5f commit a303cb0

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

src/test/java/org/scijava/util/FileUtilsTest.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
* @author Grant Harris
5555
*/
5656
public class FileUtilsTest {
57+
private final static boolean isWindows =
58+
System.getProperty("os.name").startsWith("Win");
5759

5860
@Test
5961
public void testGetPath() {
@@ -81,34 +83,40 @@ public void testGetExtension() {
8183
@Test
8284
public void testURLToFile() throws MalformedURLException {
8385
// verify that 'file:' URL works
84-
final String filePath = "/Users/jqpublic/imagej/ImageJ.class";
85-
final String fileURL = "file:" + filePath;
86+
final String jqpublic;
87+
if (isWindows) {
88+
jqpublic = "C:/Users/jqpublic/";
89+
} else {
90+
jqpublic = "/Users/jqpublic/";
91+
}
92+
final String filePath = jqpublic + "imagej/ImageJ.class";
93+
final String fileURL = new File(filePath).toURI().toURL().toString();
8694
final File fileFile = FileUtils.urlToFile(fileURL);
87-
assertEquals(filePath, fileFile.getPath());
95+
assertEqualsPath(filePath, fileFile.getPath());
8896

8997
// verify that file path with spaces works
9098
final File spaceFileOriginal =
91-
new File("/Users/Spaceman Spiff/stun/Blaster.class");
99+
new File(jqpublic.replace("jqpublic", "Spaceman Spiff") + "stun/Blaster.class");
92100
final URL spaceURL = spaceFileOriginal.toURI().toURL();
93101
final File spaceFileResult = FileUtils.urlToFile(spaceURL);
94-
assertEquals(spaceFileOriginal.getPath(), spaceFileResult.getPath());
102+
assertEqualsPath(spaceFileOriginal.getPath(), spaceFileResult.getPath());
95103

96104
// verify that file path with various characters works
97105
final String alphaLo = "abcdefghijklmnopqrstuvwxyz";
98106
final String alphaHi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
99107
final String numbers = "1234567890";
100108
final String special = "_~!@#$%^&*()+`-=";
101-
final File specialFileOriginal = new File("/Users/" + alphaLo + "/" +
109+
final File specialFileOriginal = new File(jqpublic.replace("jqpublic", alphaLo) +
102110
alphaHi + "/" + numbers + "/" + special + "/foo/Bar.class");
103111
final URL specialURL = specialFileOriginal.toURI().toURL();
104112
final File specialFileResult = FileUtils.urlToFile(specialURL);
105-
assertEquals(specialFileOriginal.getPath(), specialFileResult.getPath());
113+
assertEqualsPath(specialFileOriginal.getPath(), specialFileResult.getPath());
106114

107115
// verify that 'jar:' URL works
108116
final String jarPath = "/Users/jqpublic/imagej/ij-core.jar";
109117
final String jarURL = "jar:file:" + jarPath + "!/imagej/ImageJ.class";
110118
final File jarFile = FileUtils.urlToFile(jarURL);
111-
assertEquals(jarPath, jarFile.getPath());
119+
assertEqualsPath(jarPath, jarFile.getPath());
112120

113121
// verify that OSGi 'bundleresource:' URL fails
114122
final String bundleURL =
@@ -185,4 +193,12 @@ public void testListContents() {
185193
}
186194
}
187195

196+
private static void assertEqualsPath(final String a, final String b) {
197+
if (isWindows) {
198+
assertEquals(a.replace('\\', '/'), b.replace('\\', '/'));
199+
} else {
200+
assertEquals(a, b);
201+
}
202+
}
203+
188204
}

0 commit comments

Comments
 (0)