--- old/test/tools/jar/ChangeDir.java 2013-09-17 14:38:50.000000000 -0700 +++ new/test/tools/jar/ChangeDir.java 2013-09-17 14:38:50.000000000 -0700 @@ -40,10 +40,13 @@ private static void cleanup(File dir) throws Throwable { if (dir != null && dir.exists()) { for (File ff : dir.listFiles()) { - check(ff.delete()); + if (ff.isDirectory()) { + cleanup(ff); + } else { + check(ff.delete()); + } } check(dir.delete()); - check(new File(jarName).delete()); } } @@ -62,14 +65,17 @@ } static void doTest(String sep) throws Throwable { - File testDir = null; + File topDir = null; + File jarFile = new File(jarName); JarFile jf = null; try { // Create a subdirectory "a/b" - File f = File.createTempFile("delete", ".me"); - String dirName = f.getParent(); - testDir = new File(dirName + sep + "a" + sep + "b"); + topDir = File.createTempFile("delete", ".me"); + check(topDir.delete()); + + File testDir = new File(topDir.getPath() + sep + "a" + sep + "b"); cleanup(testDir); + jarFile.delete(); check(testDir.mkdirs()); // Create file in that subdirectory @@ -82,7 +88,7 @@ argList.add("cf"); argList.add(jarName); argList.add("-C"); - argList.add(dirName + sep + "a" + sep + sep + "b"); // Note double 'sep' is intentional + argList.add(topDir.getPath() + sep + "a" + sep + sep + "b"); // Note double 'sep' is intentional argList.add(fileName); String jarArgs[] = new String[argList.size()]; jarArgs = argList.toArray(jarArgs); @@ -108,7 +114,8 @@ if (jf != null) { jf.close(); } - cleanup(testDir); + cleanup(topDir); + jarFile.delete(); } }