Skip to content

Commit 2d3146d

Browse files
committed
fix: failures due to different set of JVM properties
1 parent 51df3bb commit 2d3146d

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

src/test/java/org/apache/commons/release/plugin/mojos/BuildAttestationMojoTest.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static net.javacrumbs.jsonunit.JsonAssert.assertJsonNodePresent;
2222
import static net.javacrumbs.jsonunit.JsonAssert.assertJsonPartEquals;
2323
import static net.javacrumbs.jsonunit.JsonAssert.whenIgnoringPaths;
24+
import static org.junit.jupiter.api.Assertions.assertEquals;
2425

2526
import java.io.File;
2627
import java.io.IOException;
@@ -33,7 +34,10 @@
3334
import java.time.Instant;
3435
import java.util.Collections;
3536
import java.util.Date;
37+
import java.util.Iterator;
3638
import java.util.Properties;
39+
import java.util.Set;
40+
import java.util.TreeSet;
3741

3842
import com.fasterxml.jackson.databind.JsonNode;
3943
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -173,14 +177,31 @@ private static void assertStatementContent(final JsonNode statement) {
173177
JsonAssert.when(Option.IGNORING_VALUES).whenIgnoringPaths("jvm.args", "env"));
174178
assertJsonEquals(expectedStatement.at("/predicate/buildDefinition/internalParameters"),
175179
statement.at("/predicate/buildDefinition/internalParameters"));
180+
// `[0].annotations` holds JVM system properties;
181+
// Not all properties are available on all JDKs, so they are either null or strings, which json-unit treats as a structural mismatch.
182+
// We will check them below
176183
assertJsonEquals(expectedStatement.at("/predicate/buildDefinition/resolvedDependencies"),
177184
statement.at("/predicate/buildDefinition/resolvedDependencies"),
178-
JsonAssert.when(Option.IGNORING_VALUES));
185+
JsonAssert.when(Option.IGNORING_VALUES).whenIgnoringPaths("[0].annotations"));
186+
Set<String> expectedJdkFields = fieldNames(
187+
expectedStatement.at("/predicate/buildDefinition/resolvedDependencies/0/annotations"));
188+
Set<String> actualJdkFields = fieldNames(
189+
statement.at("/predicate/buildDefinition/resolvedDependencies/0/annotations"));
190+
assertEquals(expectedJdkFields, actualJdkFields);
179191
assertJsonEquals(expectedStatement.at("/predicate/runDetails"),
180192
statement.at("/predicate/runDetails"),
181193
whenIgnoringPaths("metadata.finishedOn"));
182194
}
183195

196+
private static Set<String> fieldNames(final JsonNode node) {
197+
Set<String> names = new TreeSet<>();
198+
Iterator<String> it = node.fieldNames();
199+
while (it.hasNext()) {
200+
names.add(it.next());
201+
}
202+
return names;
203+
}
204+
184205
@Test
185206
void attestationTest() throws Exception {
186207
MavenProjectHelper projectHelper = container.lookup(MavenProjectHelper.class);

src/test/resources/attestations/commons-text-1.4.intoto.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
"vendor": "Eclipse Adoptium",
115115
"vm.vendor": "Eclipse Adoptium",
116116
"vendor.url": "https://adoptium.net/",
117-
"specification.maintenance.version": "",
117+
"specification.maintenance.version": null,
118118
"vm.specification.version": "25",
119119
"vm.name": "OpenJDK 64-Bit Server VM",
120120
"vm.specification.name": "Java Virtual Machine Specification",

0 commit comments

Comments
 (0)