summaryrefslogtreecommitdiffstats
path: root/sonar-batch
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2013-10-11 09:33:45 +0200
committerSimon Brandhof <simon.brandhof@gmail.com>2013-10-11 09:33:45 +0200
commit7855fc19668960fd2e30d49ae5dd46feac943b90 (patch)
tree0a3f437187c3847e8d260af79b0f047ac3cdb4cc /sonar-batch
parentd3651a139e3a66b4e9260c1ab1d334779804e3b1 (diff)
downloadsonarqube-7855fc19668960fd2e30d49ae5dd46feac943b90.tar.gz
sonarqube-7855fc19668960fd2e30d49ae5dd46feac943b90.zip
SONAR-2657 support plugins that declare several times the same file extension
Diffstat (limited to 'sonar-batch')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/LanguageRecognizer.java2
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/LanguageRecognizerTest.java27
2 files changed, 28 insertions, 1 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/LanguageRecognizer.java b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/LanguageRecognizer.java
index e5c6ebc03fc..2214f24df1e 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/LanguageRecognizer.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/LanguageRecognizer.java
@@ -53,7 +53,7 @@ public class LanguageRecognizer implements BatchComponent, Startable {
String extension = sanitizeExtension(suffix);
String s = byExtensions.get(extension);
- if (s != null) {
+ if (s != null && !StringUtils.equals(s, language.getKey())) {
throw new IllegalStateException(String.format(
"File extension '%s' is declared by two languages: %s and %s", extension, s, language.getKey()
));
diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/LanguageRecognizerTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/LanguageRecognizerTest.java
index c4eab635eeb..dbba4e17311 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/LanguageRecognizerTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/LanguageRecognizerTest.java
@@ -82,6 +82,31 @@ public class LanguageRecognizerTest {
}
}
+ @Test
+ public void plugin_can_declare_a_file_extension_twice_for_case_sensitivity() throws Exception {
+ Language[] languages = new Language[]{new Language() {
+ @Override
+ public String getKey() {
+ return "abap";
+ }
+
+ @Override
+ public String getName() {
+ return "ABAP";
+ }
+
+ @Override
+ public String[] getFileSuffixes() {
+ return new String[]{"abap", "ABAP"};
+ }
+ }};
+
+ LanguageRecognizer recognizer = new LanguageRecognizer(languages);
+ recognizer.start();
+ assertThat(recognizer.of(temp.newFile("abc.abap"))).isEqualTo("abap");
+
+ }
+
static class Cobol implements Language {
@Override
public String getKey() {
@@ -98,4 +123,6 @@ public class LanguageRecognizerTest {
return new String[]{"cbl", "cob"};
}
}
+
+
}