1
2
3
4
5 package com.qulice.errorprone;
6
7 import com.qulice.spi.Environment;
8 import java.io.File;
9 import java.util.Arrays;
10 import java.util.Collections;
11 import java.util.List;
12 import java.util.Map;
13 import org.hamcrest.MatcherAssert;
14 import org.hamcrest.Matchers;
15 import org.junit.jupiter.api.Test;
16
17
18
19
20
21
22 final class BatchesTest {
23
24 @Test
25 void keepsEveryTestRootApart() {
26 final Environment env = new Environment.Mock()
27 .withTestdir("src/mock/java");
28 final Map<String, List<File>> batches = new Batches(
29 env,
30 Arrays.asList(
31 new File(env.basedir(), "src/main/java/com/qulice/Foo.java"),
32 new File(env.basedir(), "src/test/java/com/qulice/Foo.java"),
33 new File(env.basedir(), "src/mock/java/com/qulice/Foo.java")
34 )
35 ).split();
36 MatcherAssert.assertThat(
37 String.format(
38 "each source root must compile on its own: %s", batches
39 ),
40 batches.keySet(),
41 Matchers.contains("main", "test-1-src-mock-java", "test-2-src-test")
42 );
43 }
44
45 @Test
46 void namesBatchesAfterTheirRoots() {
47 final Environment env = new Environment.Mock()
48 .withTestdir("src/mock/java");
49 final Map<String, List<File>> batches = new Batches(
50 env,
51 Collections.singletonList(
52 new File(env.basedir(), "src/mock/java/com/qulice/Foo.java")
53 )
54 ).split();
55 MatcherAssert.assertThat(
56 String.format(
57 "the batch of a root must be named after it: %s", batches
58 ),
59 batches.keySet(),
60 Matchers.contains("test-1-src-mock-java")
61 );
62 }
63
64 @Test
65 void skipsEmptyBatches() {
66 final Environment env = new Environment.Mock()
67 .withTestdir("src/mock/java");
68 final Map<String, List<File>> batches = new Batches(
69 env,
70 Collections.singletonList(
71 new File(env.basedir(), "src/main/java/com/qulice/Foo.java")
72 )
73 ).split();
74 MatcherAssert.assertThat(
75 String.format("a root without sources needs no pass: %s", batches),
76 batches.keySet(),
77 Matchers.contains("main")
78 );
79 }
80
81 @Test
82 void givesNestedRootItsOwnBatch() {
83 final Environment env = new Environment.Mock()
84 .withTestdir("src/test/java/it");
85 final File outer = new File(
86 env.basedir(), "src/test/java/com/qulice/Foo.java"
87 );
88 final File inner = new File(
89 env.basedir(), "src/test/java/it/com/qulice/Foo.java"
90 );
91 final Map<String, List<File>> batches = new Batches(
92 env, Arrays.asList(outer, inner)
93 ).split();
94 MatcherAssert.assertThat(
95 String.format(
96 "a root nested in another must claim its files: %s", batches
97 ),
98 batches.get("test-1-src-test-java-it"),
99 Matchers.contains(inner)
100 );
101 }
102 }