Search in sources :

Example 1 with OnDiskTestClientInputFile

use of testutils.OnDiskTestClientInputFile in project sonarlint-core by SonarSource.

the class StandaloneIssueMediumTests method declare_module_should_create_a_module_container_with_loaded_extensions.

@Test
void declare_module_should_create_a_module_container_with_loaded_extensions() throws Exception {
    sonarlint.declareModule(new ClientModuleInfo("key", aClientFileSystemWith(new OnDiskTestClientInputFile(Paths.get("main.py"), "main.py", false, StandardCharsets.UTF_8, null)))).get();
    ComponentContainer moduleContainer = sonarlint.getAnalysisEngine().getModuleRegistry().getContainerFor("key");
    assertThat(moduleContainer).isNotNull();
    assertThat(moduleContainer.getComponentsByType(SonarLintModuleFileSystem.class)).isNotEmpty();
}
Also used : OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) ComponentContainer(org.sonarsource.sonarlint.core.plugin.commons.pico.ComponentContainer) ClientModuleInfo(org.sonarsource.sonarlint.core.analysis.api.ClientModuleInfo) Test(org.junit.jupiter.api.Test)

Example 2 with OnDiskTestClientInputFile

use of testutils.OnDiskTestClientInputFile in project sonarlint-core by SonarSource.

the class StandaloneIssueMediumTests method lazy_init_file_metadata.

@Test
void lazy_init_file_metadata() throws Exception {
    final var inputFile1 = prepareInputFile(A_JAVA_FILE_PATH, "public class Foo {\n" + "  public void foo() {\n" + "    int x;\n" + "    System.out.println(\"Foo\");\n" + "    System.out.println(\"Foo\"); //NOSONAR\n" + "  }\n" + "}", false);
    var unexistingPath = new File(baseDir, "missing.bin");
    assertThat(unexistingPath).doesNotExist();
    ClientInputFile inputFile2 = new OnDiskTestClientInputFile(unexistingPath.toPath(), "missing.bin", false, StandardCharsets.UTF_8, null);
    final List<Issue> issues = new ArrayList<>();
    final List<String> logs = new CopyOnWriteArrayList<>();
    var analysisResults = sonarlint.analyze(StandaloneAnalysisConfiguration.builder().setBaseDir(baseDir.toPath()).addInputFiles(inputFile1, inputFile2).build(), issues::add, (m, l) -> logs.add(m), null);
    assertThat(analysisResults.failedAnalysisFiles()).isEmpty();
    assertThat(analysisResults.indexedFileCount()).isEqualTo(2);
    assertThat(logs).contains("Initializing metadata of file " + inputFile1.uri()).doesNotContain("Initializing metadata of file " + inputFile2.uri());
}
Also used : Issue(org.sonarsource.sonarlint.core.client.api.common.analysis.Issue) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) ClientInputFile(org.sonarsource.sonarlint.core.analysis.api.ClientInputFile) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) ClientInputFile(org.sonarsource.sonarlint.core.analysis.api.ClientInputFile) File(java.io.File) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Test(org.junit.jupiter.api.Test)

Example 3 with OnDiskTestClientInputFile

use of testutils.OnDiskTestClientInputFile in project sonarlint-core by SonarSource.

the class StandaloneIssueMediumTests method useRelativePathToEvaluatePathPatterns.

// SLCORE-162
@Test
void useRelativePathToEvaluatePathPatterns() throws Exception {
    // Temporary file doesn't have the correct file suffix
    final var file = new File(baseDir, "foo.tmp");
    FileUtils.write(file, "def my_function(name):\n" + "    print \"Hello\"\n" + "    print \"world!\" # NOSONAR\n" + "\n", StandardCharsets.UTF_8);
    ClientInputFile inputFile = new OnDiskTestClientInputFile(file.toPath(), "foo.py", false, StandardCharsets.UTF_8, null);
    final List<Issue> issues = new ArrayList<>();
    sonarlint.analyze(StandaloneAnalysisConfiguration.builder().setBaseDir(baseDir.toPath()).addInputFile(inputFile).build(), issues::add, null, null);
    assertThat(issues).extracting(Issue::getRuleKey, Issue::getStartLine, i -> i.getInputFile().relativePath()).containsOnly(tuple("python:PrintStatementUsage", 2, "foo.py"));
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Language(org.sonarsource.sonarlint.core.commons.Language) Disabled(org.junit.jupiter.api.Disabled) StandaloneSonarLintEngineImpl(org.sonarsource.sonarlint.core.StandaloneSonarLintEngineImpl) AfterAll(org.junit.jupiter.api.AfterAll) Future(java.util.concurrent.Future) Collections.singleton(java.util.Collections.singleton) BeforeAll(org.junit.jupiter.api.BeforeAll) Map(java.util.Map) Path(java.nio.file.Path) EnumSet(java.util.EnumSet) Collection(java.util.Collection) Set(java.util.Set) StandardCharsets(java.nio.charset.StandardCharsets) Executors(java.util.concurrent.Executors) StandaloneAnalysisConfiguration(org.sonarsource.sonarlint.core.client.api.standalone.StandaloneAnalysisConfiguration) Test(org.junit.jupiter.api.Test) List(java.util.List) TempDir(org.junit.jupiter.api.io.TempDir) Issue(org.sonarsource.sonarlint.core.client.api.common.analysis.Issue) ComponentContainer(org.sonarsource.sonarlint.core.plugin.commons.pico.ComponentContainer) PluginLocator(org.sonarsource.sonarlint.core.util.PluginLocator) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Assertions.fail(org.junit.jupiter.api.Assertions.fail) HashMap(java.util.HashMap) TestUtils(testutils.TestUtils) ArrayList(java.util.ArrayList) SonarLintModuleFileSystem(org.sonarsource.sonarlint.core.analysis.sonarapi.SonarLintModuleFileSystem) Charset(java.nio.charset.Charset) StandaloneGlobalConfiguration(org.sonarsource.sonarlint.core.client.api.standalone.StandaloneGlobalConfiguration) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) Assumptions.assumeTrue(org.junit.jupiter.api.Assumptions.assumeTrue) Nullable(javax.annotation.Nullable) ClientModuleInfo(org.sonarsource.sonarlint.core.analysis.api.ClientModuleInfo) Files(java.nio.file.Files) RuleDetails(org.sonarsource.sonarlint.core.client.api.common.RuleDetails) Assertions.tuple(org.assertj.core.api.Assertions.tuple) SystemUtils(org.apache.commons.lang3.SystemUtils) ClientInputFile(org.sonarsource.sonarlint.core.analysis.api.ClientInputFile) ClientFileSystemFixtures.aClientFileSystemWith(org.sonarsource.sonarlint.core.client.api.common.ClientFileSystemFixtures.aClientFileSystemWith) IOException(java.io.IOException) FileUtils(org.apache.commons.io.FileUtils) Assertions.entry(org.assertj.core.api.Assertions.entry) File(java.io.File) ExecutionException(java.util.concurrent.ExecutionException) Paths(java.nio.file.Paths) RuleKey(org.sonarsource.sonarlint.core.client.api.common.RuleKey) Collections(java.util.Collections) NodeJsHelper(org.sonarsource.sonarlint.core.NodeJsHelper) Issue(org.sonarsource.sonarlint.core.client.api.common.analysis.Issue) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) ClientInputFile(org.sonarsource.sonarlint.core.analysis.api.ClientInputFile) OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) ClientInputFile(org.sonarsource.sonarlint.core.analysis.api.ClientInputFile) File(java.io.File) Test(org.junit.jupiter.api.Test)

Example 4 with OnDiskTestClientInputFile

use of testutils.OnDiskTestClientInputFile in project sonarlint-core by SonarSource.

the class ConnectedIssueMediumTests method stop_module_should_stop_the_module_container.

@Test
void stop_module_should_stop_the_module_container() throws Exception {
    sonarlint.declareModule(new ClientModuleInfo("key", aClientFileSystemWith(new OnDiskTestClientInputFile(Paths.get("main.py"), "main.py", false, StandardCharsets.UTF_8, null)))).get();
    ComponentContainer moduleContainer = sonarlint.getAnalysisEngine().getModuleRegistry().getContainerFor("key");
    sonarlint.stopModule("key").get();
    assertThat(moduleContainer.getPicoContainer().getLifecycleState().isStarted()).isFalse();
}
Also used : OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) ComponentContainer(org.sonarsource.sonarlint.core.plugin.commons.pico.ComponentContainer) ClientModuleInfo(org.sonarsource.sonarlint.core.analysis.api.ClientModuleInfo) Test(org.junit.jupiter.api.Test)

Example 5 with OnDiskTestClientInputFile

use of testutils.OnDiskTestClientInputFile in project sonarlint-core by SonarSource.

the class ConnectedIssueMediumTests method declare_module_should_create_a_module_container_with_loaded_extensions.

@Test
void declare_module_should_create_a_module_container_with_loaded_extensions() throws Exception {
    sonarlint.declareModule(new ClientModuleInfo("key", aClientFileSystemWith(new OnDiskTestClientInputFile(Paths.get("main.py"), "main.py", false, StandardCharsets.UTF_8, null)))).get();
    ComponentContainer moduleContainer = sonarlint.getAnalysisEngine().getModuleRegistry().getContainerFor("key");
    assertThat(moduleContainer).isNotNull();
    assertThat(moduleContainer.getComponentsByType(SonarLintModuleFileSystem.class)).isNotEmpty();
}
Also used : OnDiskTestClientInputFile(testutils.OnDiskTestClientInputFile) ComponentContainer(org.sonarsource.sonarlint.core.plugin.commons.pico.ComponentContainer) ClientModuleInfo(org.sonarsource.sonarlint.core.analysis.api.ClientModuleInfo) Test(org.junit.jupiter.api.Test)

Aggregations

Test (org.junit.jupiter.api.Test)14 OnDiskTestClientInputFile (testutils.OnDiskTestClientInputFile)14 ClientInputFile (org.sonarsource.sonarlint.core.analysis.api.ClientInputFile)9 ClientModuleInfo (org.sonarsource.sonarlint.core.analysis.api.ClientModuleInfo)5 ComponentContainer (org.sonarsource.sonarlint.core.plugin.commons.pico.ComponentContainer)5 InputFile (org.sonar.api.batch.fs.InputFile)4 SonarLintInputFile (org.sonarsource.sonarlint.core.analysis.container.analysis.filesystem.SonarLintInputFile)3 File (java.io.File)2 IOException (java.io.IOException)2 StandardCharsets (java.nio.charset.StandardCharsets)2 Files (java.nio.file.Files)2 Path (java.nio.file.Path)2 Paths (java.nio.file.Paths)2 ArrayList (java.util.ArrayList)2 Collections (java.util.Collections)2 List (java.util.List)2 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)2 BeforeEach (org.junit.jupiter.api.BeforeEach)2 Issue (org.sonarsource.sonarlint.core.client.api.common.analysis.Issue)2 BufferedReader (java.io.BufferedReader)1