]> source.dussan.org Git - sonarqube.git/commitdiff
RuleRepositoryTestHelper is back
authorSimon Brandhof <simon.brandhof@gmail.com>
Thu, 20 Feb 2014 21:55:25 +0000 (22:55 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Thu, 20 Feb 2014 21:55:25 +0000 (22:55 +0100)
sonar-deprecated/pom.xml
sonar-testing-harness/pom.xml
sonar-testing-harness/src/main/java/org/sonar/test/i18n/RuleRepositoryTestHelper.java [new file with mode: 0644]

index 1a21f72325e66da1964c359e54937f142b061b33..82394aebe91954766c0c966629a935d611263ab5 100644 (file)
@@ -39,9 +39,8 @@
     </dependency>
 
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>sonar-testing-harness</artifactId>
-      <version>${project.version}</version>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-all</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
index e32a3a72f4321903e45a33ea4598bce6d6e79666..9e42d67fdb3ad7d8706932981b8c775ecbd591cf 100644 (file)
       <artifactId>sonar-plugin-api</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.sonar</groupId>
+      <artifactId>sonar-deprecated</artifactId>
+      <version>${project.version}</version>
+    </dependency>
     <dependency>
       <groupId>org.codehaus.sonar</groupId>
       <artifactId>sonar-plugin-api</artifactId>
diff --git a/sonar-testing-harness/src/main/java/org/sonar/test/i18n/RuleRepositoryTestHelper.java b/sonar-testing-harness/src/main/java/org/sonar/test/i18n/RuleRepositoryTestHelper.java
new file mode 100644 (file)
index 0000000..62c45d8
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2013 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube 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.
+ *
+ * SonarQube 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.test.i18n;
+
+import com.google.common.io.Closeables;
+import org.sonar.api.rules.Rule;
+import org.sonar.api.rules.RuleRepository;
+import org.sonar.api.utils.SonarException;
+import org.sonar.test.TestUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Properties;
+
+public final class RuleRepositoryTestHelper {
+  private RuleRepositoryTestHelper() {
+    // Static utility class
+  }
+
+  public static List<Rule> createRulesWithNameAndDescription(String pluginKey, RuleRepository repository) {
+    Properties props = loadProperties(String.format("/org/sonar/l10n/%s.properties", pluginKey));
+
+    List<Rule> rules = repository.createRules();
+    for (Rule rule : rules) {
+      String name = props.getProperty(String.format("rule.%s.%s.name", repository.getKey(), rule.getKey()));
+      String description = TestUtils.getResourceContent(String.format("/org/sonar/l10n/%s/rules/%s/%s.html", pluginKey, repository.getKey(), rule.getKey()));
+
+      rule.setName(name);
+      rule.setDescription(description);
+    }
+
+    return rules;
+  }
+
+  private static Properties loadProperties(String resourcePath) {
+    Properties properties = new Properties();
+
+    InputStream input = null;
+    try {
+      input = TestUtils.class.getResourceAsStream(resourcePath);
+      properties.load(input);
+      return properties;
+    } catch (IOException e) {
+      throw new SonarException("Unable to read properties " + resourcePath, e);
+    } finally {
+      Closeables.closeQuietly(input);
+    }
+  }
+}