ProtocolLib/src/test/java/com/comphenix/protocol/BukkitInitialization.java

94 lines
2.5 KiB
Java
Raw Normal View History

package com.comphenix.protocol;
import com.comphenix.protocol.utility.Constants;
import com.comphenix.protocol.utility.MinecraftReflection;
import com.comphenix.protocol.utility.MinecraftVersion;
2019-12-13 22:19:40 +01:00
import net.minecraft.server.v1_15_R1.DispenserRegistry;
2016-11-17 03:56:46 +01:00
import org.apache.logging.log4j.LogManager;
2015-04-06 23:30:01 +02:00
import org.bukkit.Bukkit;
import org.bukkit.Server;
2019-12-13 22:19:40 +01:00
import org.bukkit.craftbukkit.v1_15_R1.CraftServer;
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemFactory;
import org.bukkit.craftbukkit.v1_15_R1.util.Versioning;
2015-04-06 23:30:01 +02:00
2019-05-04 05:22:44 +02:00
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* Used to ensure that ProtocolLib and Bukkit is prepared to be tested.
*
* @author Kristian
*/
public class BukkitInitialization {
private static final BukkitInitialization instance = new BukkitInitialization();
private BukkitInitialization() {
System.out.println("Created new BukkitInitialization on " + Thread.currentThread().getName());
}
private boolean initialized;
private boolean packaged;
public static synchronized void initializePackage() {
instance.setPackage();
}
public static synchronized void initializeItemMeta() {
instance.initialize();
}
/**
2018-07-19 19:13:06 +02:00
* Initialize Bukkit and ProtocolLib such that we can perfrom unit testing
*/
private void initialize() {
if (!initialized) {
// Denote that we're done
initialized = true;
initializePackage();
try {
LogManager.getLogger();
} catch (Throwable ex) {
// Happens only on my Jenkins, but if it errors here it works when it matters
ex.printStackTrace();
}
2019-05-04 05:22:44 +02:00
DispenserRegistry.init();
// Mock the server object
Server mockedServer = mock(Server.class);
when(mockedServer.getLogger()).thenReturn(java.util.logging.Logger.getLogger("Minecraft"));
when(mockedServer.getName()).thenReturn("Mock Server");
when(mockedServer.getVersion()).thenReturn(CraftServer.class.getPackage().getImplementationVersion());
when(mockedServer.getBukkitVersion()).thenReturn(Versioning.getBukkitVersion());
when(mockedServer.getItemFactory()).thenReturn(CraftItemFactory.instance());
when(mockedServer.isPrimaryThread()).thenReturn(true);
// Inject this fake server
Bukkit.setServer(mockedServer);
2015-04-06 23:30:01 +02:00
}
}
/**
* Ensure that package names are correctly set up.
*/
private void setPackage() {
if (!packaged) {
packaged = true;
try {
LogManager.getLogger();
} catch (Throwable ex) {
// Happens only on my Jenkins, but if it errors here it works when it matters
ex.printStackTrace();
}
2019-12-13 22:19:40 +01:00
Constants.init();
}
}
}