mirror of
https://github.com/PaperMC/Paper.git
synced 2025-03-13 11:18:23 +01:00
#703: Fix/test yaml anchors and merge
By: Wolf2323 <gabrielpatrikurban@gmail.com>
This commit is contained in:
parent
014fc854ad
commit
4fd0026eb5
3 changed files with 62 additions and 0 deletions
|
@ -141,6 +141,7 @@ public class YamlConfiguration extends FileConfiguration {
|
|||
}
|
||||
|
||||
private void fromNodeTree(@NotNull MappingNode input, @NotNull ConfigurationSection section) {
|
||||
constructor.flattenMapping(input);
|
||||
for (NodeTuple nodeTuple : input.getValue()) {
|
||||
ScalarNode key = (ScalarNode) nodeTuple.getKeyNode();
|
||||
String keyString = key.getValue();
|
||||
|
|
|
@ -7,6 +7,7 @@ import org.jetbrains.annotations.NotNull;
|
|||
import org.jetbrains.annotations.Nullable;
|
||||
import org.yaml.snakeyaml.constructor.SafeConstructor;
|
||||
import org.yaml.snakeyaml.error.YAMLException;
|
||||
import org.yaml.snakeyaml.nodes.MappingNode;
|
||||
import org.yaml.snakeyaml.nodes.Node;
|
||||
import org.yaml.snakeyaml.nodes.Tag;
|
||||
|
||||
|
@ -16,6 +17,11 @@ public class YamlConstructor extends SafeConstructor {
|
|||
this.yamlConstructors.put(Tag.MAP, new ConstructCustomObject());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flattenMapping(@NotNull final MappingNode node) {
|
||||
super.flattenMapping(node);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Object construct(@NotNull Node node) {
|
||||
return constructObject(node);
|
||||
|
|
|
@ -4,6 +4,7 @@ import static org.junit.Assert.*;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.junit.Test;
|
||||
|
||||
public class YamlConfigurationTest extends FileConfigurationTest {
|
||||
|
@ -89,4 +90,58 @@ public class YamlConfigurationTest extends FileConfigurationTest {
|
|||
|
||||
assertEquals(expected, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAnchorNode() throws InvalidConfigurationException {
|
||||
YamlConfiguration config = getConfig();
|
||||
String content = "effects:\n"
|
||||
+ " eff1: &novaEarth\n"
|
||||
+ " position: special\n"
|
||||
+ " effect: nova\n"
|
||||
+ " eff2: *novaEarth\n"
|
||||
+ " eff3: *novaEarth";
|
||||
config.loadFromString(content);
|
||||
|
||||
String expected = "effects:\n"
|
||||
+ " eff1:\n"
|
||||
+ " position: special\n"
|
||||
+ " effect: nova\n"
|
||||
+ " eff2:\n"
|
||||
+ " position: special\n"
|
||||
+ " effect: nova\n"
|
||||
+ " eff3:\n"
|
||||
+ " position: special\n"
|
||||
+ " effect: nova\n";
|
||||
assertEquals(expected, config.saveToString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMergeNode() throws InvalidConfigurationException {
|
||||
YamlConfiguration config = getConfig();
|
||||
String content = "effects:\n"
|
||||
+ " eff1: &novaEarth\n"
|
||||
+ " position: special\n"
|
||||
+ " effect: nova\n"
|
||||
+ " eff2: \n"
|
||||
+ " <<: *novaEarth\n"
|
||||
+ " height-offset: 0\n"
|
||||
+ " eff3: \n"
|
||||
+ " <<: *novaEarth\n"
|
||||
+ " height-offset: 2";
|
||||
config.loadFromString(content);
|
||||
|
||||
String expected = "effects:\n"
|
||||
+ " eff1:\n"
|
||||
+ " position: special\n"
|
||||
+ " effect: nova\n"
|
||||
+ " eff2:\n"
|
||||
+ " position: special\n"
|
||||
+ " effect: nova\n"
|
||||
+ " height-offset: 0\n"
|
||||
+ " eff3:\n"
|
||||
+ " position: special\n"
|
||||
+ " effect: nova\n"
|
||||
+ " height-offset: 2\n";
|
||||
assertEquals(expected, config.saveToString());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue