Author: kevj Date: Thu Nov 8 00:18:18 2007 New Revision: 593055 URL: http://svn.apache.org/viewvc?rev=593055&view=rev Log: -createTempFile changes to fix error in hasErrorInCase test
Modified: ant/core/branches/ANT_17_BRANCH/src/main/org/apache/tools/ant/util/FileUtils.java ant/core/branches/ANT_17_BRANCH/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java Modified: ant/core/branches/ANT_17_BRANCH/src/main/org/apache/tools/ant/util/FileUtils.java URL: http://svn.apache.org/viewvc/ant/core/branches/ANT_17_BRANCH/src/main/org/apache/tools/ant/util/FileUtils.java?rev=593055&r1=593054&r2=593055&view=diff ============================================================================== --- ant/core/branches/ANT_17_BRANCH/src/main/org/apache/tools/ant/util/FileUtils.java (original) +++ ant/core/branches/ANT_17_BRANCH/src/main/org/apache/tools/ant/util/FileUtils.java Thu Nov 8 00:18:18 2007 @@ -789,12 +789,8 @@ * <p>The file denoted by the returned abstract pathname did not * exist before this method was invoked, any subsequent invocation * of this method will yield a different file name.</p> - * <p> - * The filename is prefixNNNNNsuffix where NNNN is a random number. - * </p> - * <p>This method is different from File.createTempFile() of JDK 1.2 - * as it doesn't create the file itself. It uses the location pointed - * to by java.io.tmpdir when the parentDir attribute is null.</p> + * + * <p>As of ant 1.8 the file is actually created.</p> * * @param prefix prefix before the random number. * @param suffix file extension; include the '.'. @@ -814,19 +810,15 @@ * <p>The file denoted by the returned abstract pathname did not * exist before this method was invoked, any subsequent invocation * of this method will yield a different file name.</p> - * <p> - * The filename is prefixNNNNNsuffix where NNNN is a random number. - * </p> - * <p>This method is different from File.createTempFile() of JDK 1.2 - * as it doesn't create the file itself. It uses the location pointed - * to by java.io.tmpdir when the parentDir attribute is null.</p> + * + * <p>As of ant 1.8 the file is actually created.</p> * * @param prefix prefix before the random number. * @param suffix file extension; include the '.'. * @param parentDir Directory to create the temporary file in; + * java.io.tmpdir used if not specified. * @param deleteOnExit whether to set the tempfile for deletion on * normal VM exit. - * java.io.tmpdir used if not specified. * * @return a File reference to the new temporary file. * @since Ant 1.7 @@ -837,11 +829,49 @@ String parent = (parentDir == null) ? System.getProperty("java.io.tmpdir") : parentDir.getPath(); + try { + result = File.createTempFile(prefix, suffix, new File(parent)); + } catch (IOException e) { + throw new BuildException("Could not create tempfile in " + parent, e); + } + if (deleteOnExit) { + result.deleteOnExit(); + } + return result; + } + + /** + * Create a File object for a temporary file in a given directory. Without + * actually creating the file. + * + * <p>The file denoted by the returned abstract pathname did not + * exist before this method was invoked, any subsequent invocation + * of this method will yield a different file name.</p> + * <p> + * The filename is prefixNNNNNsuffix where NNNN is a random number. + * </p> + * + * @param prefix prefix before the random number. + * @param suffix file extension; include the '.'. + * @param parentDir Directory to create the temporary file in; + * java.io.tmpdir used if not specified. + * @param deleteOnExit whether to set the tempfile for deletion on + * normal VM exit. + * + * @return a File reference to the new, nonexistent temporary file. + * @since Ant 1.8 + */ + public File createTempFileName(String prefix, String suffix, + File parentDir, boolean deleteOnExit) { + File result = null; + String parent = (parentDir == null) ? System + .getProperty("java.io.tmpdir") : parentDir.getPath(); DecimalFormat fmt = new DecimalFormat("#####"); synchronized (rand) { do { - result = new File(parent, prefix + fmt.format(Math.abs(rand.nextInt())) + suffix); + result = new File(parent, prefix + + fmt.format(Math.abs(rand.nextInt())) + suffix); } while (result.exists()); } if (deleteOnExit) { Modified: ant/core/branches/ANT_17_BRANCH/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java URL: http://svn.apache.org/viewvc/ant/core/branches/ANT_17_BRANCH/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java?rev=593055&r1=593054&r2=593055&view=diff ============================================================================== --- ant/core/branches/ANT_17_BRANCH/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java (original) +++ ant/core/branches/ANT_17_BRANCH/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java Thu Nov 8 00:18:18 2007 @@ -48,7 +48,9 @@ public void tearDown() { if (removeThis != null && removeThis.exists()) { - removeThis.delete(); + if (!removeThis.delete()) { + removeThis.deleteOnExit(); + } } } @@ -333,12 +335,38 @@ assertEquals(f, new File("a").getAbsoluteFile()); } + public void testCreateTempFile() { + // null parent dir + File tmp1 = FILE_UTILS.createTempFile("pre", ".suf", null, false); + String tmploc = System.getProperty("java.io.tmpdir"); + String name = tmp1.getName(); + assertTrue("starts with pre", name.startsWith("pre")); + assertTrue("ends with .suf", name.endsWith(".suf")); + assertTrue("File was created", tmp1.exists()); + assertEquals((new File(tmploc, tmp1.getName())).getAbsolutePath(), + tmp1.getAbsolutePath()); + tmp1.delete(); + + File dir2 = new File(tmploc+"/ant-test"); + dir2.mkdir(); + removeThis = dir2; + + File tmp2 = FILE_UTILS.createTempFile("pre", ".suf", dir2, true); + String name2 = tmp2.getName(); + assertTrue("starts with pre", name2.startsWith("pre")); + assertTrue("ends with .suf", name2.endsWith(".suf")); + assertTrue("File was created", tmp2.exists()); + assertEquals((new File(dir2, tmp2.getName())).getAbsolutePath(), + tmp2.getAbsolutePath()); + tmp2.delete(); + dir2.delete(); + } /** - * Test createTempFile + * Test createTempFileName */ - public void testCreateTempFile() { + public void testCreateTempFileName() { File parent = new File((new File("/tmp")).getAbsolutePath()); - File tmp1 = FILE_UTILS.createTempFile("pre", ".suf", parent); + File tmp1 = FILE_UTILS.createTempFileName("pre", ".suf", parent, false); assertTrue("new file", !tmp1.exists()); String name = tmp1.getName(); @@ -348,12 +376,12 @@ parent.getAbsolutePath(), tmp1.getParent()); - File tmp2 = FILE_UTILS.createTempFile("pre", ".suf", parent); + File tmp2 = FILE_UTILS.createTempFileName("pre", ".suf", parent, false); assertTrue("files are different", !tmp1.getAbsolutePath().equals(tmp2.getAbsolutePath())); // null parent dir - File tmp3 = FILE_UTILS.createTempFile("pre", ".suf", null); + File tmp3 = FILE_UTILS.createTempFileName("pre", ".suf", null, false); String tmploc = System.getProperty("java.io.tmpdir"); assertEquals((new File(tmploc, tmp3.getName())).getAbsolutePath(), tmp3.getAbsolutePath()); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]