Search in sources :

Example 31 with MavenJavaProject

use of org.springframework.ide.vscode.commons.maven.java.MavenJavaProject in project sts4 by spring-projects.

the class MavenProjectCacheTest method testErrorLoadingProject.

@Test
public void testErrorLoadingProject() throws Exception {
    Path testProjectPath = Paths.get(DependencyTreeTest.class.getResource("/empty-boot-project-with-classpath-file").toURI());
    Path cacheFolder = testProjectPath.resolve(IJavaProject.PROJECT_CACHE_FOLDER);
    AtomicBoolean progressDone = new AtomicBoolean();
    ProgressService progressService = mock(ProgressService.class);
    doAnswer(new Answer<Void>() {

        @Override
        public Void answer(InvocationOnMock invocation) throws Throwable {
            progressDone.set(true);
            return null;
        }
    }).when(progressService).progressEvent(any(String.class), (String) isNull());
    when(server.getProgressService()).thenReturn(progressService);
    DiagnosticService diagnosticService = mock(DiagnosticService.class);
    when(server.getDiagnosticService()).thenReturn(diagnosticService);
    MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder);
    MavenJavaProject project = cache.project(pomFile);
    assertTrue(project.getClasspath().getClasspathEntries().isEmpty());
    CompletableFuture.runAsync(() -> {
        while (!progressDone.get()) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).get(30, TimeUnit.SECONDS);
    progressDone.set(false);
    verify(diagnosticService, never()).diagnosticEvent(any(ShowMessageException.class));
    writeContent(pomFile, "");
    fileObserver.notifyFileChanged(pomFile.toURI().toString());
    CompletableFuture.runAsync(() -> {
        while (!progressDone.get()) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).get(30, TimeUnit.SECONDS);
    progressDone.set(false);
    verify(diagnosticService, times(1)).diagnosticEvent(any(ShowMessageException.class));
    assertTrue(project.getClasspath().getClasspathEntries().isEmpty());
    assertFalse(cacheFolder.resolve(ClasspathFileBasedCache.CLASSPATH_DATA_CACHE_FILE).toFile().exists());
}
Also used : Path(java.nio.file.Path) ShowMessageException(org.springframework.ide.vscode.commons.languageserver.util.ShowMessageException) DiagnosticService(org.springframework.ide.vscode.commons.languageserver.DiagnosticService) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) MavenProjectCache(org.springframework.ide.vscode.commons.maven.java.MavenProjectCache) InvocationOnMock(org.mockito.invocation.InvocationOnMock) MavenJavaProject(org.springframework.ide.vscode.commons.maven.java.MavenJavaProject) ProgressService(org.springframework.ide.vscode.commons.languageserver.ProgressService) Test(org.junit.Test)

Aggregations

MavenJavaProject (org.springframework.ide.vscode.commons.maven.java.MavenJavaProject)31 Test (org.junit.Test)27 IType (org.springframework.ide.vscode.commons.java.IType)18 IMethod (org.springframework.ide.vscode.commons.java.IMethod)10 IJavadoc (org.springframework.ide.vscode.commons.javadoc.IJavadoc)10 Path (java.nio.file.Path)5 IField (org.springframework.ide.vscode.commons.java.IField)5 File (java.io.File)4 Before (org.junit.Before)4 MockRunningAppProvider (org.springframework.ide.vscode.project.harness.MockRunningAppProvider)4 VSCodeSourceLinks (org.springframework.ide.vscode.boot.java.links.VSCodeSourceLinks)3 MavenProjectCache (org.springframework.ide.vscode.commons.maven.java.MavenProjectCache)3 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)2 InvocationOnMock (org.mockito.invocation.InvocationOnMock)2 ProgressService (org.springframework.ide.vscode.commons.languageserver.ProgressService)2 URI (java.net.URI)1 AbstractPropsEditorTest (org.springframework.ide.vscode.boot.editor.harness.AbstractPropsEditorTest)1 IJavaProject (org.springframework.ide.vscode.commons.java.IJavaProject)1 DiagnosticService (org.springframework.ide.vscode.commons.languageserver.DiagnosticService)1 Listener (org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver.Listener)1