Corpus integration tests are not executed
vurhanau opened this issue · comments
Bug Category
Tests
Describe the bug
SharedIntegrationTests.integrationTestsFromJson()
ignores corpus tests.
This code filters out all files with wrong predicates: Path.endsWith(...)
, Path.startsWith(...)
is not a correct check to validate filename prefix/suffix.
Example:
public class Test {
public static void main(String[] args) {
Path p = Paths.get("/var/lib/foo.json");
System.out.println(p.startsWith("foo"));
System.out.println(p.endsWith(".json"));
}
}
Output:
false
false
Links:
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Path.html#startsWith(java.lang.String)
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Path.html#endsWith(java.lang.String)
Expected behavior
Corpus integration tests should not be ignored
Reproduction steps
- Enable integration test execution
- Observe that corpus tests are not executed
I was trying to fix this issue, but corpus tests are failing with a deserialization error:
SharedIntegrationTests > integrationTestsFromJson() > initializationError FAILED
java.io.UncheckedIOException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "type" (class com.cedarpolicy.serializer.JsonEUID), not marked as ignorable (one known property: "__expr"])
at [Source: (FileInputStream); line: 4, column: 16] (through reference chain: java.lang.Object[][0]->com.cedarpolicy.SharedIntegrationTests$JsonEntity["uid"]->com.cedarpolicy.serializer.JsonEUID["type"])
at app//com.cedarpolicy.SharedIntegrationTests.lambda$integrationTestsFromJson$1(SharedIntegrationTests.java:240)
at java.base@14/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base@14/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base@14/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base@14/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.base@14/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base@14/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base@14/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base@14/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base@14/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base@14/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at app//com.cedarpolicy.SharedIntegrationTests.integrationTestsFromJson(SharedIntegrationTests.java:233)
Caused by:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "type" (class com.cedarpolicy.serializer.JsonEUID), not marked as ignorable (one known property: "__expr"])
at [Source: (FileInputStream); line: 4, column: 16] (through reference chain: java.lang.Object[][0]->com.cedarpolicy.SharedIntegrationTests$JsonEntity["uid"]->com.cedarpolicy.serializer.JsonEUID["type"])
at app//com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
at app//com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1138)
at app//com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2224)
at app//com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1709)
at app//com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1687)
at app//com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:320)
at app//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at app//com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138)
at app//com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:314)
at app//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at app//com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:216)
at app//com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:26)
at app//com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
at app//com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2105)
at app//com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1481)
at app//com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1496)
at app//com.cedarpolicy.SharedIntegrationTests.loadEntities(SharedIntegrationTests.java:332)
at app//com.cedarpolicy.SharedIntegrationTests.loadJsonTests(SharedIntegrationTests.java:257)
at app//com.cedarpolicy.SharedIntegrationTests.lambda$integrationTestsFromJson$1(SharedIntegrationTests.java:236)
... 11 more
1 test completed, 1 failed
> Task :test FAILED
Thanks for reporting this! We'll take a look and get back to you.