mirror of
https://github.com/RatzzFatzz/MKVAudioSubtitleChanger.git
synced 2026-02-11 10:05:58 +01:00
Make picocli fully handle config validation
This commit is contained in:
@@ -1,15 +1,25 @@
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config;
|
||||
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.Main;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validation.ValidationExecutionStrategy;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import picocli.CommandLine;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.PathUtils.TEST_FILE;
|
||||
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.TestUtil.args;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class ConfigTest {
|
||||
class InputConfigTest {
|
||||
private static final String TEST_INVALID_DIR = "src/test/resources/test-dir";
|
||||
|
||||
@Test
|
||||
void initConfig() {
|
||||
@@ -42,4 +52,31 @@ class ConfigTest {
|
||||
|
||||
assertNull(InputConfig.getInstance().getConfigPath());
|
||||
}
|
||||
|
||||
|
||||
private static Stream<Arguments> jakartaValidationData() {
|
||||
return Stream.of(
|
||||
Arguments.of(new String[]{"-l", "/arstarstarst", "-a", "jpn:ger"}, "libraryPath does not exist"),
|
||||
Arguments.of(args("-m", TEST_INVALID_DIR), "mkvToolNix does not exist"),
|
||||
Arguments.of(args("-t", "0"), "threads must be greater than or equal to 1"),
|
||||
Arguments.of(args("-t", "-1"), "threads must be greater than or equal to 1"),
|
||||
Arguments.of(args("-c", "-1"), "coherent must be greater than or equal to 0")
|
||||
);
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("jakartaValidationData")
|
||||
void testJakartaValidation(String[] args, String expectedMessage) {
|
||||
InputConfig.getInstance(true);
|
||||
StringWriter writer = new StringWriter();
|
||||
PrintWriter printWriter = new PrintWriter(writer);
|
||||
|
||||
new CommandLine(Main.class)
|
||||
.setExecutionStrategy(new ValidationExecutionStrategy())
|
||||
.setErr(printWriter)
|
||||
.execute(args);
|
||||
|
||||
printWriter.flush();
|
||||
assertTrue(writer.toString().contains(expectedMessage));
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config;
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.fields;
|
||||
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.Main;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig;
|
||||
@@ -1,6 +1,7 @@
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config;
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.fields;
|
||||
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.Main;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.InputConfig;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
@@ -1,6 +1,7 @@
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config;
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.fields;
|
||||
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.Main;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.InputConfig;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
@@ -38,13 +39,5 @@ class IntegerConfigParameterTest {
|
||||
Main sut = new Main();
|
||||
assertThrows(CommandLine.MissingParameterException.class, () -> CommandLine.populateCommand(sut, args("-t")));
|
||||
assertThrows(CommandLine.MissingParameterException.class, () -> CommandLine.populateCommand(sut, args("--threads")));
|
||||
|
||||
StringWriter writer = new StringWriter();
|
||||
PrintWriter printWriter = new PrintWriter(writer);
|
||||
CommandLine underTest = new CommandLine(sut);
|
||||
underTest = underTest.setErr(printWriter);
|
||||
underTest.execute(args("-t", "0"));
|
||||
printWriter.flush();
|
||||
assertTrue(writer.toString().contains("threads must be greater than or equal to 1"));
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config;
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.fields;
|
||||
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.Main;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.InputConfig;
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
@@ -18,7 +19,6 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class MkvToolNixPathConfigParameterTest {
|
||||
|
||||
private static final String TEST_INVALID_DIR = "src/test/resources/test-dir";
|
||||
private static final String TEST_MKVTOOLNIX_DIR = SystemUtils.IS_OS_WINDOWS ? "src/test/resources/mkvtoolnix_exe" : "src/test/resources/mkvtoolnix";
|
||||
|
||||
private static Stream<Arguments> provideTestCases() {
|
||||
@@ -39,7 +39,6 @@ class MkvToolNixPathConfigParameterTest {
|
||||
@Test
|
||||
void validate() {
|
||||
Main sut = new Main();
|
||||
// assertThrows(CommandLine.ParameterException.class, () -> new CommandLine(sut).execute(args("-m", TEST_INVALID_DIR)));
|
||||
assertThrows(CommandLine.ParameterException.class, () -> CommandLine.populateCommand(sut, args("-m")));
|
||||
assertThrows(CommandLine.ParameterException.class, () -> CommandLine.populateCommand(sut, args("")));
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config;
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.fields;
|
||||
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.Main;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.InputConfig;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
@@ -1,6 +1,7 @@
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config;
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.fields;
|
||||
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.Main;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.InputConfig;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
@@ -1,6 +1,7 @@
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config;
|
||||
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.fields;
|
||||
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.Main;
|
||||
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.InputConfig;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
Reference in New Issue
Block a user