Search in sources :

Example 6 with StorageReader

use of org.sonarsource.sonarlint.core.container.storage.StorageReader in project sonarlint-core by SonarSource.

the class ConnectedFileExclusionsMediumTest method fileInclusionsExclusions.

@Test
public void fileInclusionsExclusions() throws Exception {
    ClientInputFile mainFile1 = prepareInputFile("foo.xoo", "function xoo() {}", false);
    ClientInputFile mainFile2 = prepareInputFile("src/foo2.xoo", "function xoo() {}", false);
    ClientInputFile testFile1 = prepareInputFile("fooTest.xoo", "function xoo() {}", true);
    ClientInputFile testFile2 = prepareInputFile("test/foo2Test.xoo", "function xoo() {}", true);
    StoragePaths storagePaths = sonarlint.getGlobalContainer().getComponentByType(StoragePaths.class);
    StorageReader storageReader = sonarlint.getGlobalContainer().getComponentByType(StorageReader.class);
    ModuleConfiguration originalModuleConfig = storageReader.readModuleConfig(MODULE_KEY);
    int result = count(mainFile1, mainFile2, testFile1, testFile2);
    assertThat(result).isEqualTo(4);
    updateModuleConfig(storagePaths, originalModuleConfig, ImmutableMap.of("sonar.inclusions", "src/**"));
    result = count(mainFile1, mainFile2, testFile1, testFile2);
    assertThat(result).isEqualTo(3);
    updateModuleConfig(storagePaths, originalModuleConfig, ImmutableMap.of("sonar.inclusions", "file:**/src/**"));
    result = count(mainFile1, mainFile2, testFile1, testFile2);
    assertThat(result).isEqualTo(3);
    updateModuleConfig(storagePaths, originalModuleConfig, ImmutableMap.of("sonar.exclusions", "src/**"));
    result = count(mainFile1, mainFile2, testFile1, testFile2);
    assertThat(result).isEqualTo(3);
    updateModuleConfig(storagePaths, originalModuleConfig, ImmutableMap.of("sonar.test.inclusions", "test/**"));
    result = count(mainFile1, mainFile2, testFile1, testFile2);
    assertThat(result).isEqualTo(3);
    updateModuleConfig(storagePaths, originalModuleConfig, ImmutableMap.of("sonar.test.exclusions", "test/**"));
    result = count(mainFile1, mainFile2, testFile1, testFile2);
    assertThat(result).isEqualTo(3);
    updateModuleConfig(storagePaths, originalModuleConfig, ImmutableMap.of("sonar.inclusions", "file:**/src/**", "sonar.test.exclusions", "**/*Test.*"));
    result = count(mainFile1, mainFile2, testFile1, testFile2);
    assertThat(result).isEqualTo(1);
}
Also used : StorageReader(org.sonarsource.sonarlint.core.container.storage.StorageReader) ModuleConfiguration(org.sonarsource.sonarlint.core.proto.Sonarlint.ModuleConfiguration) ClientInputFile(org.sonarsource.sonarlint.core.client.api.common.analysis.ClientInputFile) StoragePaths(org.sonarsource.sonarlint.core.container.storage.StoragePaths) Test(org.junit.Test)

Example 7 with StorageReader

use of org.sonarsource.sonarlint.core.container.storage.StorageReader in project sonarlint-core by SonarSource.

the class ConnectedIssueExclusionsMediumTest method prepare.

@BeforeClass
public static void prepare() throws Exception {
    Path slHome = temp.newFolder().toPath();
    Path pluginCache = slHome.resolve("plugins");
    /*
     * This storage contains one server id "local" and two modules: "test-project" (with an empty QP) and "test-project-2" (with default QP)
     */
    Path storage = Paths.get(ConnectedIssueExclusionsMediumTest.class.getResource("/sample-storage").toURI());
    Path tmpStorage = slHome.resolve("storage");
    FileUtils.copyDirectory(storage.toFile(), tmpStorage.toFile());
    PluginCache cache = PluginCache.create(pluginCache);
    PluginReferences.Builder builder = PluginReferences.newBuilder();
    builder.addReference(PluginReference.newBuilder().setFilename(PluginLocator.SONAR_JAVA_PLUGIN_JAR).setHash(PluginLocator.SONAR_JAVA_PLUGIN_JAR_HASH).setKey("java").build());
    cache.get(PluginLocator.SONAR_JAVA_PLUGIN_JAR, PluginLocator.SONAR_JAVA_PLUGIN_JAR_HASH, (filename, target) -> FileUtils.copyURLToFile(PluginLocator.getJavaPluginUrl(), target.toFile()));
    ProtobufUtil.writeToFile(builder.build(), tmpStorage.resolve("local").resolve("global").resolve(StoragePaths.PLUGIN_REFERENCES_PB));
    // update versions in test storage and create an empty stale module storage
    writeModuleStatus(tmpStorage, "test-project", VersionUtils.getLibraryVersion());
    writeModuleStatus(tmpStorage, JAVA_MODULE_KEY, VersionUtils.getLibraryVersion());
    writeStatus(tmpStorage, VersionUtils.getLibraryVersion());
    ConnectedGlobalConfiguration config = ConnectedGlobalConfiguration.builder().setServerId("local").setSonarLintUserHome(slHome).setStorageRoot(tmpStorage).setLogOutput(createNoOpLogOutput()).build();
    sonarlint = new ConnectedSonarLintEngineImpl(config);
    storagePaths = sonarlint.getGlobalContainer().getComponentByType(StoragePaths.class);
    storageReader = sonarlint.getGlobalContainer().getComponentByType(StorageReader.class);
    originalModuleConfig = storageReader.readModuleConfig(JAVA_MODULE_KEY);
    baseDir = temp.newFolder();
}
Also used : Path(java.nio.file.Path) PluginReferences(org.sonarsource.sonarlint.core.proto.Sonarlint.PluginReferences) StorageReader(org.sonarsource.sonarlint.core.container.storage.StorageReader) ConnectedSonarLintEngineImpl(org.sonarsource.sonarlint.core.ConnectedSonarLintEngineImpl) PluginCache(org.sonarsource.sonarlint.core.plugin.cache.PluginCache) ConnectedGlobalConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ConnectedGlobalConfiguration) StoragePaths(org.sonarsource.sonarlint.core.container.storage.StoragePaths) BeforeClass(org.junit.BeforeClass)

Example 8 with StorageReader

use of org.sonarsource.sonarlint.core.container.storage.StorageReader in project sonarlint-core by SonarSource.

the class ModuleStorageUpdateExecutorTest method module_update.

@Test
public void module_update() throws Exception {
    File destDir = temp.newFolder();
    QProfiles.Builder builder = QProfiles.newBuilder();
    builder.putQprofilesByKey("cs-sonar-way-58886", QProfiles.QProfile.newBuilder().build());
    builder.putQprofilesByKey("java-empty-74333", QProfiles.QProfile.newBuilder().build());
    builder.putQprofilesByKey("js-sonar-way-60746", QProfiles.QProfile.newBuilder().build());
    builder.putQprofilesByKey("xoo2-basic-34035", QProfiles.QProfile.newBuilder().build());
    when(storageReader.readQProfiles()).thenReturn(builder.build());
    when(storagePaths.getModuleStorageRoot(MODULE_KEY_WITH_BRANCH)).thenReturn(destDir.toPath());
    moduleUpdate = new ModuleStorageUpdateExecutor(storageReader, storagePaths, wsClient, (key) -> Collections.emptyList(), issueStoreFactory, tempFolder, moduleConfigurationDownloader);
    moduleUpdate.update(MODULE_KEY_WITH_BRANCH, new ProgressWrapper(null));
    ModuleConfiguration moduleConfiguration = ProtobufUtil.readFile(destDir.toPath().resolve(StoragePaths.MODULE_CONFIGURATION_PB), ModuleConfiguration.parser());
    assertThat(moduleConfiguration.getQprofilePerLanguage()).containsOnly(entry("cs", "cs-sonar-way-58886"), entry("java", "java-empty-74333"), entry("js", "js-sonar-way-60746"));
    assertThat(moduleConfiguration.getModulePathByKey()).containsOnly(entry(MODULE_KEY_WITH_BRANCH, ""), entry(MODULE_KEY_WITH_BRANCH + "child1", "child 1"));
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Arrays(java.util.Arrays) SonarLintWsClient(org.sonarsource.sonarlint.core.container.connected.SonarLintWsClient) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) IssueStoreFactory(org.sonarsource.sonarlint.core.container.connected.IssueStoreFactory) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) RunWith(org.junit.runner.RunWith) Parameters(org.junit.runners.Parameterized.Parameters) HashMap(java.util.HashMap) StoragePaths(org.sonarsource.sonarlint.core.container.storage.StoragePaths) Map(java.util.Map) QProfiles(org.sonarsource.sonarlint.core.proto.Sonarlint.QProfiles) Path(java.nio.file.Path) ExpectedException(org.junit.rules.ExpectedException) ModuleConfigurationDownloader(org.sonarsource.sonarlint.core.container.connected.update.ModuleConfigurationDownloader) Nullable(javax.annotation.Nullable) Parameterized(org.junit.runners.Parameterized) TempFolder(org.sonar.api.utils.TempFolder) Before(org.junit.Before) IssueStore(org.sonarsource.sonarlint.core.container.connected.IssueStore) GlobalProperties(org.sonarsource.sonarlint.core.proto.Sonarlint.GlobalProperties) ProgressWrapper(org.sonarsource.sonarlint.core.util.ProgressWrapper) ModuleQualityProfilesDownloader(org.sonarsource.sonarlint.core.container.connected.update.ModuleQualityProfilesDownloader) IssueDownloader(org.sonarsource.sonarlint.core.container.connected.update.IssueDownloader) SettingsDownloader(org.sonarsource.sonarlint.core.container.connected.update.SettingsDownloader) StorageReader(org.sonarsource.sonarlint.core.container.storage.StorageReader) ProtobufUtilTest.newEmptyStream(org.sonarsource.sonarlint.core.container.storage.ProtobufUtilTest.newEmptyStream) IOException(java.io.IOException) Test(org.junit.Test) WsClientTestUtils(org.sonarsource.sonarlint.core.WsClientTestUtils) ModuleConfiguration(org.sonarsource.sonarlint.core.proto.Sonarlint.ModuleConfiguration) Mockito.when(org.mockito.Mockito.when) ScannerInput(org.sonar.scanner.protocol.input.ScannerInput) Assertions.entry(org.assertj.core.api.Assertions.entry) File(java.io.File) InMemoryIssueStore(org.sonarsource.sonarlint.core.container.connected.InMemoryIssueStore) Rule(org.junit.Rule) StringUtils(org.sonarsource.sonarlint.core.util.StringUtils) ProtobufUtil(org.sonarsource.sonarlint.core.container.storage.ProtobufUtil) IssueUtils.createFileKey(org.sonarsource.sonarlint.core.container.connected.update.IssueUtils.createFileKey) ModuleHierarchyDownloader(org.sonarsource.sonarlint.core.container.connected.update.ModuleHierarchyDownloader) ServerInfos(org.sonarsource.sonarlint.core.proto.Sonarlint.ServerInfos) Collections(java.util.Collections) TemporaryFolder(org.junit.rules.TemporaryFolder) Mockito.mock(org.mockito.Mockito.mock) ProgressWrapper(org.sonarsource.sonarlint.core.util.ProgressWrapper) ModuleConfiguration(org.sonarsource.sonarlint.core.proto.Sonarlint.ModuleConfiguration) File(java.io.File) QProfiles(org.sonarsource.sonarlint.core.proto.Sonarlint.QProfiles) Test(org.junit.Test)

Aggregations

StorageReader (org.sonarsource.sonarlint.core.container.storage.StorageReader)8 StoragePaths (org.sonarsource.sonarlint.core.container.storage.StoragePaths)7 Path (java.nio.file.Path)6 Before (org.junit.Before)6 ModuleConfigurationDownloader (org.sonarsource.sonarlint.core.container.connected.update.ModuleConfigurationDownloader)6 File (java.io.File)5 HashMap (java.util.HashMap)5 Test (org.junit.Test)5 TempFolder (org.sonar.api.utils.TempFolder)5 InMemoryIssueStore (org.sonarsource.sonarlint.core.container.connected.InMemoryIssueStore)5 IssueStoreFactory (org.sonarsource.sonarlint.core.container.connected.IssueStoreFactory)5 ModuleHierarchyDownloader (org.sonarsource.sonarlint.core.container.connected.update.ModuleHierarchyDownloader)5 GlobalProperties (org.sonarsource.sonarlint.core.proto.Sonarlint.GlobalProperties)5 ProgressWrapper (org.sonarsource.sonarlint.core.util.ProgressWrapper)5 IOException (java.io.IOException)4 Arrays (java.util.Arrays)4 Collections (java.util.Collections)4 Map (java.util.Map)4 Nullable (javax.annotation.Nullable)4 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)4