summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/bukkit/configuration/file/YamlConfiguration.java7
-rw-r--r--src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java29
2 files changed, 30 insertions, 6 deletions
diff --git a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
index 237018e3..a15f69b7 100644
--- a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
+++ b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
@@ -148,6 +148,7 @@ public class YamlConfiguration extends FileConfiguration {
String[] lines = input.split("\r?\n", -1);
StringBuilder result = new StringBuilder();
boolean readingHeader = true;
+ boolean foundHeader = false;
for (int i = 0; (i < lines.length) && (readingHeader); i++) {
String line = lines[i];
@@ -160,9 +161,11 @@ public class YamlConfiguration extends FileConfiguration {
if (line.length() > COMMENT_PREFIX.length()) {
result.append(line.substring(COMMENT_PREFIX.length()));
}
- } else if (line.length() == 0) {
+
+ foundHeader = true;
+ } else if ((foundHeader) && (line.length() == 0)) {
result.append("\n");
- } else {
+ } else if (foundHeader) {
readingHeader = false;
}
}
diff --git a/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java b/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
index 2b976725..627ca24e 100644
--- a/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
+++ b/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
@@ -170,19 +170,40 @@ public abstract class FileConfigurationTest extends MemoryConfigurationTest {
String saved = getTestValuesString();
String header = getTestHeaderResult();
String expected = getTestHeaderInput();
-
+
defaults.loadFromString(header);
config.loadFromString(saved);
config.setDefaults(defaults);
-
+
assertNull(config.options().header());
assertEquals(expected, defaults.options().header());
-
+
for (Map.Entry<String, Object> entry : values.entrySet()) {
assertEquals(entry.getValue(), config.get(entry.getKey()));
}
-
+
assertEquals(values.keySet(), config.getKeys(true));
assertEquals(header + "\n" + saved, config.saveToString());
+
+ config = getConfig();
+ config.loadFromString(getTestHeaderResult() + saved);
+ assertEquals(getTestHeaderResult() + saved, config.saveToString());
+ }
+
+ @Test
+ public void testReloadEmptyConfig() throws Exception {
+ FileConfiguration config = getConfig();
+
+ assertEquals("", config.saveToString());
+
+ config = getConfig();
+ config.loadFromString("");
+
+ assertEquals("", config.saveToString());
+
+ config = getConfig();
+ config.loadFromString("\n\n"); // Should trim the first newlines of a header
+
+ assertEquals("", config.saveToString());
}
}