Search in sources :

Example 6 with ServerIssue

use of org.sonarsource.sonarlint.core.client.api.connected.ServerIssue in project sonarlint-core by SonarSource.

the class ConnectedCommunityIssueDownloadTest method download_all_issues_not_limited_to_10k.

@Test
public void download_all_issues_not_limited_to_10k() throws IOException {
    engine.update(endpointParams(ORCHESTRATOR), sqHttpClient(), null);
    engine.updateProject(endpointParams(ORCHESTRATOR), sqHttpClient(), PROJECT_KEY, false, null, null);
    engine.downloadServerIssues(endpointParams(ORCHESTRATOR), sqHttpClient(), PROJECT_KEY, false, null, null);
    var file1Issues = engine.getServerIssues(new ProjectBinding(PROJECT_KEY, "", ""), "src/500lines.xoo");
    var file2Issues = engine.getServerIssues(new ProjectBinding(PROJECT_KEY, "", ""), "src/10000lines.xoo");
    // Number of issues is not limited to 10k
    assertThat(file1Issues.size() + file2Issues.size()).isEqualTo(10_500);
    Map<String, ServerIssue> allIssues = new HashMap<>();
    engine.getServerIssues(new ProjectBinding(PROJECT_KEY, "", ""), "src/500lines.xoo").forEach(i -> allIssues.put(i.key(), i));
    engine.getServerIssues(new ProjectBinding(PROJECT_KEY, "", ""), "src/10000lines.xoo").forEach(i -> allIssues.put(i.key(), i));
    assertThat(allIssues).hasSize(10_500);
    assertThat(allIssues.get(wfIssue.getKey()).resolution()).isEqualTo("WONTFIX");
    assertThat(allIssues.get(fpIssue.getKey()).resolution()).isEqualTo("FALSE-POSITIVE");
    assertThat(allIssues.get(overridenSeverityIssue.getKey()).severity()).isEqualTo("BLOCKER");
    assertThat(allIssues.get(overridenTypeIssue.getKey()).type()).isEqualTo("BUG");
    // No hotspots
    assertThat(allIssues.values()).allSatisfy(i -> assertThat(i.type()).isIn("CODE_SMELL", "BUG", "VULNERABILITY"));
}
Also used : ProjectBinding(org.sonarsource.sonarlint.core.client.api.connected.ProjectBinding) HashMap(java.util.HashMap) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) Test(org.junit.Test)

Example 7 with ServerIssue

use of org.sonarsource.sonarlint.core.client.api.connected.ServerIssue in project sonarlint-intellij by SonarSource.

the class ServerIssueUpdaterTest method testDownloadAllServerIssues.

@Test
public void testDownloadAllServerIssues() throws InvalidBindingException {
    List<VirtualFile> files = new LinkedList<>();
    for (int i = 0; i < 10; i++) {
        VirtualFile file = mock(VirtualFile.class);
        String filename = "MyFile" + i + ".txt";
        when(file.getPath()).thenReturn(FileUtil.toSystemIndependentName(projectBaseDir.resolve(filename).toString()));
        files.add(file);
    }
    ServerIssue serverIssue = mock(ServerIssue.class);
    // mock creation of engine / server
    ConnectedSonarLintEngine engine = mock(ConnectedSonarLintEngine.class);
    when(bindingManager.getConnectedEngine()).thenReturn(engine);
    SonarQubeServer server = mock(SonarQubeServer.class);
    when(server.getHostUrl()).thenReturn("http://dummyserver:9000");
    when(bindingManager.getSonarQubeServer()).thenReturn(server);
    // mock issues fetched
    when(engine.getServerIssues(eq(PROJECT_KEY), anyString())).thenReturn(Collections.singletonList(serverIssue));
    // run
    settings.setBindingEnabled(true);
    updater.initComponent();
    updater.fetchAndMatchServerIssues(files, indicator, false);
    verify(issueManager, timeout(3000).times(10)).matchWithServerIssues(any(VirtualFile.class), argThat(issues -> issues.size() == 1));
    verify(engine).downloadServerIssues(any(ServerConfiguration.class), eq(PROJECT_KEY));
    verify(bindingManager).getConnectedEngine();
    verify(console, never()).error(anyString());
    verify(console, never()).error(anyString(), any(Throwable.class));
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) SonarTest(org.sonarlint.intellij.SonarTest) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) VirtualFile(com.intellij.openapi.vfs.VirtualFile) Mock(org.mockito.Mock) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) Mockito.verifyZeroInteractions(org.mockito.Mockito.verifyZeroInteractions) MockitoAnnotations(org.mockito.MockitoAnnotations) Mockito.timeout(org.mockito.Mockito.timeout) InvalidBindingException(org.sonarlint.intellij.exception.InvalidBindingException) SonarQubeServer(org.sonarlint.intellij.config.global.SonarQubeServer) Project(com.intellij.openapi.project.Project) FileUtil(com.intellij.openapi.util.io.FileUtil) LinkedList(java.util.LinkedList) Path(java.nio.file.Path) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) Before(org.junit.Before) IssueManager(org.sonarlint.intellij.issue.IssueManager) SonarLintProjectSettings(org.sonarlint.intellij.config.project.SonarLintProjectSettings) SonarApplication(org.sonarlint.intellij.SonarApplication) IOException(java.io.IOException) Test(org.junit.Test) ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) SonarLintConsole(org.sonarlint.intellij.ui.SonarLintConsole) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) Mockito.never(org.mockito.Mockito.never) Rule(org.junit.Rule) Collections(java.util.Collections) TemporaryFolder(org.junit.rules.TemporaryFolder) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Mockito.mock(org.mockito.Mockito.mock) ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) SonarQubeServer(org.sonarlint.intellij.config.global.SonarQubeServer) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) LinkedList(java.util.LinkedList) SonarTest(org.sonarlint.intellij.SonarTest) Test(org.junit.Test)

Example 8 with ServerIssue

use of org.sonarsource.sonarlint.core.client.api.connected.ServerIssue in project sonarlint-intellij by SonarSource.

the class ServerIssueUpdaterTest method testServerIssueTracking.

@Test
public void testServerIssueTracking() throws InvalidBindingException {
    VirtualFile file = mock(VirtualFile.class);
    ServerIssue serverIssue = mock(ServerIssue.class);
    String filename = "MyFile.txt";
    when(file.getPath()).thenReturn(FileUtil.toSystemIndependentName(projectBaseDir.resolve(filename).toString()));
    // mock creation of engine / server
    ConnectedSonarLintEngine engine = mock(ConnectedSonarLintEngine.class);
    when(bindingManager.getConnectedEngine()).thenReturn(engine);
    SonarQubeServer server = mock(SonarQubeServer.class);
    when(server.getHostUrl()).thenReturn("http://dummyserver:9000");
    when(bindingManager.getSonarQubeServer()).thenReturn(server);
    // mock issues downloaded
    when(engine.downloadServerIssues(any(ServerConfiguration.class), eq(PROJECT_KEY), eq(filename))).thenReturn(Collections.singletonList(serverIssue));
    // run
    settings.setBindingEnabled(true);
    updater.initComponent();
    updater.fetchAndMatchServerIssues(Collections.singletonList(file), indicator, false);
    verify(issueManager, timeout(3000).times(1)).matchWithServerIssues(eq(file), argThat(issues -> issues.size() == 1));
    verify(bindingManager).getConnectedEngine();
    verify(console, never()).error(anyString());
    verify(console, never()).error(anyString(), any(Throwable.class));
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) SonarTest(org.sonarlint.intellij.SonarTest) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) VirtualFile(com.intellij.openapi.vfs.VirtualFile) Mock(org.mockito.Mock) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) Mockito.verifyZeroInteractions(org.mockito.Mockito.verifyZeroInteractions) MockitoAnnotations(org.mockito.MockitoAnnotations) Mockito.timeout(org.mockito.Mockito.timeout) InvalidBindingException(org.sonarlint.intellij.exception.InvalidBindingException) SonarQubeServer(org.sonarlint.intellij.config.global.SonarQubeServer) Project(com.intellij.openapi.project.Project) FileUtil(com.intellij.openapi.util.io.FileUtil) LinkedList(java.util.LinkedList) Path(java.nio.file.Path) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) Before(org.junit.Before) IssueManager(org.sonarlint.intellij.issue.IssueManager) SonarLintProjectSettings(org.sonarlint.intellij.config.project.SonarLintProjectSettings) SonarApplication(org.sonarlint.intellij.SonarApplication) IOException(java.io.IOException) Test(org.junit.Test) ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) SonarLintConsole(org.sonarlint.intellij.ui.SonarLintConsole) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) Mockito.never(org.mockito.Mockito.never) Rule(org.junit.Rule) Collections(java.util.Collections) TemporaryFolder(org.junit.rules.TemporaryFolder) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Mockito.mock(org.mockito.Mockito.mock) ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) SonarQubeServer(org.sonarlint.intellij.config.global.SonarQubeServer) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) SonarTest(org.sonarlint.intellij.SonarTest) Test(org.junit.Test)

Aggregations

ServerIssue (org.sonarsource.sonarlint.core.client.api.connected.ServerIssue)8 Test (org.junit.Test)6 Path (java.nio.file.Path)3 HashMap (java.util.HashMap)3 List (java.util.List)3 DefaultServerIssue (org.sonarsource.sonarlint.core.container.model.DefaultServerIssue)3 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)2 Project (com.intellij.openapi.project.Project)2 FileUtil (com.intellij.openapi.util.io.FileUtil)2 VirtualFile (com.intellij.openapi.vfs.VirtualFile)2 IOException (java.io.IOException)2 Collections (java.util.Collections)2 LinkedList (java.util.LinkedList)2 Before (org.junit.Before)2 Rule (org.junit.Rule)2 TemporaryFolder (org.junit.rules.TemporaryFolder)2 ArgumentMatchers.any (org.mockito.ArgumentMatchers.any)2 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)2 ArgumentMatchers.argThat (org.mockito.ArgumentMatchers.argThat)2 ArgumentMatchers.eq (org.mockito.ArgumentMatchers.eq)2