mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-01 05:47:45 +01:00
SPIGOT-6885: Add test and easier to debug code for reference in yaml configuration comments
By: Wolf2323 <gabrielpatrikurban@gmail.com>
This commit is contained in:
parent
57fc47e650
commit
7c9037dfee
@ -100,11 +100,14 @@ public class YamlConfiguration extends FileConfiguration {
|
|||||||
|
|
||||||
MappingNode node;
|
MappingNode node;
|
||||||
try (Reader reader = new UnicodeReader(new ByteArrayInputStream(contents.getBytes(StandardCharsets.UTF_8)))) {
|
try (Reader reader = new UnicodeReader(new ByteArrayInputStream(contents.getBytes(StandardCharsets.UTF_8)))) {
|
||||||
node = (MappingNode) yaml.compose(reader);
|
Node rawNode = yaml.compose(reader);
|
||||||
} catch (YAMLException | IOException e) {
|
try {
|
||||||
|
node = (MappingNode) rawNode;
|
||||||
|
} catch (ClassCastException e) {
|
||||||
|
throw new InvalidConfigurationException("Top level is not a Map.");
|
||||||
|
}
|
||||||
|
} catch (YAMLException | IOException | ClassCastException e) {
|
||||||
throw new InvalidConfigurationException(e);
|
throw new InvalidConfigurationException(e);
|
||||||
} catch (ClassCastException e) {
|
|
||||||
throw new InvalidConfigurationException("Top level is not a Map.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.map.clear();
|
this.map.clear();
|
||||||
|
@ -11,6 +11,7 @@ import java.util.Map.Entry;
|
|||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.InvalidConfigurationException;
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
import org.bukkit.configuration.MemoryConfiguration;
|
import org.bukkit.configuration.MemoryConfiguration;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class YamlConfigurationTest extends FileConfigurationTest {
|
public class YamlConfigurationTest extends FileConfigurationTest {
|
||||||
@ -170,6 +171,29 @@ public class YamlConfigurationTest extends FileConfigurationTest {
|
|||||||
assertEquals(data, result);
|
assertEquals(data, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SPIGOT-6885
|
||||||
|
@Test
|
||||||
|
public void testReference() throws InvalidConfigurationException {
|
||||||
|
String okYAML = "dummy: test\n"
|
||||||
|
+ "conf:\n"
|
||||||
|
+ " - test #comment ok\n";
|
||||||
|
assertNotNull(toConfig(okYAML, false));
|
||||||
|
assertNotNull(toConfig(okYAML, true));
|
||||||
|
|
||||||
|
String badYAML = "dummy: &a test\n"
|
||||||
|
+ "conf:\n"
|
||||||
|
+ " - *a #comment not ok here\n";
|
||||||
|
assertNotNull(toConfig(badYAML, false));
|
||||||
|
assertNotNull(toConfig(badYAML, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
private YamlConfiguration toConfig(@NotNull String contents, boolean parseComments) throws InvalidConfigurationException {
|
||||||
|
YamlConfiguration config = new YamlConfiguration();
|
||||||
|
config.options().parseComments(parseComments);
|
||||||
|
config.loadFromString(contents);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnlyHeader() {
|
public void testOnlyHeader() {
|
||||||
YamlConfiguration config = getConfig();
|
YamlConfiguration config = getConfig();
|
||||||
|
Loading…
Reference in New Issue
Block a user