13
0
geforkt von Mirrors/Paper

#703: Fix/test yaml anchors and merge

By: Wolf2323 <gabrielpatrikurban@gmail.com>
Dieser Commit ist enthalten in:
Bukkit/Spigot 2022-01-02 21:08:01 +01:00
Ursprung 014fc854ad
Commit 4fd0026eb5
3 geänderte Dateien mit 62 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -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();

Datei anzeigen

@ -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);

Datei anzeigen

@ -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());
}
}