diff options
author | Matteo Mara <matteo.mara@sonarsource.com> | 2023-12-22 10:28:18 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2023-12-22 20:03:00 +0000 |
commit | a0a2140e3079d811a25c2487c55e36b728ab7c6e (patch) | |
tree | a45e6821c8c2be2962096172bd4d6ca1c6f4caf7 /sonar-scanner-engine | |
parent | 565a389c07036f7e55496ff0b2002d9a75e450cf (diff) | |
download | sonarqube-a0a2140e3079d811a25c2487c55e36b728ab7c6e.tar.gz sonarqube-a0a2140e3079d811a25c2487c55e36b728ab7c6e.zip |
Revert "SONAR-21195 Make DefaultLanguagesRepository more suitable for tests"
This reverts commit c7841606b3d4b469177a3426d4c5127b0ebb23cf.
Diffstat (limited to 'sonar-scanner-engine')
-rw-r--r-- | sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java | 10 | ||||
-rw-r--r-- | sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/SpringScannerContainer.java | 9 | ||||
-rw-r--r-- | sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakeLanguagesRepository.java (renamed from sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakeLanguagesLoader.java) | 24 | ||||
-rw-r--r-- | sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesLoader.java | 96 | ||||
-rw-r--r-- | sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesRepository.java | 63 | ||||
-rw-r--r-- | sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/LanguagesLoader.java | 28 | ||||
-rw-r--r-- | sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/language/DefaultLanguagesRepositoryTest.java | 10 | ||||
-rw-r--r-- | sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java | 31 |
8 files changed, 105 insertions, 166 deletions
diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java index 02a06b45f53..1916d3e6d00 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java @@ -106,7 +106,7 @@ public class ScannerMediumTester extends ExternalResource { private final FakeActiveRulesLoader activeRules = new FakeActiveRulesLoader(); private final FakeSonarRuntime sonarRuntime = new FakeSonarRuntime(); private final CeTaskReportDataHolder reportMetadataHolder = new CeTaskReportDataHolderExt(); - private final FakeLanguagesLoader languagesLoader = new FakeLanguagesLoader(); + private final FakeLanguagesRepository languagesRepository = new FakeLanguagesRepository(); private LogOutput logOutput = null; private static void createWorkingDirs() throws IOException { @@ -286,11 +286,11 @@ public class ScannerMediumTester extends ExternalResource { } public void addLanguage(String key, String name, String... suffixes) { - languagesLoader.addLanguage(key, name, suffixes, new String[0]); + languagesRepository.addLanguage(key, name, suffixes, new String[0]); } public void addLanguage(String key, String name, boolean publishAllFiles, String... suffixes) { - languagesLoader.addLanguage(key, name, suffixes, new String[0], publishAllFiles); + languagesRepository.addLanguage(key, name, suffixes, new String[0], publishAllFiles); } public static class AnalysisBuilder { @@ -324,8 +324,8 @@ public class ScannerMediumTester extends ExternalResource { tester.analysisCacheLoader, tester.sonarRuntime, tester.reportMetadataHolder, - tester.languagesLoader, - result); + result, + tester.languagesRepository); if (tester.logOutput != null) { builder.setLogOutput(tester.logOutput); } else { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/SpringScannerContainer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/SpringScannerContainer.java index d36a9a37c84..104e6958eaa 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/SpringScannerContainer.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/SpringScannerContainer.java @@ -85,8 +85,8 @@ import org.sonar.scanner.repository.DefaultQualityProfileLoader; import org.sonar.scanner.repository.ProjectRepositoriesProvider; import org.sonar.scanner.repository.QualityProfilesProvider; import org.sonar.scanner.repository.ReferenceBranchSupplier; -import org.sonar.scanner.repository.language.DefaultLanguagesLoader; import org.sonar.scanner.repository.language.DefaultLanguagesRepository; +import org.sonar.scanner.repository.language.LanguagesRepository; import org.sonar.scanner.repository.settings.DefaultProjectSettingsLoader; import org.sonar.scanner.rule.ActiveRulesProvider; import org.sonar.scanner.rule.DefaultActiveRulesLoader; @@ -302,9 +302,10 @@ public class SpringScannerContainer extends SpringComponentContainer { add(DefaultProjectSettingsLoader.class, DefaultActiveRulesLoader.class, DefaultQualityProfileLoader.class, - DefaultProjectRepositoriesLoader.class, - DefaultLanguagesLoader.class, - DefaultLanguagesRepository.class); + DefaultProjectRepositoriesLoader.class); + + addIfMissing(DefaultLanguagesRepository.class, LanguagesRepository.class); + } static ExtensionMatcher getScannerProjectExtensionsFilter() { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakeLanguagesLoader.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakeLanguagesRepository.java index 15153900f80..7443db29fa3 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakeLanguagesLoader.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakeLanguagesRepository.java @@ -19,31 +19,43 @@ */ package org.sonar.scanner.mediumtest; +import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; import java.util.Map; import javax.annotation.Priority; +import org.jetbrains.annotations.Nullable; import org.sonar.api.resources.Languages; import org.sonar.scanner.repository.language.Language; -import org.sonar.scanner.repository.language.LanguagesLoader; +import org.sonar.scanner.repository.language.LanguagesRepository; import org.sonar.scanner.repository.language.SupportedLanguageDto; @Priority(1) -public class FakeLanguagesLoader implements LanguagesLoader { +public class FakeLanguagesRepository implements LanguagesRepository { private final Map<String, Language> languageMap = new HashMap<>(); - public FakeLanguagesLoader() { + public FakeLanguagesRepository() { languageMap.put("xoo", new Language(new FakeLanguage("xoo", "xoo", new String[] { ".xoo" }, new String[0], true))); } - public FakeLanguagesLoader(Languages languages) { + public FakeLanguagesRepository(Languages languages) { for (org.sonar.api.resources.Language language : languages.all()) { languageMap.put(language.getKey(), new Language(new FakeLanguage(language.getKey(), language.getName(), language.getFileSuffixes(), language.filenamePatterns(), true))); } } + + @Nullable + @Override + public Language get(String languageKey) { + return languageMap.get(languageKey); + } + @Override - public Map<String, Language> load() { - return languageMap; + public Collection<Language> all() { + return languageMap.values().stream() + // sorted for test consistency + .sorted(Comparator.comparing(Language::key)).toList(); } public void addLanguage(String key, String name, String[] suffixes, String[] filenamePatterns) { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesLoader.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesLoader.java deleted file mode 100644 index 91ba3a58248..00000000000 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesLoader.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2023 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.scanner.repository.language; - -import com.google.gson.Gson; -import java.io.Reader; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.sonar.api.config.Configuration; -import org.sonar.scanner.bootstrap.DefaultScannerWsClient; -import org.sonarqube.ws.client.GetRequest; - -public class DefaultLanguagesLoader implements LanguagesLoader { - - private static final Logger LOG = LoggerFactory.getLogger(DefaultLanguagesLoader.class); - private static final String LANGUAGES_WS_URL = "/api/languages/list"; - private static final Map<String, String> PROPERTY_FRAGMENT_MAP = Map.of( - "js", "javascript", - "ts", "typescript", - "py", "python", - "web", "html" - ); - - private final DefaultScannerWsClient wsClient; - - private final Configuration properties; - - public DefaultLanguagesLoader(DefaultScannerWsClient wsClient, Configuration properties) { - this.wsClient = wsClient; - this.properties = properties; - } - - @Override - public Map<String, Language> load() { - GetRequest getRequest = new GetRequest(LANGUAGES_WS_URL); - LanguagesWSResponse response; - try (Reader reader = wsClient.call(getRequest).contentReader()) { - response = new Gson().fromJson(reader, LanguagesWSResponse.class); - } catch (Exception e) { - throw new IllegalStateException("Fail to parse response of " + LANGUAGES_WS_URL, e); - } - - return response.languages.stream() - .map(this::populateFileSuffixesAndPatterns) - .collect(Collectors.toMap(Language::key, Function.identity())); - - } - - private Language populateFileSuffixesAndPatterns(SupportedLanguageDto lang) { - lang.setFileSuffixes(getFileSuffixes(lang.getKey())); - lang.setFilenamePatterns(getFilenamePatterns(lang.getKey())); - if (lang.filenamePatterns() == null && lang.getFileSuffixes() == null) { - LOG.debug("Language '{}' cannot be detected as it has neither suffixes nor patterns.", lang.getName()); - } - return new Language(lang); - } - - - private String[] getFileSuffixes(String languageKey) { - return getPropertyForLanguage("sonar.%s.file.suffixes", languageKey); - } - - private String[] getFilenamePatterns(String languageKey) { - return getPropertyForLanguage("sonar.%s.file.patterns", languageKey); - } - - private String[] getPropertyForLanguage(String propertyPattern, String languageKey) { - String propName = String.format(propertyPattern, PROPERTY_FRAGMENT_MAP.getOrDefault(languageKey, languageKey)); - return properties.getStringArray(propName); - } - - private static class LanguagesWSResponse { - List<SupportedLanguageDto> languages; - } -} diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesRepository.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesRepository.java index f598cdd8817..c3505ebbfbf 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesRepository.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/DefaultLanguagesRepository.java @@ -19,13 +19,23 @@ */ package org.sonar.scanner.repository.language; +import com.google.gson.Gson; +import java.io.Reader; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; import javax.annotation.CheckForNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.annotation.concurrent.Immutable; import org.sonar.api.Startable; +import org.sonar.api.config.Configuration; import org.sonar.api.resources.Languages; +import org.sonar.scanner.bootstrap.DefaultScannerWsClient; +import org.sonarqube.ws.client.GetRequest; /** * Languages repository using {@link Languages} @@ -33,17 +43,59 @@ import org.sonar.api.resources.Languages; */ @Immutable public class DefaultLanguagesRepository implements LanguagesRepository, Startable { + private static final Logger LOG = LoggerFactory.getLogger(DefaultLanguagesRepository.class); + private static final String LANGUAGES_WS_URL = "/api/languages/list"; + private static final Map<String, String> PROPERTY_FRAGMENT_MAP = Map.of( + "js", "javascript", + "ts", "typescript", + "py", "python", + "web", "html" + ); private final Map<String, Language> languages = new HashMap<>(); - private final LanguagesLoader languagesLoader; + private final DefaultScannerWsClient wsClient; + private final Configuration properties; - public DefaultLanguagesRepository(LanguagesLoader languagesLoader) { - this.languagesLoader = languagesLoader; + public DefaultLanguagesRepository(DefaultScannerWsClient wsClient, Configuration properties) { + this.wsClient = wsClient; + this.properties = properties; } @Override public void start() { - languages.putAll(languagesLoader.load()); + GetRequest getRequest = new GetRequest(LANGUAGES_WS_URL); + LanguagesWSResponse response; + try (Reader reader = wsClient.call(getRequest).contentReader()) { + response = new Gson().fromJson(reader, LanguagesWSResponse.class); + } catch (Exception e) { + throw new IllegalStateException("Fail to parse response of " + LANGUAGES_WS_URL, e); + } + + languages.putAll(response.languages.stream() + .map(this::populateFileSuffixesAndPatterns) + .collect(Collectors.toMap(Language::key, Function.identity()))); + } + + private Language populateFileSuffixesAndPatterns(SupportedLanguageDto lang) { + lang.setFileSuffixes(getFileSuffixes(lang.getKey())); + lang.setFilenamePatterns(getFilenamePatterns(lang.getKey())); + if (lang.filenamePatterns() == null && lang.getFileSuffixes() == null) { + LOG.debug("Language '{}' cannot be detected as it has neither suffixes nor patterns.", lang.getName()); + } + return new Language(lang); + } + + private String[] getFileSuffixes(String languageKey) { + return getPropertyForLanguage("sonar.%s.file.suffixes", languageKey); + } + + private String[] getFilenamePatterns(String languageKey) { + return getPropertyForLanguage("sonar.%s.file.patterns", languageKey); + } + + private String[] getPropertyForLanguage(String propertyPattern, String languageKey) { + String propName = String.format(propertyPattern, PROPERTY_FRAGMENT_MAP.getOrDefault(languageKey, languageKey)); + return properties.getStringArray(propName); } /** @@ -68,5 +120,8 @@ public class DefaultLanguagesRepository implements LanguagesRepository, Startabl // nothing to do } + private static class LanguagesWSResponse { + List<SupportedLanguageDto> languages; + } } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/LanguagesLoader.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/LanguagesLoader.java deleted file mode 100644 index 51be98d468c..00000000000 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/language/LanguagesLoader.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2023 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.scanner.repository.language; - -import java.util.Map; - -public interface LanguagesLoader { - - Map<String, Language> load(); - -} diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/language/DefaultLanguagesRepositoryTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/language/DefaultLanguagesRepositoryTest.java index f64fa04cbbe..8671abc0894 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/language/DefaultLanguagesRepositoryTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/language/DefaultLanguagesRepositoryTest.java @@ -26,6 +26,7 @@ import org.junit.Rule; import org.junit.Test; import org.slf4j.event.Level; import org.sonar.api.config.Configuration; +import org.sonar.api.resources.Languages; import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.WsTestUtil; import org.sonar.scanner.bootstrap.DefaultScannerWsClient; @@ -42,10 +43,8 @@ public class DefaultLanguagesRepositoryTest { private final DefaultScannerWsClient wsClient = mock(DefaultScannerWsClient.class); private final Configuration properties = mock(Configuration.class); - private final LanguagesLoader languagesLoader = new DefaultLanguagesLoader(wsClient, properties); - - - private final DefaultLanguagesRepository underTest = new DefaultLanguagesRepository(languagesLoader); + private final Languages languages = mock(Languages.class); + private final DefaultLanguagesRepository underTest = new DefaultLanguagesRepository(wsClient, properties); private static final String[] JAVA_SUFFIXES = new String[] { ".java", ".jav" }; private static final String[] XOO_SUFFIXES = new String[] { ".xoo" }; @@ -67,6 +66,7 @@ public class DefaultLanguagesRepositoryTest { when(properties.getStringArray("sonar.python.file.suffixes")).thenReturn(PYTHON_SUFFIXES); underTest.start(); + underTest.stop(); assertThat(underTest.all()).hasSize(3); assertThat(underTest.get("java")).isNotNull(); @@ -107,6 +107,7 @@ public class DefaultLanguagesRepositoryTest { new InputStreamReader(getClass().getResourceAsStream("DefaultLanguageRepositoryTest/languages-ws.json"))); underTest.start(); + underTest.stop(); assertThat(underTest.get("java").isPublishAllFiles()).isTrue(); assertThat(underTest.get("xoo").isPublishAllFiles()).isTrue(); @@ -121,6 +122,7 @@ public class DefaultLanguagesRepositoryTest { when(properties.getStringArray("sonar.java.file.suffixes")).thenReturn(JAVA_SUFFIXES); underTest.start(); + underTest.stop(); assertThat(underTest.get("java")) .extracting("key", "name", "fileSuffixes", "publishAllFiles") diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java index 2155106ac04..18408451557 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java @@ -35,8 +35,8 @@ import org.sonar.api.config.internal.MapSettings; import org.sonar.api.resources.Language; import org.sonar.api.resources.Languages; import org.sonar.api.utils.MessageException; -import org.sonar.scanner.mediumtest.FakeLanguagesLoader; -import org.sonar.scanner.repository.language.DefaultLanguagesRepository; +import org.sonar.scanner.mediumtest.FakeLanguagesRepository; +import org.sonar.scanner.repository.language.LanguagesRepository; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -77,8 +77,7 @@ public class LanguageDetectionTest { @Test public void detectLanguageKey_shouldDetectByFileExtension() { - DefaultLanguagesRepository languages = new DefaultLanguagesRepository(new FakeLanguagesLoader(new Languages(new MockLanguage("java", "java", "jav"), new MockLanguage("cobol", "cbl", "cob")))); - languages.start(); + LanguagesRepository languages = new FakeLanguagesRepository(new Languages(new MockLanguage("java", "java", "jav"), new MockLanguage("cobol", "cbl", "cob"))); LanguageDetection detection = new LanguageDetection(settings.asConfig(), languages, new HashMap<>()); assertThat(detectLanguageKey(detection, "Foo.java")).isEqualTo("java"); @@ -97,11 +96,10 @@ public class LanguageDetectionTest { @Test @UseDataProvider("filenamePatterns") public void detectLanguageKey_shouldDetectByFileNamePattern(String fileName, String expectedLanguageKey) { - DefaultLanguagesRepository languages = new DefaultLanguagesRepository(new FakeLanguagesLoader(new Languages( + LanguagesRepository languages = new FakeLanguagesRepository(new Languages( new MockLanguage("docker", new String[0], new String[] {"*.dockerfile", "*.Dockerfile", "Dockerfile", "Dockerfile.*"}), new MockLanguage("terraform", new String[] {"tf"}, new String[] {".tf"}), - new MockLanguage("java", new String[0], new String[] {"**/*Test.java"})))); - languages.start(); + new MockLanguage("java", new String[0], new String[] {"**/*Test.java"}))); LanguageDetection detection = new LanguageDetection(settings.asConfig(), languages, new HashMap<>()); assertThat(detectLanguageKey(detection, fileName)).isEqualTo(expectedLanguageKey); } @@ -125,14 +123,13 @@ public class LanguageDetectionTest { @Test public void detectLanguageKey_shouldNotFailIfNoLanguage() { - LanguageDetection detection = spy(new LanguageDetection(settings.asConfig(), new DefaultLanguagesRepository(new FakeLanguagesLoader(new Languages())), new HashMap<>())); + LanguageDetection detection = spy(new LanguageDetection(settings.asConfig(), new FakeLanguagesRepository(new Languages()), new HashMap<>())); assertThat(detectLanguageKey(detection, "Foo.java")).isNull(); } @Test public void detectLanguageKey_shouldAllowPluginsToDeclareFileExtensionTwiceForCaseSensitivity() { - DefaultLanguagesRepository languages = new DefaultLanguagesRepository(new FakeLanguagesLoader(new Languages(new MockLanguage("abap", "abap", "ABAP")))); - languages.start(); + LanguagesRepository languages = new FakeLanguagesRepository(new Languages(new MockLanguage("abap", "abap", "ABAP"))); LanguageDetection detection = new LanguageDetection(settings.asConfig(), languages, new HashMap<>()); assertThat(detectLanguageKey(detection, "abc.abap")).isEqualTo("abap"); @@ -140,8 +137,7 @@ public class LanguageDetectionTest { @Test public void detectLanguageKey_shouldFailIfConflictingLanguageSuffix() { - DefaultLanguagesRepository languages = new DefaultLanguagesRepository(new FakeLanguagesLoader(new Languages(new MockLanguage("xml", "xhtml"), new MockLanguage("web", "xhtml")))); - languages.start(); + LanguagesRepository languages = new FakeLanguagesRepository(new Languages(new MockLanguage("xml", "xhtml"), new MockLanguage("web", "xhtml"))); LanguageDetection detection = new LanguageDetection(settings.asConfig(), languages, new HashMap<>()); assertThatThrownBy(() -> detectLanguageKey(detection, "abc.xhtml")) .isInstanceOf(MessageException.class) @@ -152,8 +148,7 @@ public class LanguageDetectionTest { @Test public void detectLanguageKey_shouldSolveConflictUsingFilePattern() { - DefaultLanguagesRepository languages = new DefaultLanguagesRepository(new FakeLanguagesLoader(new Languages(new MockLanguage("xml", "xhtml"), new MockLanguage("web", "xhtml")))); - languages.start(); + LanguagesRepository languages = new FakeLanguagesRepository(new Languages(new MockLanguage("xml", "xhtml"), new MockLanguage("web", "xhtml"))); settings.setProperty("sonar.lang.patterns.xml", "xml/**"); settings.setProperty("sonar.lang.patterns.web", "web/**"); @@ -164,8 +159,7 @@ public class LanguageDetectionTest { @Test public void detectLanguageKey_shouldFailIfConflictingFilePattern() { - DefaultLanguagesRepository languages = new DefaultLanguagesRepository(new FakeLanguagesLoader(new Languages(new MockLanguage("abap", "abap"), new MockLanguage("cobol", "cobol")))); - languages.start(); + LanguagesRepository languages = new FakeLanguagesRepository(new Languages(new MockLanguage("abap", "abap"), new MockLanguage("cobol", "cobol"))); settings.setProperty("sonar.lang.patterns.abap", "*.abap,*.txt"); settings.setProperty("sonar.lang.patterns.cobol", "*.cobol,*.txt"); @@ -183,9 +177,8 @@ public class LanguageDetectionTest { @Test public void should_cache_detected_language_by_file_path() { Map<String, org.sonar.scanner.repository.language.Language> languageCacheSpy = spy(new HashMap<>()); - DefaultLanguagesRepository languages = new DefaultLanguagesRepository(new FakeLanguagesLoader(new Languages( - new MockLanguage("java", "java", "jav"), new MockLanguage("cobol", "cbl", "cob")))); - languages.start(); + LanguagesRepository languages = new FakeLanguagesRepository(new Languages( + new MockLanguage("java", "java", "jav"), new MockLanguage("cobol", "cbl", "cob"))); LanguageDetection detection = new LanguageDetection(settings.asConfig(), languages, languageCacheSpy); assertThat(detectLanguageKey(detection, "Foo.java")).isEqualTo("java"); |