- Add usage message on argument mismatch where available - Remove unused message keys - Create tool task to search for a message key's usages and to find unused keys
This commit is contained in:
+16
@@ -4,6 +4,7 @@ import fr.xephi.authme.data.auth.PlayerCache;
|
||||
import fr.xephi.authme.message.MessageKey;
|
||||
import fr.xephi.authme.process.Management;
|
||||
import fr.xephi.authme.service.CommonService;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -13,6 +14,8 @@ import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.mockito.hamcrest.MockitoHamcrest.argThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -71,4 +74,17 @@ public class UnregisterCommandTest {
|
||||
verify(management).performUnregister(player, password);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldStopIfSenderIsNotPlayer() {
|
||||
// given
|
||||
CommandSender sender = mock(CommandSender.class);
|
||||
|
||||
// when
|
||||
command.executeCommand(sender, Collections.singletonList("password"));
|
||||
|
||||
// then
|
||||
verifyZeroInteractions(playerCache, management);
|
||||
verify(sender).sendMessage(argThat(containsString("/authme unregister <player>")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ public class MessagesIntegrationTest {
|
||||
@Test
|
||||
public void shouldFormatColorCodes() {
|
||||
// given
|
||||
MessageKey key = MessageKey.UNSAFE_QUIT_LOCATION;
|
||||
MessageKey key = MessageKey.LOGIN_SUCCESS;
|
||||
|
||||
// when
|
||||
String[] message = messages.retrieve(key);
|
||||
@@ -115,7 +115,7 @@ public class MessagesIntegrationTest {
|
||||
@Test
|
||||
public void shouldSendMessageToPlayer() {
|
||||
// given
|
||||
MessageKey key = MessageKey.UNSAFE_QUIT_LOCATION;
|
||||
MessageKey key = MessageKey.LOGIN_SUCCESS;
|
||||
Player player = Mockito.mock(Player.class);
|
||||
|
||||
// when
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
package tools.messages;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import fr.xephi.authme.message.MessageKey;
|
||||
import tools.utils.FileIoUtils;
|
||||
import tools.utils.ToolTask;
|
||||
import tools.utils.ToolsConstants;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
|
||||
/**
|
||||
* Task which checks for {@link MessageKey} usages.
|
||||
*/
|
||||
public class CheckMessageKeyUsages implements ToolTask {
|
||||
|
||||
private static final Predicate<File> SHOULD_CHECK_FILE =
|
||||
file -> file.getName().endsWith(".java") && !file.getName().endsWith("MessageKey.java");
|
||||
|
||||
@Override
|
||||
public String getTaskName() {
|
||||
return "checkMessageUses";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Scanner scanner) {
|
||||
System.out.println("Enter a message key to find the files where it is used");
|
||||
System.out.println("Enter empty line to search for all unused message keys");
|
||||
String key = scanner.nextLine();
|
||||
|
||||
if (key.trim().isEmpty()) {
|
||||
List<MessageKey> unusedKeys = findUnusedKeys();
|
||||
if (unusedKeys.isEmpty()) {
|
||||
System.out.println("No unused MessageKey entries found :)");
|
||||
} else {
|
||||
System.out.println("Did not find usages for keys:\n- " +
|
||||
String.join("\n- ", Lists.transform(unusedKeys, MessageKey::name)));
|
||||
}
|
||||
} else {
|
||||
MessageKey messageKey = MessageKey.valueOf(key);
|
||||
List<File> filesUsingKey = findUsagesOfKey(messageKey);
|
||||
System.out.println("The following files use '" + key + "':\n- "
|
||||
+ filesUsingKey.stream().map(File::getName).collect(Collectors.joining("\n- ")));
|
||||
}
|
||||
}
|
||||
|
||||
private List<MessageKey> findUnusedKeys() {
|
||||
List<MessageKey> keys = new ArrayList<>(asList(MessageKey.values()));
|
||||
File sourceFolder = new File(ToolsConstants.MAIN_SOURCE_ROOT);
|
||||
|
||||
Consumer<File> fileProcessor = file -> {
|
||||
String source = FileIoUtils.readFromFile(file.toPath());
|
||||
keys.removeIf(key -> source.contains(key.name()));
|
||||
};
|
||||
|
||||
walkJavaFileTree(sourceFolder, fileProcessor);
|
||||
return keys;
|
||||
}
|
||||
|
||||
private List<File> findUsagesOfKey(MessageKey key) {
|
||||
List<File> filesUsingKey = new ArrayList<>();
|
||||
File sourceFolder = new File(ToolsConstants.MAIN_SOURCE_ROOT);
|
||||
|
||||
Consumer<File> usagesCollector = file -> {
|
||||
String source = FileIoUtils.readFromFile(file.toPath());
|
||||
if (source.contains(key.name())) {
|
||||
filesUsingKey.add(file);
|
||||
}
|
||||
};
|
||||
|
||||
walkJavaFileTree(sourceFolder, usagesCollector);
|
||||
return filesUsingKey;
|
||||
}
|
||||
|
||||
private static void walkJavaFileTree(File folder, Consumer<File> javaFileConsumer) {
|
||||
for (File file : FileIoUtils.listFilesOrThrow(folder)) {
|
||||
if (file.isDirectory()) {
|
||||
walkJavaFileTree(file, javaFileConsumer);
|
||||
} else if (file.isFile() && SHOULD_CHECK_FILE.test(file)) {
|
||||
javaFileConsumer.accept(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
# Sample messages file
|
||||
|
||||
unknown_user: 'We''ve got%nl%new lines%nl%and '' apostrophes'
|
||||
unsafe_spawn: '&cHere we have&bdefined some colors &dand some other <hings'
|
||||
login: '&cHere we have&bdefined some colors &dand some other <hings'
|
||||
reg_voluntarily: 'You can register yourself to the server with the command "/register <password> <ConfirmPassword>"'
|
||||
usage_log: '&cUsage: /login <password>'
|
||||
wrong_pwd: '&cWrong password!'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Sample messages file
|
||||
|
||||
unknown_user: 'Message from test2'
|
||||
unsafe_spawn: 'test2 - unsafe spawn'
|
||||
login: 'test2 - login'
|
||||
not_logged_in: 'test2 - not logged in'
|
||||
wrong_pwd: 'test2 - wrong password'
|
||||
|
||||
Reference in New Issue
Block a user