# HG changeset patch # User Dmitry Neverov # Date 1375364192 -14400 # Node ID 376e35ed7801900907f3f2e59f77c0cd4dc71191 # Parent eadc7e5c22368477c100af599f71976428ecb6ef finally workaround windows createNewFile bug diff -r eadc7e5c2236 -r 376e35ed7801 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgFileUtil.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgFileUtil.java Thu Aug 01 15:14:04 2013 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgFileUtil.java Thu Aug 01 17:36:32 2013 +0400 @@ -42,18 +42,13 @@ continue; synchronized (getTmpDirLock(tmpDirName)) { - //windows throws an exception (access denied) when one tries to create - //a file and there is a dir with a same name (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6325169) - if (dir.exists()) - continue; try { if (!dir.createNewFile()) continue; } catch (IOException e) { - //one more workaround for http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6325169 - if (SystemInfo.isWindows && "Access is denied".equals(e.getMessage()) && dir.exists()) { + //workaround for http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6325169 + if (SystemInfo.isWindows && "Access is denied".equals(e.getMessage())) continue; - } throw e; } if (!dir.delete()) diff -r eadc7e5c2236 -r 376e35ed7801 mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgFileUtilTest.java --- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgFileUtilTest.java Thu Aug 01 15:14:04 2013 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgFileUtilTest.java Thu Aug 01 17:36:32 2013 +0400 @@ -1,6 +1,7 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial; +import jetbrains.buildServer.util.FileUtil; import jetbrains.buildServer.util.TestFor; import org.testng.annotations.Test; @@ -28,9 +29,6 @@ @TestFor(issues = "TW-30589") public void createTempFile_should_always_return_unique_dir() throws Exception { - if (SystemInfo.isWindows) //disable test on windows due to "access is denied" errors - return; - final CountDownLatch allThreadsInitialized = new CountDownLatch(1); final Set tmpFiles = new HashSet(); Runnable createTmpFile = new Runnable() { @@ -59,5 +57,4 @@ assertEquals("Race condition in createTempDir", threads.size(), tmpFiles.size()); } - }