mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +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
2 changed files with 31 additions and 4 deletions
|
@ -100,11 +100,14 @@ public class YamlConfiguration extends FileConfiguration {
|
|||
|
||||
MappingNode node;
|
||||
try (Reader reader = new UnicodeReader(new ByteArrayInputStream(contents.getBytes(StandardCharsets.UTF_8)))) {
|
||||
node = (MappingNode) yaml.compose(reader);
|
||||
} catch (YAMLException | IOException e) {
|
||||
Node rawNode = yaml.compose(reader);
|
||||
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);
|
||||
} catch (ClassCastException e) {
|
||||
throw new InvalidConfigurationException("Top level is not a Map.");
|
||||
}
|
||||
|
||||
this.map.clear();
|
||||
|
|
|
@ -11,6 +11,7 @@ import java.util.Map.Entry;
|
|||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.MemoryConfiguration;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.junit.Test;
|
||||
|
||||
public class YamlConfigurationTest extends FileConfigurationTest {
|
||||
|
@ -170,6 +171,29 @@ public class YamlConfigurationTest extends FileConfigurationTest {
|
|||
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
|
||||
public void testOnlyHeader() {
|
||||
YamlConfiguration config = getConfig();
|
||||
|
|
Loading…
Reference in a new issue