Archiviert
13
0

Add tests for the updaters, improve the check command

Dieser Commit ist enthalten in:
Dan Mulloy 2016-01-30 12:33:16 -05:00
Ursprung 7630007833
Commit 0dd20f8d08
6 geänderte Dateien mit 142 neuen und 59 gelöschten Zeilen

Datei anzeigen

@ -69,9 +69,9 @@ class CommandProtocol extends CommandBase {
if (subCommand.equalsIgnoreCase("config") || subCommand.equalsIgnoreCase("reload")) {
reloadConfiguration(sender);
} else if (subCommand.equalsIgnoreCase("check")) {
checkVersion(sender);
checkVersion(sender, true);
} else if (subCommand.equalsIgnoreCase("update")) {
updateVersion(sender);
updateVersion(sender, true);
} else if (subCommand.equalsIgnoreCase("timings")) {
toggleTimings(sender, args);
} else if (subCommand.equalsIgnoreCase("listeners")) {
@ -87,12 +87,12 @@ class CommandProtocol extends CommandBase {
return true;
}
public void checkVersion(final CommandSender sender) {
performUpdate(sender, UpdateType.NO_DOWNLOAD);
public void checkVersion(final CommandSender sender, boolean command) {
performUpdate(sender, UpdateType.NO_DOWNLOAD, command);
}
public void updateVersion(final CommandSender sender) {
performUpdate(sender, UpdateType.DEFAULT);
public void updateVersion(final CommandSender sender, boolean command) {
performUpdate(sender, UpdateType.DEFAULT, command);
}
// Display every listener on the server
@ -111,7 +111,7 @@ class CommandProtocol extends CommandBase {
}
}
private void performUpdate(final CommandSender sender, UpdateType type) {
private void performUpdate(final CommandSender sender, UpdateType type, final boolean command) {
if (updater.isChecking()) {
sender.sendMessage(ChatColor.RED + "Already checking for an update.");
return;
@ -121,7 +121,14 @@ class CommandProtocol extends CommandBase {
Runnable notify = new Runnable() {
@Override
public void run() {
if (updater.shouldNotify() || config.isDebug()) {
if (command) {
sender.sendMessage(ChatColor.YELLOW + "[ProtocolLib] " + updater.getResult());
String remoteVersion = updater.getRemoteVersion();
if (remoteVersion != null) {
sender.sendMessage(ChatColor.YELLOW + "Remote version: " + remoteVersion);
sender.sendMessage(ChatColor.YELLOW + "Current version: " + plugin.getDescription().getVersion());
}
} else if (updater.shouldNotify() || config.isDebug()) {
sender.sendMessage(ChatColor.YELLOW + "[ProtocolLib] " + updater.getResult());
}

Datei anzeigen

@ -615,9 +615,9 @@ public class ProtocolLibrary extends JavaPlugin {
if (currentTime > updateTime && !updater.isChecking()) {
// Initiate the update as if it came from the console
if (config.isAutoDownload())
commandProtocol.updateVersion(getServer().getConsoleSender());
commandProtocol.updateVersion(getServer().getConsoleSender(), false);
else if (config.isAutoNotify())
commandProtocol.checkVersion(getServer().getConsoleSender());
commandProtocol.checkVersion(getServer().getConsoleSender(), false);
else
commandProtocol.updateFinished();
}

Datei anzeigen

@ -22,6 +22,7 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
@ -78,13 +79,15 @@ public class BukkitUpdater extends Updater {
* @param type Specify the type of update this will be. See {@link UpdateType}
* @param announce True if the program should announce the progress of new updates in console
*/
public BukkitUpdater(ProtocolLibrary plugin, int id, File file, UpdateType type, boolean announce) {
public BukkitUpdater(Plugin plugin, int id, File file, UpdateType type, boolean announce) {
super(plugin, type, announce);
this.file = file;
this.id = id;
this.updateFolder = plugin.getServer().getUpdateFolder();
File dataFolder = plugin.getDataFolder();
if (dataFolder != null) {
final File pluginFile = plugin.getDataFolder().getParentFile();
final File updaterFile = new File(pluginFile, "Updater");
final File updaterConfigFile = new File(updaterFile, "config.yml");
@ -129,6 +132,7 @@ public class BukkitUpdater extends Updater {
}
this.apiKey = key;
}
try {
this.url = new URL(BukkitUpdater.HOST + BukkitUpdater.QUERY + id);
@ -314,7 +318,7 @@ public class BukkitUpdater extends Updater {
return false;
} */
private boolean read() {
public boolean read() {
try {
final URLConnection conn = this.url.openConnection();
conn.setConnectTimeout(5000);
@ -407,8 +411,7 @@ public class BukkitUpdater extends Updater {
}
@Override
public boolean shouldNotify() {
// TODO Auto-generated method stub
return false;
public String getRemoteVersion() {
return getLatestName();
}
}

Datei anzeigen

@ -34,10 +34,12 @@ import com.google.common.base.Charsets;
*/
public final class SpigotUpdater extends Updater {
private ProtocolLibrary plugin;
private String remoteVersion;
public SpigotUpdater(ProtocolLibrary plugin, UpdateType type, boolean announce) {
super(plugin, type, announce);
this.plugin = plugin;
}
@Override
@ -110,4 +112,9 @@ public final class SpigotUpdater extends Updater {
closer.close();
}
}
@Override
public String getRemoteVersion() {
return remoteVersion;
}
}

Datei anzeigen

@ -20,6 +20,8 @@ import java.io.File;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.bukkit.plugin.Plugin;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.error.ReportType;
import com.comphenix.protocol.utility.MinecraftVersion;
@ -31,7 +33,7 @@ import com.google.common.base.Preconditions;
*/
public abstract class Updater {
protected ProtocolLibrary plugin;
protected Plugin plugin;
protected String versionName;
protected String versionLink;
@ -48,7 +50,7 @@ public abstract class Updater {
public static final ReportType REPORT_CANNOT_UPDATE_PLUGIN = new ReportType("Cannot update ProtocolLib.");
protected Updater(ProtocolLibrary plugin, UpdateType type, boolean announce) {
protected Updater(Plugin plugin, UpdateType type, boolean announce) {
this.plugin = plugin;
this.type = type;
this.announce = announce;
@ -285,4 +287,6 @@ public abstract class Updater {
return false;
}
}
public abstract String getRemoteVersion();
}

Datei anzeigen

@ -0,0 +1,62 @@
/**
* (c) 2016 dmulloy2
*/
package com.comphenix.protocol.updater;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.logging.Logger;
import org.bukkit.Server;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.junit.Test;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.updater.Updater.UpdateType;
/**
* @author dmulloy2
*/
public class UpdaterTest {
private static final int BUKKIT_DEV_ID = 45564;
@Test
public void testSpigotUpdater() {
SpigotUpdater updater = new SpigotUpdater(null, UpdateType.NO_DOWNLOAD, true);
String remote = null;
try {
remote = updater.getSpigotVersion();
} catch (Throwable ex) {
ex.printStackTrace();
fail("Failed to check for updates");
}
System.out.println("Determined remote Spigot version: " + remote);
}
@Test
public void testBukkitUpdater() {
Server server = mock(Server.class);
when(server.getUpdateFolder()).thenReturn(null);
Plugin plugin = mock(Plugin.class);
when(plugin.getDescription()).thenReturn(new PluginDescriptionFile("ProtocolLib", ProtocolLibrary.class.getPackage().getImplementationVersion(), null));
when(plugin.getLogger()).thenReturn(Logger.getLogger("ProtocolLib"));
when(plugin.getDataFolder()).thenReturn(null);
when(plugin.getServer()).thenReturn(server);
BukkitUpdater updater = new BukkitUpdater(plugin, BUKKIT_DEV_ID, null, UpdateType.NO_DOWNLOAD, true);
if (! updater.read()) {
fail("Failed to check for updates");
}
String remote = updater.getLatestName();
System.out.println("Determined remote Bukkit Dev version: " + remote);
}
}