Add tests for the updaters, improve the check command
Dieser Commit ist enthalten in:
Ursprung
7630007833
Commit
0dd20f8d08
@ -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());
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
In neuem Issue referenzieren
Einen Benutzer sperren