Skip to content

Commit

Permalink
Add unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nquinquenel committed Sep 30, 2024
1 parent 1d09212 commit c07820b
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ import org.sonarlint.intellij.util.VirtualFileUtils.uriToVirtualFile
import org.sonarsource.sonarlint.core.rpc.protocol.client.hotspot.RaisedHotspotDto
import org.sonarsource.sonarlint.core.rpc.protocol.client.issue.RaisedIssueDto


class AnalysisState(
val id: UUID,
private val analysisCallback: AnalysisCallback,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

import static java.util.stream.Collectors.toSet;

class ModuleAnalysisResult {
public class ModuleAnalysisResult {

private final Set<VirtualFile> failedFiles;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package org.sonarlint.intellij.analysis

import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.vfs.VirtualFile
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.mockito.Mockito
import org.sonarlint.intellij.AbstractSonarLintLightTests
import org.sonarlint.intellij.trigger.TriggerType

class AnalysisStateTests : AbstractSonarLintLightTests() {

private val file1 = Mockito.mock(VirtualFile::class.java)
private val file2 = Mockito.mock(VirtualFile::class.java)
private val callback = Mockito.mock(AnalysisCallback::class.java)
private val progress = Mockito.mock(ProgressIndicator::class.java)

@Test
fun should_find_redundant_analysis_for_non_snapshot() {
val randomUuid1 = java.util.UUID.randomUUID()
val randomUuid2 = java.util.UUID.randomUUID()
val filesToAnalyze = mutableListOf(file1, file2)

val analysisState = AnalysisState(randomUuid1, callback, filesToAnalyze, module, TriggerType.EDITOR_OPEN, progress)
val analysisState2 = AnalysisState(randomUuid2, callback, filesToAnalyze, module, TriggerType.BINDING_UPDATE, progress)

assertThat(analysisState.isRedundant(analysisState2)).isTrue()
assertThat(analysisState2.isRedundant(analysisState)).isTrue()
}

@Test
fun should_find_redundant_analysis_for_snapshot() {
val randomUuid1 = java.util.UUID.randomUUID()
val randomUuid2 = java.util.UUID.randomUUID()
val filesToAnalyze = mutableListOf(file1, file2)

val analysisState = AnalysisState(randomUuid1, callback, filesToAnalyze, module, TriggerType.ALL, progress)
val analysisState2 = AnalysisState(randomUuid2, callback, filesToAnalyze, module, TriggerType.CHANGED_FILES, progress)

assertThat(analysisState.isRedundant(analysisState2)).isTrue()
assertThat(analysisState2.isRedundant(analysisState)).isTrue()
}

@Test
fun should_not_find_redundant_analysis_for_different_types() {
val randomUuid1 = java.util.UUID.randomUUID()
val randomUuid2 = java.util.UUID.randomUUID()
val filesToAnalyze = mutableListOf(file1, file2)

val analysisState = AnalysisState(randomUuid1, callback, filesToAnalyze, module, TriggerType.EDITOR_OPEN, progress)
val analysisState2 = AnalysisState(randomUuid2, callback, filesToAnalyze, module, TriggerType.CHANGED_FILES, progress)

assertThat(analysisState.isRedundant(analysisState2)).isFalse()
assertThat(analysisState2.isRedundant(analysisState)).isFalse()
}

@Test
fun should_not_find_redundant_analysis_with_different_files() {
val randomUuid1 = java.util.UUID.randomUUID()
val randomUuid2 = java.util.UUID.randomUUID()
val filesToAnalyze1 = mutableListOf(file1)
val filesToAnalyze2 = mutableListOf(file2)


val analysisState = AnalysisState(randomUuid1, callback, filesToAnalyze1, module, TriggerType.EDITOR_OPEN, progress)
val analysisState2 = AnalysisState(randomUuid2, callback, filesToAnalyze2, module, TriggerType.EDITOR_CHANGE, progress)

assertThat(analysisState.isRedundant(analysisState2)).isFalse()
assertThat(analysisState2.isRedundant(analysisState)).isFalse()
}

@Test
fun should_find_redundant_analysis_for_subset_files() {
val randomUuid1 = java.util.UUID.randomUUID()
val randomUuid2 = java.util.UUID.randomUUID()
val filesToAnalyze1 = mutableListOf(file1)
val filesToAnalyze2 = mutableListOf(file1, file2)


val analysisState = AnalysisState(randomUuid1, callback, filesToAnalyze1, module, TriggerType.EDITOR_OPEN, progress)
val analysisState2 = AnalysisState(randomUuid2, callback, filesToAnalyze2, module, TriggerType.EDITOR_CHANGE, progress)

assertThat(analysisState.isRedundant(analysisState2)).isTrue()
assertThat(analysisState2.isRedundant(analysisState)).isFalse()
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
Expand All @@ -61,7 +60,6 @@
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;

@Disabled
class AnalysisTests extends AbstractSonarLintLightTests {

private final Set<VirtualFile> filesToAnalyze = new HashSet<>();
Expand Down Expand Up @@ -208,7 +206,7 @@ void testCancel() {
}

private List<LanguageExtensionPoint<?>> getExternalAnnotators() {
ExtensionPoint<LanguageExtensionPoint<?>> extensionPoint = Extensions.getRootArea().getExtensionPoint("com.intellij.externalAnnotator");
ExtensionPoint<@org.jetbrains.annotations.NotNull LanguageExtensionPoint<?>> extensionPoint = Extensions.getRootArea().getExtensionPoint("com.intellij.externalAnnotator");
return extensionPoint.extensions().toList();
}

Expand Down

0 comments on commit c07820b

Please sign in to comment.