Bug 534449 - [formatter] org.eclipse.jdt.core.javaFormatter project setting lost during ProfileVersioner migration
Copy over profile-specific settings when migrating a profile.
Change-Id: I400416740fa3e262d5822819e05e6f84e02a9c39
Signed-off-by: Brian de Alwis <bsd@mt.ca>
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/CodeFormatterMigrationTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/CodeFormatterMigrationTest.java
new file mode 100644
index 0000000..927a243
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/CodeFormatterMigrationTest.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Manumitting Technologies Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Manumitting Technologies Inc - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.ui.tests.core;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.internal.ui.preferences.formatter.ProfileManager.CustomProfile;
+import org.eclipse.jdt.internal.ui.preferences.formatter.ProfileVersioner;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Tests for migrating formatter profiles.
+ */
+public class CodeFormatterMigrationTest extends TestCase {
+ private static final Class<CodeFormatterMigrationTest> THIS= CodeFormatterMigrationTest.class;
+
+ public CodeFormatterMigrationTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(THIS);
+ }
+
+ public void test13to14_javaFormatter() {
+ Map<String, String> options= new HashMap<>();
+ options.put("org.eclipse.jdt.core.javaFormatter", "foo");
+ int profileVersion= 13; // ProfileVersioner.VERSION_13
+ String kind= null; // kind
+ CustomProfile profile= new CustomProfile("13", options, profileVersion, kind);
+
+ assertEquals(-1, ProfileVersioner.getVersionStatus(profile)); // older
+ new ProfileVersioner().update(profile);
+
+ assertEquals(0, ProfileVersioner.getVersionStatus(profile));
+ assertTrue(profile.getSettings().containsKey("org.eclipse.jdt.core.javaFormatter"));
+ assertEquals("foo", profile.getSettings().get("org.eclipse.jdt.core.javaFormatter"));
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/CoreTests.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/CoreTests.java
index 09f0ee6..11ac989 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/CoreTests.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/CoreTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -43,6 +43,7 @@
suite.addTest(CodeFormatterUtilTest.suite());
suite.addTest(CodeFormatterTest.suite());
suite.addTest(CodeFormatterTest9.suite());
+ suite.addTest(CodeFormatterMigrationTest.suite());
suite.addTest(HierarchicalASTVisitorTest.suite());
suite.addTest(ImportOrganizeTest.suite());
suite.addTest(ImportOrganizeTest18.suite());
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/ProfileVersioner.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/ProfileVersioner.java
index bee4383..418f6f0 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/ProfileVersioner.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/ProfileVersioner.java
@@ -119,7 +119,10 @@
newSettings.put(key, value);
}
}
-
+ // copy over profile options (not formatter settings)
+ if (oldSettings.containsKey(JavaCore.JAVA_FORMATTER)) {
+ newSettings.put(JavaCore.JAVA_FORMATTER, oldSettings.get(JavaCore.JAVA_FORMATTER));
+ }
}
setLatestCompliance(newSettings);
return newSettings;