Skip to content

Commit 6eb52f6

Browse files
committed
Add tests for argument validation
1 parent 99bb8d8 commit 6eb52f6

File tree

2 files changed

+76
-16
lines changed

2 files changed

+76
-16
lines changed

src/main/java/de/donnerbart/split/TestSplitMain.java

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@
44
import com.beust.jcommander.JCommander;
55
import org.jetbrains.annotations.NotNull;
66
import org.jetbrains.annotations.Nullable;
7+
import org.jetbrains.annotations.VisibleForTesting;
78
import org.slf4j.Logger;
89
import org.slf4j.LoggerFactory;
910

1011
import java.nio.file.Files;
12+
import java.nio.file.Path;
1113
import java.nio.file.Paths;
14+
import java.util.Objects;
1215

1316
public class TestSplitMain {
1417

@@ -20,26 +23,17 @@ public static void main(final @Nullable String @NotNull [] args) throws Exceptio
2023
jCommander.usage();
2124
System.exit(0);
2225
}
23-
if (arguments.splitTotal < 1) {
24-
System.out.println("--split-total must be greater than 0");
25-
System.exit(1);
26-
}
27-
if (arguments.splitIndex > arguments.splitTotal - 1) {
28-
System.out.println("--split-index must lesser than --split-total");
29-
System.exit(1);
30-
}
31-
final var workingDirectory = arguments.workingDirectory != null ?
32-
arguments.workingDirectory.toAbsolutePath() :
33-
Paths.get(System.getProperty("user.dir")).toAbsolutePath();
34-
if (!Files.exists(workingDirectory)) {
35-
System.out.println("Working directory does not exist: " + workingDirectory);
36-
System.exit(1);
37-
}
3826
if (arguments.debug) {
3927
final var root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
4028
root.setLevel(Level.DEBUG);
4129
}
42-
30+
final var workingDirectory =
31+
Objects.requireNonNullElse(arguments.workingDirectory, Paths.get(System.getProperty("user.dir")))
32+
.toAbsolutePath()
33+
.normalize();
34+
if (!validate(arguments, workingDirectory)) {
35+
System.exit(1);
36+
}
4337
final var testSplit = new TestSplit(arguments.splitIndex,
4438
arguments.splitTotal,
4539
arguments.glob,
@@ -50,4 +44,21 @@ public static void main(final @Nullable String @NotNull [] args) throws Exceptio
5044
System::exit);
5145
testSplit.run();
5246
}
47+
48+
@VisibleForTesting
49+
static boolean validate(final @NotNull Arguments arguments, final @NotNull Path workingDirectory) {
50+
if (arguments.splitTotal < 1) {
51+
System.out.println("--split-total must be greater than 0");
52+
return false;
53+
}
54+
if (arguments.splitIndex > arguments.splitTotal - 1) {
55+
System.out.println("--split-index must lesser than --split-total");
56+
return false;
57+
}
58+
if (!Files.exists(workingDirectory)) {
59+
System.out.println("Working directory does not exist: " + arguments.workingDirectory);
60+
return false;
61+
}
62+
return true;
63+
}
5364
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package de.donnerbart.split;
2+
3+
import com.beust.jcommander.JCommander;
4+
import org.jetbrains.annotations.NotNull;
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.io.TempDir;
7+
8+
import java.nio.file.Path;
9+
10+
import static org.assertj.core.api.Assertions.assertThat;
11+
12+
class TestSplitMainTest {
13+
14+
private final @NotNull Arguments arguments = new Arguments();
15+
private final @NotNull JCommander jCommander = JCommander.newBuilder().addObject(arguments).build();
16+
17+
@TempDir
18+
private @NotNull Path tmp;
19+
20+
@Test
21+
void validateArguments() {
22+
jCommander.parse("-g", "**/*Test.java", "-t", "1", "-i", "0");
23+
assertThat(TestSplitMain.validate(arguments, tmp)).isTrue();
24+
}
25+
26+
@Test
27+
void validateArguments_withZeroSplitTotal() {
28+
jCommander.parse("-g", "**/*Test.java", "-t", "0", "-i", "0");
29+
assertThat(TestSplitMain.validate(arguments, tmp)).isFalse();
30+
}
31+
32+
@Test
33+
void validateArguments_withNegativeSplitTotal() {
34+
jCommander.parse("-g", "**/*Test.java", "-t", "-1", "-i", "0");
35+
assertThat(TestSplitMain.validate(arguments, tmp)).isFalse();
36+
}
37+
38+
@Test
39+
void validateArguments_withTooSmallSplitIndex() {
40+
jCommander.parse("-g", "**/*Test.java", "-t", "1", "-i", "1");
41+
assertThat(TestSplitMain.validate(arguments, tmp)).isFalse();
42+
}
43+
44+
@Test
45+
void validateArguments_withInvalidWorkingDirectory() {
46+
jCommander.parse("-g", "**/*Test.java", "-t", "1", "-i", "0");
47+
assertThat(TestSplitMain.validate(arguments, tmp.resolve("does-not-exist"))).isFalse();
48+
}
49+
}

0 commit comments

Comments
 (0)