diff --git a/java/java-tests/testSrc/com/intellij/psi/PsiDocumentManagerImplTest.java b/java/java-tests/testSrc/com/intellij/psi/PsiDocumentManagerImplTest.java index 09f913884a1a..aaad3fd96aaa 100644 --- a/java/java-tests/testSrc/com/intellij/psi/PsiDocumentManagerImplTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/PsiDocumentManagerImplTest.java @@ -1,3 +1,18 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.intellij.psi; import com.intellij.ide.impl.ProjectUtil; @@ -219,8 +234,10 @@ public class PsiDocumentManagerImplTest extends PlatformTestCase { public void testCommitInBackground() { PsiFile file = getPsiManager().findFile(createFile()); + assertNotNull(file); assertTrue(file.isPhysical()); final Document document = getPsiDocumentManager().getDocument(file); + assertNotNull(document); final Semaphore semaphore = new Semaphore(); semaphore.down(); @@ -231,7 +248,7 @@ public class PsiDocumentManagerImplTest extends PlatformTestCase { semaphore.up(); } }); - waitAndPump(semaphore); + waitAndPump(semaphore, 30000); assertTrue(getPsiDocumentManager().isCommitted(document)); ApplicationManager.getApplication().runWriteAction(new Runnable() { @@ -249,7 +266,7 @@ public class PsiDocumentManagerImplTest extends PlatformTestCase { semaphore.up(); } }); - waitAndPump(semaphore); + waitAndPump(semaphore, 30000); assertTrue(getPsiDocumentManager().isCommitted(document)); final AtomicInteger count = new AtomicInteger(); @@ -298,10 +315,13 @@ public class PsiDocumentManagerImplTest extends PlatformTestCase { assertEquals(2, count.get()); } - private static void waitAndPump(Semaphore semaphore) { - while (!semaphore.waitFor(10)) { + private static void waitAndPump(Semaphore semaphore, int timeout) { + final long limit = System.currentTimeMillis() + timeout; + while (System.currentTimeMillis() < limit) { + if (semaphore.waitFor(10)) return; UIUtil.dispatchAllInvocationEvents(); } + fail("Timeout"); } public void testDocumentFromAlienProjectGetsCommittedInBackground() throws Exception {