Skip to content

Commit 2db2c04

Browse files
author
Janik Müller
committed
TS-44526 add tests for TeamscaleClient, MetricsEvaluator and FindingsEvaluator, fix pom.xml error and remove unused dependencies
1 parent 6274f2b commit 2db2c04

File tree

4 files changed

+915
-22
lines changed

4 files changed

+915
-22
lines changed

pom.xml

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@
3030
<artifactId>okhttp</artifactId>
3131
<version>3.14.2</version>
3232
</dependency>
33-
<dependency>
34-
<groupId>com.fasterxml.jackson.core</groupId>
35-
<artifactId>jackson-databind</artifactId>
36-
<version>2.9.10.5</version>
37-
</dependency>
3833
<dependency>
3934
<groupId>info.picocli</groupId>
4035
<artifactId>picocli</artifactId>
@@ -56,9 +51,16 @@
5651
<version>2.4.0</version>
5752
</dependency>
5853
<dependency>
59-
<groupId>com.google.code.gson</groupId>
60-
<artifactId>gson</artifactId>
61-
<version>2.8.6</version>
54+
<groupId>org.junit.jupiter</groupId>
55+
<artifactId>junit-jupiter</artifactId>
56+
<version>5.7.2</version>
57+
<scope>test</scope>
58+
</dependency>
59+
<dependency>
60+
<groupId>com.squareup.okhttp3</groupId>
61+
<artifactId>mockwebserver</artifactId>
62+
<version>3.14.2</version>
63+
<scope>test</scope>
6264
</dependency>
6365
<dependency>
6466
<groupId>org.assertj</groupId>
@@ -72,18 +74,6 @@
7274
<version>1.7.28</version>
7375
<scope>compile</scope>
7476
</dependency>
75-
<dependency>
76-
<groupId>com.squareup.moshi</groupId>
77-
<artifactId>moshi</artifactId>
78-
<version>1.11.0</version>
79-
<scope>test</scope>
80-
</dependency>
81-
<dependency>
82-
<groupId>com.sparkjava</groupId>
83-
<artifactId>spark-core</artifactId>
84-
<version>2.5</version>
85-
<scope>test</scope>
86-
</dependency>
8777
</dependencies>
8878

8979
<build>
@@ -199,8 +189,10 @@
199189
<goal>process-asciidoc</goal>
200190
</goals>
201191
<configuration>
202-
<sourceHighlighter>coderay</sourceHighlighter>
203192
<backend>html5</backend>
193+
<attributes>
194+
<source-highlighter>coderay</source-highlighter>
195+
</attributes>
204196
</configuration>
205197
</execution>
206198
<execution>
@@ -210,8 +202,10 @@
210202
<goal>process-asciidoc</goal>
211203
</goals>
212204
<configuration>
213-
<sourceHighlighter>coderay</sourceHighlighter>
214205
<backend>manpage</backend>
206+
<attributes>
207+
<source-highlighter>coderay</source-highlighter>
208+
</attributes>
215209
</configuration>
216210
</execution>
217211
</executions>
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
package com.teamscale.buildbreaker.evaluation;
2+
3+
import org.conqat.lib.commons.collections.Pair;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.Collections;
7+
import java.util.List;
8+
9+
import static com.teamscale.buildbreaker.evaluation.ProblemCategory.ERROR;
10+
import static com.teamscale.buildbreaker.evaluation.ProblemCategory.NO_PROBLEM;
11+
import static com.teamscale.buildbreaker.evaluation.ProblemCategory.WARNING;
12+
import static org.assertj.core.api.Assertions.assertThat;
13+
14+
class FindingsEvaluatorTest {
15+
16+
private final FindingsEvaluator evaluator = new FindingsEvaluator();
17+
18+
@Test
19+
void emptyFindingsProduceNoViolations() {
20+
EvaluationResult result = evaluator.evaluate(
21+
Pair.createPair(Collections.emptyList(), Collections.emptyList()), false, false);
22+
assertThat(result.toStatusCode()).isEqualTo(0);
23+
}
24+
25+
@Test
26+
void errorFindingIsAlwaysReported() {
27+
Finding error = createFinding("err-1", ERROR);
28+
EvaluationResult result = evaluator.evaluate(
29+
Pair.createPair(List.of(error), Collections.emptyList()), false, false);
30+
assertThat(result.toStatusCode()).isEqualTo(1);
31+
assertThat(result.toString()).contains("err-1");
32+
}
33+
34+
@Test
35+
void warningFindingIsSkippedWhenFailOnYellowIsFalse() {
36+
Finding warning = createFinding("warn-1", WARNING);
37+
EvaluationResult result = evaluator.evaluate(
38+
Pair.createPair(List.of(warning), Collections.emptyList()), false, false);
39+
assertThat(result.toStatusCode()).isEqualTo(0);
40+
}
41+
42+
@Test
43+
void warningFindingIsReportedWhenFailOnYellowIsTrue() {
44+
Finding warning = createFinding("warn-1", WARNING);
45+
EvaluationResult result = evaluator.evaluate(
46+
Pair.createPair(List.of(warning), Collections.emptyList()), true, false);
47+
assertThat(result.toStatusCode()).isEqualTo(2);
48+
assertThat(result.toString()).contains("warn-1");
49+
}
50+
51+
@Test
52+
void noProblemFindingDoesNotAffectStatusCode() {
53+
Finding noProblem = createFinding("np-1", NO_PROBLEM);
54+
EvaluationResult result = evaluator.evaluate(
55+
Pair.createPair(List.of(noProblem), Collections.emptyList()), true, false);
56+
assertThat(result.toStatusCode()).isEqualTo(0);
57+
}
58+
59+
@Test
60+
void changedCodeFindingsExcludedWhenIncludeChangedCodeIsFalse() {
61+
Finding changedCodeError = createFinding("changed-err", ERROR);
62+
EvaluationResult result = evaluator.evaluate(
63+
Pair.createPair(Collections.emptyList(), List.of(changedCodeError)), false, false);
64+
assertThat(result.toStatusCode()).isEqualTo(0);
65+
}
66+
67+
@Test
68+
void changedCodeFindingsIncludedWhenIncludeChangedCodeIsTrue() {
69+
Finding changedCodeError = createFinding("changed-err", ERROR);
70+
EvaluationResult result = evaluator.evaluate(
71+
Pair.createPair(Collections.emptyList(), List.of(changedCodeError)), false, true);
72+
assertThat(result.toStatusCode()).isEqualTo(1);
73+
assertThat(result.toString()).contains("changed-err");
74+
}
75+
76+
@Test
77+
void newAndChangedCodeFindingsCombinedWhenIncludeChangedCodeIsTrue() {
78+
Finding newCodeError = createFinding("new-err", ERROR);
79+
Finding changedCodeWarning = createFinding("changed-warn", WARNING);
80+
EvaluationResult result = evaluator.evaluate(
81+
Pair.createPair(List.of(newCodeError), List.of(changedCodeWarning)), true, true);
82+
assertThat(result.toStatusCode()).isEqualTo(1);
83+
assertThat(result.toString()).contains("new-err");
84+
assertThat(result.toString()).contains("changed-warn");
85+
}
86+
87+
@Test
88+
void onlyNewCodeFindingsEvaluatedWhenIncludeChangedCodeIsFalse() {
89+
Finding newCodeError = createFinding("new-err", ERROR);
90+
Finding changedCodeError = createFinding("changed-err", ERROR);
91+
EvaluationResult result = evaluator.evaluate(
92+
Pair.createPair(List.of(newCodeError), List.of(changedCodeError)), false, false);
93+
assertThat(result.toString()).contains("new-err");
94+
assertThat(result.toString()).doesNotContain("changed-err");
95+
}
96+
97+
@Test
98+
void errorAndWarningMixWithFailOnYellowFalse() {
99+
Finding error = createFinding("err-1", ERROR);
100+
Finding warning = createFinding("warn-1", WARNING);
101+
EvaluationResult result = evaluator.evaluate(
102+
Pair.createPair(List.of(error, warning), Collections.emptyList()), false, false);
103+
assertThat(result.toStatusCode()).isEqualTo(1);
104+
assertThat(result.toString()).contains("err-1");
105+
assertThat(result.toString()).doesNotContain("warn-1");
106+
}
107+
108+
@Test
109+
void errorAndWarningMixWithFailOnYellowTrue() {
110+
Finding error = createFinding("err-1", ERROR);
111+
Finding warning = createFinding("warn-1", WARNING);
112+
EvaluationResult result = evaluator.evaluate(
113+
Pair.createPair(List.of(error, warning), Collections.emptyList()), true, false);
114+
assertThat(result.toStatusCode()).isEqualTo(1);
115+
assertThat(result.toString()).contains("err-1");
116+
assertThat(result.toString()).contains("warn-1");
117+
}
118+
119+
@Test
120+
void multipleWarningsWithFailOnYellowTrue() {
121+
Finding warning1 = createFinding("warn-1", WARNING);
122+
Finding warning2 = createFinding("warn-2", WARNING);
123+
EvaluationResult result = evaluator.evaluate(
124+
Pair.createPair(List.of(warning1, warning2), Collections.emptyList()), true, false);
125+
assertThat(result.toStatusCode()).isEqualTo(2);
126+
assertThat(result.toString()).contains("warn-1");
127+
assertThat(result.toString()).contains("warn-2");
128+
}
129+
130+
private static Finding createFinding(String id, ProblemCategory assessment) {
131+
return new Finding(id, "TestGroup", "TestCategory", "Test message", "path/to/File.java", assessment);
132+
}
133+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.teamscale.buildbreaker.evaluation;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.util.Collections;
6+
import java.util.List;
7+
8+
import static com.teamscale.buildbreaker.evaluation.ProblemCategory.ERROR;
9+
import static com.teamscale.buildbreaker.evaluation.ProblemCategory.NO_PROBLEM;
10+
import static com.teamscale.buildbreaker.evaluation.ProblemCategory.WARNING;
11+
import static org.assertj.core.api.Assertions.assertThat;
12+
13+
class MetricsEvaluatorTest {
14+
15+
private final MetricsEvaluator evaluator = new MetricsEvaluator();
16+
17+
@Test
18+
void emptyViolationListProducesNoViolations() {
19+
EvaluationResult result = evaluator.evaluate(Collections.emptyList(), false);
20+
assertThat(result.toStatusCode()).isEqualTo(0);
21+
}
22+
23+
@Test
24+
void errorViolationIsAlwaysReported() {
25+
MetricViolation error = createViolation("Coverage", ERROR);
26+
EvaluationResult result = evaluator.evaluate(List.of(error), false);
27+
assertThat(result.toStatusCode()).isEqualTo(1);
28+
}
29+
30+
@Test
31+
void warningViolationIsSkippedWhenFailOnYellowIsFalse() {
32+
MetricViolation warning = createViolation("Coverage", WARNING);
33+
EvaluationResult result = evaluator.evaluate(List.of(warning), false);
34+
assertThat(result.toStatusCode()).isEqualTo(0);
35+
}
36+
37+
@Test
38+
void warningViolationIsReportedWhenFailOnYellowIsTrue() {
39+
MetricViolation warning = createViolation("Coverage", WARNING);
40+
EvaluationResult result = evaluator.evaluate(List.of(warning), true);
41+
assertThat(result.toStatusCode()).isEqualTo(2);
42+
}
43+
44+
@Test
45+
void noProblemViolationDoesNotAffectStatusCode() {
46+
MetricViolation noProblem = createViolation("Coverage", NO_PROBLEM);
47+
EvaluationResult result = evaluator.evaluate(List.of(noProblem), false);
48+
assertThat(result.toStatusCode()).isEqualTo(0);
49+
}
50+
51+
@Test
52+
void errorAndWarningMixWithFailOnYellowFalse() {
53+
MetricViolation error = createViolation("Complexity", ERROR);
54+
MetricViolation warning = createViolation("Coverage", WARNING);
55+
EvaluationResult result = evaluator.evaluate(List.of(error, warning), false);
56+
assertThat(result.toStatusCode()).isEqualTo(1);
57+
assertThat(result.toString()).contains("Complexity");
58+
assertThat(result.toString()).doesNotContain("Coverage");
59+
}
60+
61+
@Test
62+
void errorAndWarningMixWithFailOnYellowTrue() {
63+
MetricViolation error = createViolation("Complexity", ERROR);
64+
MetricViolation warning = createViolation("Coverage", WARNING);
65+
EvaluationResult result = evaluator.evaluate(List.of(error, warning), true);
66+
assertThat(result.toStatusCode()).isEqualTo(1);
67+
assertThat(result.toString()).contains("Complexity");
68+
assertThat(result.toString()).contains("Coverage");
69+
}
70+
71+
@Test
72+
void multipleWarningsWithFailOnYellowTrue() {
73+
MetricViolation warning1 = createViolation("Coverage", WARNING);
74+
MetricViolation warning2 = createViolation("Complexity", WARNING);
75+
EvaluationResult result = evaluator.evaluate(List.of(warning1, warning2), true);
76+
assertThat(result.toStatusCode()).isEqualTo(2);
77+
assertThat(result.toString()).contains("Coverage");
78+
assertThat(result.toString()).contains("Complexity");
79+
}
80+
81+
private static MetricViolation createViolation(String displayName, ProblemCategory rating) {
82+
return new MetricViolation(displayName, "50", "80", "52", rating);
83+
}
84+
}

0 commit comments

Comments
 (0)