Skip to content

SkriptJUnitTest#spawnTestEntity + Cleanup #7791

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: dev/feature
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions src/main/java/ch/njol/skript/test/runner/SkriptJUnitTest.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
package ch.njol.skript.test.runner;

import org.bukkit.Bukkit;
import org.bukkit.GameRule;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import ch.njol.skript.Skript;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Pig;

import ch.njol.skript.Skript;

/**
* Class that helps the JUnit test communicate with Skript.
*/
Expand Down Expand Up @@ -84,9 +79,19 @@ public static Location getTestLocation() {
* @return Pig that has been spawned.
*/
public static Pig spawnTestPig() {
return spawnTestEntity(EntityType.PIG);
}

/**
* Spawns a test {@link Entity} from the provided {@code entityType}
* @param entityType The desired {@link EntityType} to spawn
* @return The spawned {@link Entity}
*/
public static <E extends Entity> E spawnTestEntity(EntityType entityType) {
if (delay <= 0D)
delay = 1; // A single tick allows the piggy to spawn before server shutdown.
return (Pig) getTestWorld().spawnEntity(getTestLocation(), EntityType.PIG);
delay = 1; // A single tick allows the entity to spawn before server shutdown.
//noinspection unchecked
return (E) getTestWorld().spawnEntity(getTestLocation(), entityType);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package org.skriptlang.skript.test.tests.syntaxes.effects;

import ch.njol.skript.test.runner.SkriptJUnitTest;
import org.bukkit.Bukkit;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Goat;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.world.WorldLoadEvent;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class EffGoatHornsTest extends SkriptJUnitTest {
Expand All @@ -19,7 +16,7 @@ public class EffGoatHornsTest extends SkriptJUnitTest {

@Test
public void test() {
goat = getTestWorld().spawn(getTestWorld().getSpawnLocation(), Goat.class);
goat = spawnTestEntity(EntityType.GOAT);
}

@After
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package org.skriptlang.skript.test.tests.syntaxes.events;

import ch.njol.skript.Skript;
import ch.njol.skript.test.runner.SkriptJUnitTest;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Pillager;
import org.bukkit.event.Event;
Expand All @@ -16,46 +14,26 @@
import org.junit.Test;

import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class BellEventsTest extends SkriptJUnitTest {

private static final boolean canRun = Skript.classExists("org.bukkit.block.Bell");

private Block bell;
private LivingEntity pillager;

@Before
public void setUp() {
if (!canRun)
return;
this.bell = setBlock(Material.BELL);
this.pillager = getTestWorld().spawn(bell.getLocation().add(0, 1, 0), Pillager.class);
setShutdownDelay(1);
}

@Test
public void testEvents() {
if (!canRun)
return;
Set<Event> events = new HashSet<>();
if (Skript.classExists("org.bukkit.event.block.BellRingEvent")) {
events.add(new BellRingEvent(this.bell, BlockFace.EAST, null));
} else if (Skript.classExists("io.papermc.paper.event.block.BellRingEvent")) {
try {
events.add(io.papermc.paper.event.block.BellRingEvent.class.getConstructor(Block.class, Entity.class)
.newInstance(this.bell, null));
} catch (ReflectiveOperationException ignored) {
}

}

if (Skript.classExists("org.bukkit.event.block.BellResonateEvent"))
events.add(new BellResonateEvent(this.bell, Collections.singletonList(this.pillager)));

events.add(new BellRingEvent(this.bell, BlockFace.EAST, null));
events.add(new BellResonateEvent(this.bell, Collections.singletonList(this.pillager)));
for (Event event : events)
Bukkit.getPluginManager().callEvent(event);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.bukkit.Material;
import org.bukkit.entity.Pig;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityBreedEvent;
import org.bukkit.inventory.ItemStack;
import org.easymock.EasyMock;
import org.junit.After;
Expand Down Expand Up @@ -39,7 +40,7 @@ public void before() {
@Test
public void test() {
Bukkit.getPluginManager().callEvent(
new org.bukkit.event.entity.EntityBreedEvent(
new EntityBreedEvent(
child, mother, father, player, new ItemStack(Material.CARROT), 0));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
import ch.njol.skript.test.runner.SkriptJUnitTest;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Cod;
import org.bukkit.entity.Fish;
import org.bukkit.entity.Player;
import org.bukkit.entity.Salmon;
import org.bukkit.entity.*;
import org.bukkit.event.player.PlayerBucketEntityEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;
Expand All @@ -26,8 +23,8 @@ public class EvtBucketEntityTest extends SkriptJUnitTest {

@Before
public void setup() {
salmon = getTestLocation().getWorld().spawn(getTestLocation(), Salmon.class);
cod = getTestLocation().getWorld().spawn(getTestLocation(), Cod.class);
salmon = spawnTestEntity(EntityType.SALMON);
cod = spawnTestEntity(EntityType.COD);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
public class EvtFireworkTest extends SkriptJUnitTest {

private EntityType entityType;
private List<Firework> fireworkList = new ArrayList<>();
private final List<Firework> fireworkList = new ArrayList<>();

@Before
public void getEntity() {
Expand All @@ -35,7 +35,7 @@ public void getEntity() {
public void callEvents() {
List<Event> events = new ArrayList<>();
for (SkriptColor color : SkriptColor.values()) {
Firework firework = (Firework) getTestWorld().spawnEntity(getTestLocation(), entityType);
Firework firework = spawnTestEntity(entityType);
FireworkEffect fireworkEffect = FireworkEffect.builder().withColor(color.asDyeColor().getFireworkColor()).build();
FireworkMeta fireworkMeta = firework.getFireworkMeta();
fireworkMeta.addEffects(fireworkEffect);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.skriptlang.skript.test.tests.syntaxes.events;

import ch.njol.skript.Skript;
import ch.njol.skript.test.runner.SkriptJUnitTest;
import org.bukkit.Bukkit;
import org.bukkit.entity.*;
Expand All @@ -22,8 +21,8 @@ public class EvtFishTest extends SkriptJUnitTest {

@Before
public void setup() {
salmon = getTestLocation().getWorld().spawn(getTestLocation(), Salmon.class);
cod = getTestLocation().getWorld().spawn(getTestLocation(), Cod.class);
salmon = spawnTestEntity(EntityType.SALMON);
cod = spawnTestEntity(EntityType.COD);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package org.skriptlang.skript.test.tests.syntaxes.events;

import ch.njol.skript.Skript;
import ch.njol.skript.test.runner.SkriptJUnitTest;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Piglin;
import org.bukkit.event.entity.PiglinBarterEvent;
import org.bukkit.inventory.ItemStack;
import org.junit.After;
import org.junit.Before;
Expand All @@ -16,42 +16,28 @@

public class EvtPiglinBarterTest extends SkriptJUnitTest {

private Entity piglin;
private static final boolean canRun = Skript.classExists("org.bukkit.event.entity.PiglinBarterEvent");
private Piglin piglin;

static {
setShutdownDelay(1);
}

@Before
public void spawn() {
if (!canRun)
return;

piglin = getTestWorld().spawnEntity(getTestLocation(), EntityType.PIGLIN);
piglin = spawnTestEntity(EntityType.PIGLIN);
}

@Test
public void testCall() {
if (!canRun)
return;

ItemStack input = new ItemStack(Material.GOLD_INGOT);
List<ItemStack> outcome = new ArrayList<>();
outcome.add(new ItemStack(Material.EMERALD));

try {
Bukkit.getPluginManager().callEvent(
new org.bukkit.event.entity.PiglinBarterEvent(
(org.bukkit.entity.Piglin) piglin, input, outcome));
} catch (NoClassDefFoundError ignored) { }
Bukkit.getPluginManager().callEvent(new PiglinBarterEvent(piglin, input, outcome));
}

@After
public void remove() {
if (!canRun)
return;

piglin.remove();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class EvtVehicleCollisionTest extends SkriptJUnitTest {
@Before
public void setUp() {
pig = spawnTestPig();
sheep = (Sheep) getTestWorld().spawnEntity(getTestLocation(), EntityType.SHEEP);
sheep = spawnTestEntity(EntityType.SHEEP);
old = getBlock().getType();
setBlock(Material.OBSIDIAN);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,37 +30,30 @@ public void setUp() {
entityType = EntityType.valueOf("FIREWORK_ROCKET");
}
assert entityType != null;
firework = (Firework) getTestWorld().spawnEntity(getTestLocation(), entityType);
firework = spawnTestEntity(entityType);
firework.setTicksToDetonate(9999999);
}

@Test
public void test() {
ItemStack rocket = new ItemStack(Material.FIREWORK_ROCKET);
Constructor<?> constructor = null;
boolean newerConstructor = false;
Event event = null;
try {
constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class, EquipmentSlot.class);
newerConstructor = true;
} catch (Exception ignored) {
try {
constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class);
} catch (NoSuchMethodException e) {
throw new IllegalStateException("No valid constructor for 'PlayerElytraBoostEvent'");
constructor = PlayerElytraBoostEvent.class.getDeclaredConstructor(Player.class, ItemStack.class, Firework.class, EquipmentSlot.class);
event = (Event) constructor.newInstance(player, rocket, firework, EquipmentSlot.HAND);
} catch (Exception ignored) {}
if (constructor == null) {
try {
constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class);
event = (Event) constructor.newInstance(player, rocket, firework);
} catch (Exception e) {
throw new RuntimeException("No valid constructor for 'PlayerElytraBoostEvent'");
}
}
assert event != null;

try {
Event event;
if (newerConstructor) {
event = (Event) constructor.newInstance(player, new ItemStack(Material.FIREWORK_ROCKET), firework, EquipmentSlot.HAND);
} else {
event = (Event) constructor.newInstance(player, new ItemStack(Material.FIREWORK_ROCKET), firework);
}

Bukkit.getPluginManager().callEvent(event);
} catch (Exception e) {
throw new RuntimeException("Unable to construct event.");
}
Bukkit.getPluginManager().callEvent(event);
}

@After
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class ExprAffectedEntitiesTest extends SkriptJUnitTest {
public void setUp() {
piggy = spawnTestPig();
entityList.add(piggy);
cloud = (AreaEffectCloud) getTestWorld().spawnEntity(getTestLocation(), EntityType.AREA_EFFECT_CLOUD);
cloud = spawnTestEntity(EntityType.AREA_EFFECT_CLOUD);
}

@Test
Expand Down