1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.eluder.coveralls.maven.plugin.source;
26
27 import java.io.File;
28 import java.io.IOException;
29 import java.nio.charset.StandardCharsets;
30 import java.nio.file.Files;
31 import java.nio.file.Path;
32
33 import org.eluder.coveralls.maven.plugin.util.TestIoUtil;
34 import org.junit.jupiter.api.Assertions;
35 import org.junit.jupiter.api.Test;
36 import org.junit.jupiter.api.io.CleanupMode;
37 import org.junit.jupiter.api.io.TempDir;
38
39
40
41
42 class ScanSourceLoaderTest {
43
44
45 @TempDir(cleanup = CleanupMode.ON_SUCCESS)
46 Path folder;
47
48
49
50
51
52
53
54 @Test
55 void missingSourceFileFromDirectory() throws IOException {
56 final var sourceLoader = new ScanSourceLoader(this.folder.toFile(), this.folder.toFile(),
57 StandardCharsets.UTF_8);
58 Assertions.assertNull(sourceLoader.load("Foo.java"));
59 }
60
61
62
63
64
65
66
67 @Test
68 void invalidSourceFile() throws IOException {
69 final var subFolder = Files.createDirectory(this.folder.resolve("subFolder")).toFile();
70 final var sourceLoader = new ScanSourceLoader(this.folder.toFile(), this.folder.toFile(),
71 StandardCharsets.UTF_8);
72 final var subFolderName = subFolder.getName();
73 Assertions.assertThrows(IllegalArgumentException.class, () -> sourceLoader.load(subFolderName));
74 }
75
76
77
78
79
80
81
82 @Test
83 void loadSource() throws IOException {
84 final var level1 = Files.createDirectory(this.folder.resolve("level1"));
85 final var level2 = Files.createDirectory(level1.resolve("level2"));
86 final var level3 = Files.createDirectory(level2.resolve("level3"));
87 final var fileA = Files.createFile(level3.resolve("AFile.java")).toFile();
88 final var fileB = Files.createFile(level3.resolve("BFile.java")).toFile();
89 TestIoUtil.writeFileContent("public class Foo {\r\n \n}\r", fileA);
90 TestIoUtil.writeFileContent("public class Foo {\r\n \n}\r", fileB);
91 final var sourceLoader = new ScanSourceLoader(this.folder.toFile(), this.folder.toFile(),
92 StandardCharsets.UTF_8);
93 final var sourceA = sourceLoader.load(fileA.getName());
94 Assertions.assertEquals(
95 "level1" + File.separator + "level2" + File.separator + "level3" + File.separator + "AFile.java",
96 sourceA.getName());
97 Assertions.assertEquals(
98 "27F0B29785725F4946DBD05F7963E507B8DB735C2803BBB80C93ECB02291B2E2F9B03CBF27526DB68B6A862F1C6541275CD413A1CCD3E07209B9CAE0C04163C6",
99 sourceA.getDigest());
100 Assertions.assertEquals(4, sourceA.getCoverage().length);
101 final var sourceB = sourceLoader.load(fileB.getName());
102 Assertions.assertEquals(
103 "level1" + File.separator + "level2" + File.separator + "level3" + File.separator + "BFile.java",
104 sourceB.getName());
105 Assertions.assertEquals(
106 "27F0B29785725F4946DBD05F7963E507B8DB735C2803BBB80C93ECB02291B2E2F9B03CBF27526DB68B6A862F1C6541275CD413A1CCD3E07209B9CAE0C04163C6",
107 sourceB.getDigest());
108 Assertions.assertEquals(4, sourceB.getCoverage().length);
109 }
110
111 }