*/
package org.sonar.batch.scan.filesystem;
-import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;
import org.picocontainer.Startable;
-import org.slf4j.LoggerFactory;
import org.sonar.api.BatchComponent;
import org.sonar.api.resources.Language;
import org.sonar.api.resources.Project;
import javax.annotation.CheckForNull;
-
import java.io.File;
import java.util.Set;
}
}
}
-
- for (String extension : langsByExtension.keySet()) {
- Set<String> langs = langsByExtension.get(extension);
- if (langs.size() > 1) {
- warnConflict(extension, langs);
- }
- }
- }
-
- @VisibleForTesting
- void warnConflict(String extension, Set<String> langs) {
- LoggerFactory.getLogger(LanguageRecognizer.class).warn(String.format(
- "File extension '%s' is declared by several plugins: %s", extension, StringUtils.join(langs, ", ")
- ));
}
@Override
recognizer.stop();
}
- @Test
- public void fail_if_conflict_of_file_extensions() throws Exception {
- Language[] languages = new Language[] {new MockLanguage("java", "java"), new MockLanguage("java2", "java", "java2")};
-
- LanguageRecognizer recognizer = spy(new LanguageRecognizer(newProject("java"), languages));
- recognizer.start();
-
- verify(recognizer).warnConflict(eq("java"), argThat(new ArgumentMatcher<Set<String>>() {
- @Override
- public boolean matches(Object o) {
- Set<String> set = (Set<String>) o;
- return set.contains("java") && set.contains("java2") && set.size() == 2;
- }
- }));
- }
-
@Test
public void should_not_fail_if_no_language() throws Exception {
LanguageRecognizer recognizer = spy(new LanguageRecognizer(newProject("java")));