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.parser;
26
27 import java.io.File;
28 import java.io.IOException;
29 import java.util.Arrays;
30 import java.util.List;
31
32 import org.assertj.core.api.Assertions;
33 import org.eluder.coveralls.maven.plugin.CoverageFixture;
34 import org.eluder.coveralls.maven.plugin.CoverageParser;
35 import org.eluder.coveralls.maven.plugin.ProcessingException;
36 import org.eluder.coveralls.maven.plugin.domain.Source;
37 import org.eluder.coveralls.maven.plugin.source.SourceCallback;
38 import org.eluder.coveralls.maven.plugin.source.SourceLoader;
39 import org.eluder.coveralls.maven.plugin.util.TestIoUtil;
40 import org.junit.jupiter.api.Test;
41 import org.mockito.ArgumentCaptor;
42 import org.mockito.Mockito;
43
44
45
46
47 class CloverParserTest extends AbstractCoverageParserTest {
48
49 @Override
50 protected CoverageParser createCoverageParser(final File coverageFile, final SourceLoader sourceLoader) {
51 return new CloverParser(coverageFile, sourceLoader);
52 }
53
54 @Override
55 protected List<String> getCoverageResources() {
56 return Arrays.asList("clover.xml");
57 }
58
59 @Override
60 protected List<List<String>> getCoverageFixture() {
61 return CoverageFixture.JAVA_FILES_CLOVER;
62 }
63
64
65
66
67
68
69
70
71
72
73 @Test
74 void parseCondLineWithZeroFalseCount() throws ProcessingException, IOException {
75 final var content = TestIoUtil.readFileContent(TestIoUtil.getFile("PartialCoverage.java"));
76 final var sourceLoader = Mockito.mock(SourceLoader.class);
77 Mockito.when(sourceLoader.load("org/eluder/coverage/sample/PartialCoverage.java"))
78 .thenAnswer(invocation -> new Source("org/eluder/coverage/sample/PartialCoverage.java", content,
79 TestIoUtil.getSha512DigestHex(content)));
80
81 final SourceCallback callback = Mockito.mock(SourceCallback.class);
82
83 final var parser = new CloverParser(TestIoUtil.getFile("clover-extra.xml"), sourceLoader);
84 parser.parse(callback);
85
86 final ArgumentCaptor<Source> captor = ArgumentCaptor.forClass(Source.class);
87 Mockito.verify(callback).onSource(captor.capture());
88
89 final var source = captor.getValue();
90
91 final var condCoverage = source.getCoverage()[5];
92 Assertions.assertThat(condCoverage).isEqualTo(0);
93 }
94
95 }