aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGodin <mandrikov@gmail.com>2010-12-22 09:06:18 +0000
committerGodin <mandrikov@gmail.com>2010-12-22 09:06:18 +0000
commit68ed2127f97f4bab341edb91b4180b1ffd6fc485 (patch)
tree8a6ae4602dbaa6b5b252f183c73137e0a2be3933
parent34094526ec0e9ecabc947dd70096aca1052514ef (diff)
downloadsonarqube-68ed2127f97f4bab341edb91b4180b1ffd6fc485.tar.gz
sonarqube-68ed2127f97f4bab341edb91b4180b1ffd6fc485.zip
SONAR-2052: Should be possible to restore backup without inheritance information
-rw-r--r--sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java4
-rw-r--r--sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java18
-rw-r--r--sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-without-inheritance.xml25
3 files changed, 44 insertions, 3 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java b/sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java
index 543606779fb..2ca434ee7ee 100644
--- a/sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java
+++ b/sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java
@@ -205,7 +205,9 @@ public class ProfilesBackup implements Backupable {
ActiveRule activeRule = new ActiveRule(null, new Rule(valuesRule.get("plugin"), valuesRule.get("key")), RulePriority
.valueOf(valuesRule.get("level")));
activeRule.setActiveRuleParams(params);
- activeRule.setInheritanceStatus(ActiveRuleInheritanceStatus.valueOf(valuesRule.get("inherited")));
+ if (valuesRule.containsKey("inherited")) {
+ activeRule.setInheritanceStatus(ActiveRuleInheritanceStatus.valueOf(valuesRule.get("inherited")));
+ }
return activeRule;
}
diff --git a/sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java b/sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java
index 08f75114341..0abc449a411 100644
--- a/sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java
+++ b/sonar-server/src/test/java/org/sonar/server/configuration/BackupTest.java
@@ -19,8 +19,6 @@
*/
package org.sonar.server.configuration;
-import org.sonar.api.rules.ActiveRuleInheritanceStatus;
-
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
@@ -171,6 +169,22 @@ public class BackupTest {
}
@Test
+ public void shouldImportXmlWithoutInheritanceInformation() {
+ Backup backup = new Backup(Arrays.asList(new MetricsBackup(null), new PropertiesBackup(null),
+ new RulesBackup((DatabaseSession) null), new ProfilesBackup((DatabaseSession) null)));
+
+ String xml = getFileFromClasspath("backup-restore-without-inheritance.xml");
+ SonarConfig sonarConfig = backup.getSonarConfigFromXml(xml);
+
+ Collection<RulesProfile> profiles = sonarConfig.getProfiles();
+ assertThat(profiles.size(), is(1));
+ RulesProfile testProfile = profiles.iterator().next();
+ assertThat(testProfile.getActiveRules().size(), is(1));
+ ActiveRule activeRule = testProfile.getActiveRules().get(0);
+ assertThat(activeRule.getInheritanceStatus(), is(ActiveRuleInheritanceStatus.NO));
+ }
+
+ @Test
public void shouldImportXmlWithXmlIlliciteCharacters() {
Backup backup = new Backup(Arrays.asList(new MetricsBackup(null), new PropertiesBackup(null)));
diff --git a/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-without-inheritance.xml b/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-without-inheritance.xml
new file mode 100644
index 00000000000..77498b9ece7
--- /dev/null
+++ b/sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-without-inheritance.xml
@@ -0,0 +1,25 @@
+<sonar-config>
+ <version><![CDATA[54]]></version>
+ <date><![CDATA[2008-11-18]]></date>
+ <profiles>
+ <profile>
+ <name><![CDATA[test name]]></name>
+ <default-profile><![CDATA[true]]></default-profile>
+ <provided><![CDATA[true]]></provided>
+ <language><![CDATA[test language]]></language>
+ <active-rules>
+ <active-rule>
+ <key><![CDATA[test key]]></key>
+ <plugin><![CDATA[test plugin]]></plugin>
+ <level><![CDATA[ERROR]]></level>
+ <params>
+ <param>
+ <key><![CDATA[test param key]]></key>
+ <value><![CDATA[test value]]></value>
+ </param>
+ </params>
+ </active-rule>
+ </active-rules>
+ </profile>
+ </profiles>
+</sonar-config>