Rename plugin to MagicGem Reforged
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
package cn.infstar.cmagicgem.migration;
|
||||
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.logging.Logger;
|
||||
@@ -18,81 +16,71 @@ class LegacyDirectoryImporterTest {
|
||||
Path temporaryDirectory;
|
||||
|
||||
@Test
|
||||
void mergesOldDirectoryWithoutOverwritingTargetAndKeepsConflictBackup() throws Exception {
|
||||
void importsOriginalMagicGemDirectoryIntoReforgedTarget() throws Exception {
|
||||
Path plugins = Files.createDirectory(temporaryDirectory.resolve("plugins"));
|
||||
Path source = Files.createDirectories(plugins.resolve("CMagicGem/gems"));
|
||||
Path target = Files.createDirectories(plugins.resolve("MagicGem/gems"));
|
||||
Path oldGem = source.resolve("Shared.yml");
|
||||
Path currentGem = target.resolve("Shared.yml");
|
||||
Files.writeString(oldGem, "Shared:\n Name: Old Name\n Material: DIAMOND\n OldOnly: retained\n");
|
||||
Files.writeString(currentGem, "Shared:\n Name: Current Name\n Material: DIAMOND\n CurrentOnly: retained\n");
|
||||
Path source = Files.createDirectories(plugins.resolve("MagicGem/gems"));
|
||||
Path target = plugins.resolve("MagicGem-Reforged");
|
||||
Files.writeString(source.resolve("Custom.yml"), "Custom:\n Name: Imported\n");
|
||||
Files.writeString(source.getParent().resolve("config.yml"), "language: en_US\nbackpack: true\nold-option: kept\n");
|
||||
Files.writeString(target.getParent().resolve("config.yml"), "language: zh_CN\nbackpack: false\n");
|
||||
Files.writeString(source.getParent().resolve("config.yml"), "language: en_US\nbackpack: true\n");
|
||||
|
||||
LegacyDirectoryImporter importer = importer(plugins, plugins.resolve("MagicGem"), () -> { });
|
||||
LegacyDirectoryImporter.ImportResult result = importer.importIfPresent();
|
||||
LegacyDirectoryImporter.ImportResult result = importer(plugins, target).importIfPresent();
|
||||
|
||||
YamlConfiguration mergedGem = load(currentGem);
|
||||
YamlConfiguration mergedConfig = load(target.getParent().resolve("config.yml"));
|
||||
assertEquals("Current Name", mergedGem.getString("Shared.Name"));
|
||||
assertEquals("retained", mergedGem.getString("Shared.OldOnly"));
|
||||
assertEquals("retained", mergedGem.getString("Shared.CurrentOnly"));
|
||||
assertTrue(Files.isRegularFile(target.resolve("Custom.yml")));
|
||||
assertEquals("zh_CN", mergedConfig.getString("language"));
|
||||
assertEquals(false, mergedConfig.getBoolean("backpack"));
|
||||
assertEquals("kept", mergedConfig.getString("old-option"));
|
||||
assertTrue(Files.isRegularFile(plugins.resolve("MagicGem/migration-backup/CMagicGem/gems/Shared.yml")));
|
||||
assertEquals("Old Name", load(oldGem).getString("Shared.Name"));
|
||||
assertTrue(result.copiedFiles() >= 1);
|
||||
assertTrue(result.mergedFiles() >= 2);
|
||||
assertTrue(result.conflictFiles() >= 1);
|
||||
assertTrue(Files.isRegularFile(target.resolve("gems/Custom.yml")));
|
||||
assertTrue(Files.isRegularFile(target.resolve("config.yml")));
|
||||
assertEquals("Custom:\n Name: Imported\n", Files.readString(target.resolve("gems/Custom.yml")));
|
||||
assertEquals("language: en_US\nbackpack: true\n", Files.readString(target.resolve("config.yml")));
|
||||
assertTrue(Files.isDirectory(source.getParent()));
|
||||
assertTrue(result.copiedFiles() >= 2);
|
||||
assertEquals(0, result.conflictFiles());
|
||||
assertFalse(result.alreadyMigrated());
|
||||
}
|
||||
|
||||
@Test
|
||||
void preservesTargetFilesAndBacksUpConflicts() throws Exception {
|
||||
Path plugins = Files.createDirectory(temporaryDirectory.resolve("plugins"));
|
||||
Path source = Files.createDirectories(plugins.resolve("MagicGem/gems"));
|
||||
Path target = Files.createDirectories(plugins.resolve("MagicGem-Reforged/gems"));
|
||||
Files.writeString(source.resolve("Shared.yml"), "Shared:\n Name: Original\n");
|
||||
Files.writeString(target.resolve("Shared.yml"), "Shared:\n Name: Reforged\n");
|
||||
|
||||
LegacyDirectoryImporter.ImportResult result = importer(plugins, target.getParent()).importIfPresent();
|
||||
|
||||
assertEquals("Shared:\n Name: Reforged\n", Files.readString(target.resolve("Shared.yml")));
|
||||
assertEquals("Shared:\n Name: Original\n",
|
||||
Files.readString(target.getParent().resolve("migration-backup/MagicGem/gems/Shared.yml")));
|
||||
assertEquals(1, result.conflictFiles());
|
||||
}
|
||||
|
||||
@Test
|
||||
void markerMakesMigrationIdempotent() throws Exception {
|
||||
Path plugins = Files.createDirectory(temporaryDirectory.resolve("plugins"));
|
||||
Path source = Files.createDirectories(plugins.resolve("MagicGem"));
|
||||
Path target = plugins.resolve("MagicGem-Reforged");
|
||||
Files.writeString(source.resolve("config.yml"), "language: zh_CN\n");
|
||||
|
||||
LegacyDirectoryImporter importer = importer(plugins, target);
|
||||
importer.importIfPresent();
|
||||
LegacyDirectoryImporter.ImportResult repeated = importer.importIfPresent();
|
||||
|
||||
assertTrue(repeated.alreadyMigrated());
|
||||
assertEquals(0, repeated.copiedFiles());
|
||||
assertEquals(0, repeated.conflictFiles());
|
||||
}
|
||||
|
||||
@Test
|
||||
void oldConfigurationOverridesBundledDefaultsWhenTargetHasNoConfig() throws Exception {
|
||||
void missingOriginalDirectoryDoesNothing() throws Exception {
|
||||
Path plugins = Files.createDirectory(temporaryDirectory.resolve("plugins"));
|
||||
Path source = Files.createDirectories(plugins.resolve("CMagicGem"));
|
||||
Path target = plugins.resolve("MagicGem");
|
||||
Files.writeString(source.resolve("config.yml"), "lang: en_US\nbackpack: true\n");
|
||||
Runnable createDefaults = () -> {
|
||||
try {
|
||||
Files.createDirectories(target);
|
||||
Files.writeString(target.resolve("config.yml"), "language: zh_CN\nbackpack: false\nworkbench: true\n");
|
||||
} catch (IOException exception) {
|
||||
throw new IllegalStateException(exception);
|
||||
}
|
||||
};
|
||||
Path target = plugins.resolve("MagicGem-Reforged");
|
||||
|
||||
LegacyDirectoryImporter.ImportResult result = importer(plugins, target, createDefaults).importIfPresent();
|
||||
|
||||
YamlConfiguration config = load(target.resolve("config.yml"));
|
||||
assertEquals("en_US", config.getString("language"));
|
||||
assertEquals(true, config.getBoolean("backpack"));
|
||||
assertEquals(true, config.getBoolean("workbench"));
|
||||
assertTrue(result.configImported());
|
||||
}
|
||||
|
||||
@Test
|
||||
void originalMagicGemDirectoryIsTreatedAsTheActiveTarget() throws Exception {
|
||||
Path plugins = Files.createDirectory(temporaryDirectory.resolve("plugins"));
|
||||
Path target = Files.createDirectory(plugins.resolve("MagicGem"));
|
||||
|
||||
LegacyDirectoryImporter.ImportResult result = importer(plugins, target, () -> { }).importIfPresent();
|
||||
LegacyDirectoryImporter.ImportResult result = importer(plugins, target).importIfPresent();
|
||||
|
||||
assertEquals(0, result.copiedFiles());
|
||||
assertEquals(0, result.conflictFiles());
|
||||
assertFalse(result.alreadyMigrated());
|
||||
assertFalse(Files.exists(target.resolve(".migration-cmagicgem-v1.complete")));
|
||||
assertFalse(Files.exists(target));
|
||||
}
|
||||
|
||||
private LegacyDirectoryImporter importer(Path plugins, Path target, Runnable saveDefaults) {
|
||||
return new LegacyDirectoryImporter(plugins, target, saveDefaults, Logger.getLogger("migration-test"));
|
||||
}
|
||||
|
||||
private YamlConfiguration load(Path path) {
|
||||
return YamlConfiguration.loadConfiguration(path.toFile());
|
||||
private LegacyDirectoryImporter importer(Path plugins, Path target) {
|
||||
return new LegacyDirectoryImporter(plugins, target, Logger.getLogger("migration-test"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,11 +23,11 @@ class BundledConfigurationTest {
|
||||
private final DirectiveParser parser = new DirectiveParser();
|
||||
|
||||
@Test
|
||||
void pluginDescriptorKeepsLegacyCommandAndPermissionCompatibility() {
|
||||
void pluginDescriptorUsesReforgedEntryPointAndKeepsCompatibility() {
|
||||
YamlConfiguration descriptor = YamlConfiguration.loadConfiguration(new File("src/main/resources/plugin.yml"));
|
||||
|
||||
assertTrue(descriptor.getString("name").equalsIgnoreCase("MagicGem"));
|
||||
assertTrue(descriptor.getString("main").equals("pku.yim.magicgem.MagicGem"));
|
||||
assertTrue(descriptor.getString("name").equalsIgnoreCase("MagicGem-Reforged"));
|
||||
assertTrue(descriptor.getString("main").equals("cn.infstar.magicgemreforged.MagicGemReforged"));
|
||||
assertNotNull(descriptor.getConfigurationSection("commands.mgem"));
|
||||
assertTrue(descriptor.getStringList("commands.mgem.aliases").contains("cmg"));
|
||||
assertTrue(descriptor.getStringList("commands.mgem.aliases").contains("cmgem"));
|
||||
|
||||
Reference in New Issue
Block a user