mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2025-04-09 21:47:02 +02:00
#932 Use class collector for listener consistency test
This commit is contained in:
parent
93c59555f8
commit
d959b0a3f2
@ -1,13 +1,18 @@
|
|||||||
package fr.xephi.authme.listener;
|
package fr.xephi.authme.listener;
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import fr.xephi.authme.ClassCollector;
|
||||||
|
import fr.xephi.authme.TestHelper;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
@ -20,9 +25,7 @@ import static org.junit.Assert.fail;
|
|||||||
*/
|
*/
|
||||||
public final class ListenerConsistencyTest {
|
public final class ListenerConsistencyTest {
|
||||||
|
|
||||||
private static final Class<?>[] LISTENERS = { BlockListener.class, EntityListener.class,
|
private static List<Class<? extends Listener>> classes;
|
||||||
PlayerListener.class, PlayerListener16.class, PlayerListener18.class, PlayerListener19.class,
|
|
||||||
ServerListener.class };
|
|
||||||
|
|
||||||
private static final Set<String> CANCELED_EXCEPTIONS = Sets.newHashSet(
|
private static final Set<String> CANCELED_EXCEPTIONS = Sets.newHashSet(
|
||||||
"PlayerListener#onPlayerJoin", "PlayerListener#onPlayerLogin",
|
"PlayerListener#onPlayerJoin", "PlayerListener#onPlayerLogin",
|
||||||
@ -30,16 +33,26 @@ public final class ListenerConsistencyTest {
|
|||||||
"ServerListener#onServerPing", "ServerListener#onPluginEnable",
|
"ServerListener#onServerPing", "ServerListener#onPluginEnable",
|
||||||
"PlayerListener#onJoinMessage");
|
"PlayerListener#onJoinMessage");
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void collectListenerClasses() {
|
||||||
|
ClassCollector collector = new ClassCollector(TestHelper.SOURCES_FOLDER, TestHelper.PROJECT_ROOT + "listener");
|
||||||
|
classes = collector.collectClasses(Listener.class);
|
||||||
|
|
||||||
|
if (classes.isEmpty()) {
|
||||||
|
throw new IllegalStateException("Did not find any Listener classes. Is the folder correct?");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldSetIgnoreCancelledToTrue() {
|
public void shouldSetIgnoreCancelledToTrue() {
|
||||||
for (Class<?> listener : LISTENERS) {
|
for (Class<?> listener : classes) {
|
||||||
checkCanceledAttribute(listener);
|
checkCanceledAttribute(listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldHaveOnlyEventListenersAsPublicMembers() {
|
public void shouldHaveOnlyEventListenersAsPublicMembers() {
|
||||||
for (Class<?> listener : LISTENERS) {
|
for (Class<?> listener : classes) {
|
||||||
checkPublicMethodsAreListeners(listener);
|
checkPublicMethodsAreListeners(listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -47,7 +60,7 @@ public final class ListenerConsistencyTest {
|
|||||||
// #367: Event listeners with EventPriority.MONITOR should not change events
|
// #367: Event listeners with EventPriority.MONITOR should not change events
|
||||||
@Test
|
@Test
|
||||||
public void shouldNotHaveMonitorLevelEventHandlers() {
|
public void shouldNotHaveMonitorLevelEventHandlers() {
|
||||||
for (Class<?> listener : LISTENERS) {
|
for (Class<?> listener : classes) {
|
||||||
verifyListenerIsNotUsingMonitorPriority(listener);
|
verifyListenerIsNotUsingMonitorPriority(listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -55,7 +68,7 @@ public final class ListenerConsistencyTest {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldNotHaveMultipleMethodsWithSameName() {
|
public void shouldNotHaveMultipleMethodsWithSameName() {
|
||||||
Set<String> events = new HashSet<>();
|
Set<String> events = new HashSet<>();
|
||||||
for (Class<?> listener : LISTENERS) {
|
for (Class<?> listener : classes) {
|
||||||
for (Method method : listener.getDeclaredMethods()) {
|
for (Method method : listener.getDeclaredMethods()) {
|
||||||
if (isTestableMethod(method) && events.contains(method.getName())) {
|
if (isTestableMethod(method) && events.contains(method.getName())) {
|
||||||
fail("More than one method '" + method.getName() + "' exists (e.g. class: " + listener + ")");
|
fail("More than one method '" + method.getName() + "' exists (e.g. class: " + listener + ")");
|
||||||
|
@ -30,6 +30,10 @@ public class SettingsClassConsistencyTest {
|
|||||||
public static void scanForSettingsClasses() {
|
public static void scanForSettingsClasses() {
|
||||||
ClassCollector collector = new ClassCollector(TestHelper.SOURCES_FOLDER, SETTINGS_FOLDER);
|
ClassCollector collector = new ClassCollector(TestHelper.SOURCES_FOLDER, SETTINGS_FOLDER);
|
||||||
classes = collector.collectClasses(SettingsHolder.class);
|
classes = collector.collectClasses(SettingsHolder.class);
|
||||||
|
|
||||||
|
if (classes.isEmpty()) {
|
||||||
|
throw new IllegalStateException("Did not find any SettingsHolder classes. Is the folder correct?");
|
||||||
|
}
|
||||||
System.out.println("Found " + classes.size() + " SettingsHolder implementations");
|
System.out.println("Found " + classes.size() + " SettingsHolder implementations");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user