From 3f42ac85a4495333dbe76e1b1587ea05b7d900a4 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 20 Feb 2014 22:55:25 +0100 Subject: [PATCH] RuleRepositoryTestHelper is back --- sonar-deprecated/pom.xml | 5 +- sonar-testing-harness/pom.xml | 5 ++ .../test/i18n/RuleRepositoryTestHelper.java | 67 +++++++++++++++++++ 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 sonar-testing-harness/src/main/java/org/sonar/test/i18n/RuleRepositoryTestHelper.java diff --git a/sonar-deprecated/pom.xml b/sonar-deprecated/pom.xml index 1a21f72325e..82394aebe91 100644 --- a/sonar-deprecated/pom.xml +++ b/sonar-deprecated/pom.xml @@ -39,9 +39,8 @@ - ${project.groupId} - sonar-testing-harness - ${project.version} + org.hamcrest + hamcrest-all test diff --git a/sonar-testing-harness/pom.xml b/sonar-testing-harness/pom.xml index e32a3a72f43..9e42d67fdb3 100644 --- a/sonar-testing-harness/pom.xml +++ b/sonar-testing-harness/pom.xml @@ -44,6 +44,11 @@ sonar-plugin-api ${project.version} + + org.codehaus.sonar + sonar-deprecated + ${project.version} + org.codehaus.sonar sonar-plugin-api 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 index 00000000000..62c45d8f77b --- /dev/null +++ b/sonar-testing-harness/src/main/java/org/sonar/test/i18n/RuleRepositoryTestHelper.java @@ -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 createRulesWithNameAndDescription(String pluginKey, RuleRepository repository) { + Properties props = loadProperties(String.format("/org/sonar/l10n/%s.properties", pluginKey)); + + List 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); + } + } +} -- 2.39.5