Skip to content

Commit cc5d317

Browse files
committed
[QD-7821] Ensure that newly generated rule lists are mutable
While `Arrays.asList()` creates an `ArrayList`, this is NOT a `java.util.ArrayList` - and is in fact immutable. Update the tests to catch this
1 parent 900577b commit cc5d317

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-16
lines changed

sarif/src/main/java/com/jetbrains/qodana/sarif/baseline/DescriptorWithLocation.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,11 @@ void addTo(Run run) {
5151
getOrCreate(e::getRules, e::setRules, ArrayList::new)
5252
.add(descriptor);
5353
} else {
54-
// Collections.singletonList() is immutable
55-
//noinspection ArraysAsListWithZeroOrOneArgument
5654
getOrCreate(tool::getExtensions, tool::setExtensions, HashSet::new)
5755
// we don't want to copy all rules from the source AND not override them
5856
.add(location.shallowCopy()
5957
.withIsComprehensive(false)
60-
.withRules(Arrays.asList(descriptor))
58+
.withRules(new ArrayList<>(Collections.singletonList(descriptor)))
6159
);
6260
}
6361

sarif/src/test/java/com/jetbrains/qodana/sarif/BaselineTest.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.stream.Collectors;
1212

1313
import static com.jetbrains.qodana.sarif.baseline.BaselineCalculation.Options.DEFAULT;
14+
import static org.junit.jupiter.api.Assertions.assertAll;
1415
import static org.junit.jupiter.api.Assertions.assertEquals;
1516

1617
public class BaselineTest {
@@ -177,7 +178,7 @@ public void testAbsentResultWithChangedIdAndSameVersion() throws IOException {
177178
SarifReport report = readReport("src/test/resources/testData/AbsentBaselineTest/report.json");
178179
SarifReport baseline = readReport("src/test/resources/testData/AbsentBaselineTest/baseline.json");
179180

180-
doTest(report, baseline, 17, 1, 1, new BaselineCalculation.Options(true));
181+
doTest(report, baseline, 1, 17, 18, new BaselineCalculation.Options(true));
181182

182183
Set<String> knownDescriptorIds = RuleUtil.allRules(report)
183184
.map(ReportingDescriptor::getId)
@@ -198,7 +199,7 @@ public void testAbsentResultWithChangedIdAndOldVersion() throws IOException {
198199
SarifReport report = readReport("src/test/resources/testData/AbsentBaselineTest/report.json");
199200
SarifReport baseline = readReport("src/test/resources/testData/AbsentBaselineTest/baseline_old.json");
200201

201-
doTest(report, baseline, 17, 1, 1, new BaselineCalculation.Options(true));
202+
doTest(report, baseline, 0, 18, 19, new BaselineCalculation.Options(true));
202203

203204
Set<String> knownDescriptorIds = RuleUtil.allRules(report)
204205
.map(ReportingDescriptor::getId)
@@ -214,7 +215,6 @@ public void testAbsentResultWithChangedIdAndOldVersion() throws IOException {
214215
assertEquals(new ArrayList<String>(), withoutDescriptor);
215216
}
216217

217-
218218
private void doTest(SarifReport report,
219219
SarifReport baseline,
220220
int expectedUnchanged,
@@ -223,9 +223,12 @@ private void doTest(SarifReport report,
223223
BaselineCalculation.Options options
224224
) {
225225
BaselineCalculation calculation = BaselineCalculation.compare(report, baseline, options);
226-
assertEquals(expectedUnchanged, calculation.getUnchangedResults(), "Unchanged:");
227-
assertEquals(expectedAbsent, calculation.getAbsentResults(), "Absent:");
228-
assertEquals(expectedNew, calculation.getNewResults(), "New:");
226+
assertAll(
227+
() -> assertEquals(expectedUnchanged, calculation.getUnchangedResults(), "Unchanged:"),
228+
() -> assertEquals(expectedAbsent, calculation.getAbsentResults(), "Absent:"),
229+
() -> assertEquals(expectedNew, calculation.getNewResults(), "New:")
230+
);
231+
229232
List<Result> results = report.getRuns().get(0).getResults();
230233

231234
if (!options.isFillBaselineState()) {
@@ -242,9 +245,11 @@ private void doTest(SarifReport report,
242245
List<Result> resultsUnchanged = grouped.get(Result.BaselineState.UNCHANGED);
243246
List<Result> resultsAbsent = grouped.get(Result.BaselineState.ABSENT);
244247
List<Result> resultsNew = grouped.get(Result.BaselineState.NEW);
245-
assertEquals(expectedUnchanged, resultsUnchanged == null ? 0 : resultsUnchanged.size(), "Unchanged:");
246-
assertEquals(expectedAbsent, resultsAbsent == null ? 0 : resultsAbsent.size(), "Absent:");
247-
assertEquals(expectedNew, resultsNew == null ? 0 : resultsNew.size(), "New:");
248+
assertAll(
249+
() -> assertEquals(expectedUnchanged, resultsUnchanged == null ? 0 : resultsUnchanged.size(), "Unchanged:"),
250+
() -> assertEquals(expectedAbsent, resultsAbsent == null ? 0 : resultsAbsent.size(), "Absent:"),
251+
() -> assertEquals(expectedNew, resultsNew == null ? 0 : resultsNew.size(), "New:")
252+
);
248253
}
249254

250255
private void doTest(SarifReport report,
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:388443f74080fa67cc772fd3face188b8235434adbf80c5e74da494ad4f1ac4d
3-
size 6098015
2+
oid sha256:c502da2835aa0440cb7ead5614c37cd0e4e69c2cee2f913cb283ee0352341b84
3+
size 6098018
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:7f8d243d2fce304d038d0e268f5d93e828d4a3b8b35b0725444df56839bedb9a
3-
size 6094919
2+
oid sha256:e5b022a814d2342dd3545fd7b6a78a11f96d8f0dbbe027cd0378b464efe2d9c2
3+
size 6094166

0 commit comments

Comments
 (0)