-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathiipc-jwarc.json
More file actions
4 lines (4 loc) · 266 KB
/
iipc-jwarc.json
File metadata and controls
4 lines (4 loc) · 266 KB
1
2
3
4
{"repository": "iipc/jwarc", "language": "java", "clone_url": "https://github.com/iipc/jwarc.git", "collection_timestamp": "2023-11-24T13:58:06.066270Z", "commit_hash": "e00ce46c1e36d68ccec59e8c510fc0f1b50da424", "commit_message": "CdxRequestEncoder: Match pywb's 4096 character truncation correctly\n", "commit_timestamp": "2023-06-20T06:00:07Z", "previous_commit_hash": "e00277a5a8569d039a7d739e69af9219591485a0", "previous_commit_message": "Bump version to 0.23.1-SNAPSHOT\n", "previous_commit_timestamp": "2023-06-19T09:57:05Z", "time_to_patch": "20:03:02", "bug_patch": "diff --git a/src/org/netpreserve/jwarc/cdx/CdxRequestEncoder.java b/src/org/netpreserve/jwarc/cdx/CdxRequestEncoder.java\nindex 9ac2df3..20af855 100644\n--- a/src/org/netpreserve/jwarc/cdx/CdxRequestEncoder.java\n+++ b/src/org/netpreserve/jwarc/cdx/CdxRequestEncoder.java\n@@ -28,18 +28,19 @@ public class CdxRequestEncoder {\n StringBuilder out = new StringBuilder();\n out.append(\"__wb_method=\");\n out.append(httpRequest.method());\n+ int maxLength = out.length() + 1 + QUERY_STRING_LIMIT;\n MediaType baseContentType = httpRequest.contentType().base();\n InputStream stream = new BufferedInputStream(httpRequest.body().stream(), BUFFER_SIZE);\n if (baseContentType.equals(MediaType.WWW_FORM_URLENCODED)) {\n encodeFormBody(stream, out);\n } else if (baseContentType.equals(MediaType.JSON)) {\n- encodeJsonBody(stream, out, false);\n+ encodeJsonBody(stream, out, maxLength, false);\n } else if (baseContentType.equals(MediaType.PLAIN_TEXT)) {\n- encodeJsonBody(stream, out, true);\n+ encodeJsonBody(stream, out, maxLength, true);\n } else {\n encodeBinaryBody(stream, out);\n }\n- return out.substring(0, Math.min(out.length(), QUERY_STRING_LIMIT));\n+ return out.substring(0, Math.min(out.length(), maxLength));\n }\n \n static void encodeBinaryBody(InputStream stream, StringBuilder out) throws IOException {\n@@ -61,14 +62,14 @@ public class CdxRequestEncoder {\n }\n }\n \n- private static void encodeJsonBody(InputStream stream, StringBuilder output, boolean binaryFallback) throws IOException {\n+ private static void encodeJsonBody(InputStream stream, StringBuilder output, int maxLength, boolean binaryFallback) throws IOException {\n stream.mark(BUFFER_SIZE);\n JsonParser parser = new JsonFactory().createParser(stream);\n Map<String,Long> nameCounts = new HashMap<>();\n Deque<String> nameStack = new ArrayDeque<>();\n String name = null;\n try {\n- while (parser.nextToken() != null && output.length() < QUERY_STRING_LIMIT) {\n+ while (parser.nextToken() != null && output.length() < maxLength) {\n switch (parser.currentToken()) {\n case FIELD_NAME:\n name = parser.getCurrentName();\n", "bug_patch_file_extensions": ["java"], "test_patch": "diff --git a/test/org/netpreserve/jwarc/cdx/CdxRequestEncoderTest.java b/test/org/netpreserve/jwarc/cdx/CdxRequestEncoderTest.java\nindex 95cc314..6d14354 100644\n--- a/test/org/netpreserve/jwarc/cdx/CdxRequestEncoderTest.java\n+++ b/test/org/netpreserve/jwarc/cdx/CdxRequestEncoderTest.java\n@@ -12,6 +12,7 @@ import java.nio.file.Files;\n import java.nio.file.Path;\n import java.nio.file.StandardOpenOption;\n import java.util.Arrays;\n+import java.util.Collections;\n \n import static java.nio.charset.StandardCharsets.UTF_8;\n import static org.junit.Assert.assertEquals;\n@@ -47,26 +48,44 @@ public class CdxRequestEncoderTest {\n new Case(\"__wb_method=POST&a=2\",\n MediaType.PLAIN_TEXT, \"{\\\"a\\\":2}\"),\n new Case(\"__wb_method=POST&__wb_post_data=bm90IGpzb24=\",\n- MediaType.PLAIN_TEXT, \"not json\")\n+ MediaType.PLAIN_TEXT, \"not json\"),\n+ new Case(\"__wb_method=POST&\" + (\"bigtext=\" +\n+ String.join(\"+\", Collections.nCopies(1000, \"this+is+very+long\"))).substring(0, 4096),\n+ MediaType.JSON, \"{\\\"bigtext\\\": \\\"\" +\n+ String.join(\" \", Collections.nCopies(1000, \"this is very long\")) + \"\\\"}\", \"x=1\"),\n };\n \n public static class Case {\n final String expected;\n final MediaType requestType;\n final byte[] requestBody;\n+ final String queryString;\n \n public Case(String expected, MediaType requestType, String requestBody) {\n this(expected, requestType, requestBody.getBytes(UTF_8));\n }\n \n+ public Case(String expected, MediaType requestType, String requestBody, String queryString) {\n+ this(expected, requestType, requestBody.getBytes(UTF_8), queryString);\n+ }\n+\n public Case(String expected, MediaType requestType, byte[] requestBody) {\n+ this(expected, requestType, requestBody, null);\n+ }\n+\n+ public Case(String expected, MediaType requestType, byte[] requestBody, String queryString) {\n this.expected = expected;\n this.requestType = requestType;\n this.requestBody = requestBody;\n+ this.queryString = queryString;\n }\n \n public HttpRequest request() {\n- return new HttpRequest.Builder(\"POST\", \"/foo\")\n+ String target = \"/foo\";\n+ if (queryString != null) {\n+ target += \"?\" + queryString;\n+ }\n+ return new HttpRequest.Builder(\"POST\", target)\n .body(requestType, requestBody)\n .build();\n }\n@@ -114,8 +133,10 @@ public class CdxRequestEncoderTest {\n String[] params = queryString.split(\"&\");\n Arrays.sort(params);\n String sortedQueryString = String.join(\"&\", params);\n- String expectedKey = URIs.toNormalizedSurt(\"http://example\" + cases[i].request().target() + \"?\" +\n- cases[i].expected).replaceFirst(\".*\\\\?\", \"\");\n+ String target = cases[i].request().target();\n+ String expectedSurt = URIs.toNormalizedSurt(\"http://example\" + target +\n+ (target.contains(\"?\") ? \"&\" : \"?\") + cases[i].expected);\n+ String expectedKey = expectedSurt.replaceFirst(\".*\\\\?\", \"\");\n assertEquals(\"Case \" + i, expectedKey, sortedQueryString);\n }\n } finally {\n", "test_patch_file_extensions": ["java"], "non_code_patch": "", "non_code_patch_file_extensions": [], "change_type": "SOURCE_ONLY", "actions_runs": [[{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.166, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.019, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.224, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.015, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.019, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.025, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.012, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.073, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.035, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.009, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.012, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.987, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.987, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.018, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.018, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.01, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/0a72ed6f-db53-4878-ba22-51eb0e28a4f7/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "f689fc5a-db7b-4f9f-ad6c-287c310b4f10", "build_tool": "maven", "elapsed_time": 35.57874941825867, "default_actions": false}], [{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.127, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.019, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.192, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.014, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.028, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.013, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.065, "results": [{"result": "Failure", "message": "Case 8 expected:<...his+is+very+long+thi[s+is+very+long+th]> but was:<...his+is+very+long+thi[]>", "type": "org.junit.ComparisonFailure"}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.005, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.779, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.779, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.018, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.013, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/0a72ed6f-db53-4878-ba22-51eb0e28a4f7/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "897023bd-49ed-4aab-a1af-978d5ddd75a7", "build_tool": "maven", "elapsed_time": 31.878403902053833, "default_actions": false}], [{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.144, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.259, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.026, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.024, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.019, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.017, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.059, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.024, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.004, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.047, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.012, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.805, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.805, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.038, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.015, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/0a72ed6f-db53-4878-ba22-51eb0e28a4f7/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "282f640e-e96f-4405-b9f0-3e5944a8d0a8", "build_tool": "maven", "elapsed_time": 29.61822748184204, "default_actions": false}]], "strategy": "PASS_PASS", "issues": []}
{"repository": "iipc/jwarc", "language": "java", "clone_url": "https://github.com/iipc/jwarc.git", "collection_timestamp": "2023-11-24T13:59:59.525807Z", "commit_hash": "62dffb16a1a899cbb1182dec18413e0e523b2740", "commit_message": "ARC parser: Don't add MIME field to buffer\n\nWe're ignoring it anyway and in the case of a bogus MIME entry it could get prepended to the length field.\n", "commit_timestamp": "2023-07-26T07:44:26Z", "previous_commit_hash": "0561764a9fab23ffa87a5340dd4a940b3e9dd043", "previous_commit_message": "Release 0.27.0\n\nNew features\n\n* Added a HttpRequest.Builder(method, uri) constructor that populates\n the Host header.\n\nBugs fixed:\n\n* WarcWriter.fetch(uri) was omitting the query string\n\nChanges:\n\n* ARC parser now accepts garbage in the MIME field\n* HTTP parser in lenient mode now accepts messages without a minor\n version number (e.g. \"HTTP/2\") #70\n", "previous_commit_timestamp": "2023-07-26T06:10:08Z", "time_to_patch": "1:34:18", "bug_patch": "diff --git a/src/org/netpreserve/jwarc/WarcParser.java b/src/org/netpreserve/jwarc/WarcParser.java\nindex 7207246..753d66d 100644\n--- a/src/org/netpreserve/jwarc/WarcParser.java\n+++ b/src/org/netpreserve/jwarc/WarcParser.java\n@@ -20,7 +20,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;\n import static java.nio.charset.StandardCharsets.US_ASCII;\n \n \n-// line 147 \"WarcParser.rl\"\n+// line 142 \"WarcParser.rl\"\n \n \n /**\n@@ -243,30 +243,23 @@ case 1:\n \tcase 10:\n // line 80 \"WarcParser.rl\"\n \t{\n- // TODO\n+ setHeader(\"Content-Length\", new String(buf, 0, bufPos, US_ASCII));\n bufPos = 0;\n }\n \tbreak;\n \tcase 11:\n // line 85 \"WarcParser.rl\"\n \t{\n- setHeader(\"Content-Length\", new String(buf, 0, bufPos, US_ASCII));\n- bufPos = 0;\n-}\n-\tbreak;\n-\tcase 12:\n-// line 90 \"WarcParser.rl\"\n-\t{\n protocol = \"ARC\";\n major = 1;\n minor = 1;\n }\n \tbreak;\n-\tcase 13:\n-// line 145 \"WarcParser.rl\"\n+\tcase 12:\n+// line 140 \"WarcParser.rl\"\n \t{ { p += 1; _goto_targ = 5; if (true) continue _goto;} }\n \tbreak;\n-// line 270 \"WarcParser.java\"\n+// line 263 \"WarcParser.java\"\n \t\t\t}\n \t\t}\n \t}\n@@ -286,7 +279,7 @@ case 5:\n \tbreak; }\n \t}\n \n-// line 209 \"WarcParser.rl\"\n+// line 204 \"WarcParser.rl\"\n \n position += p - data.position();\n data.position(p);\n@@ -340,14 +333,13 @@ case 5:\n }\n \n \n-// line 344 \"WarcParser.java\"\n+// line 337 \"WarcParser.java\"\n private static byte[] init__warc_actions_0()\n {\n \treturn new byte [] {\n \t 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1,\n-\t 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1,\n-\t 13, 2, 0, 10, 2, 3, 0, 2, 4, 0, 2, 6,\n-\t 0, 3, 11, 12, 13\n+\t 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 12, 2,\n+\t 3, 0, 2, 4, 0, 2, 6, 0, 3, 10, 11, 12\n \t};\n }\n \n@@ -362,9 +354,9 @@ private static short[] init__warc_key_offsets_0()\n \t 104, 106, 109, 111, 114, 116, 119, 121, 123, 125, 127, 129,\n \t 131, 133, 135, 137, 139, 141, 143, 145, 147, 148, 165, 167,\n \t 169, 172, 188, 205, 224, 228, 233, 236, 253, 269, 284, 302,\n-\t 309, 312, 316, 334, 351, 368, 386, 403, 412, 423, 435, 439,\n-\t 445, 448, 449, 452, 453, 456, 457, 460, 461, 477, 478, 494,\n-\t 500, 501, 519, 525, 531, 537, 537\n+\t 309, 312, 316, 334, 351, 368, 386, 403, 412, 423, 435, 441,\n+\t 444, 445, 448, 449, 452, 453, 456, 457, 473, 474, 490, 496,\n+\t 497, 515, 521, 527, 533, 533\n \t};\n }\n \n@@ -410,15 +402,15 @@ private static char[] init__warc_trans_keys_0()\n \t 46, 48, 57, 65, 90, 94, 122, 9, 10, 32, 34, 92,\n \t 33, 126, 128, 255, 9, 34, 92, 32, 47, 48, 57, 58,\n \t 126, 128, 255, 9, 10, 34, 92, 32, 47, 48, 57, 58,\n-\t 126, 128, 255, 9, 10, 32, 59, 10, 32, 0, 191, 194,\n-\t 244, 32, 48, 57, 32, 46, 48, 57, 46, 46, 48, 57,\n-\t 46, 46, 48, 57, 46, 13, 33, 124, 126, 35, 39, 42,\n-\t 43, 45, 46, 48, 57, 65, 90, 94, 122, 10, 33, 58,\n-\t 124, 126, 35, 39, 42, 43, 45, 46, 48, 57, 65, 90,\n-\t 94, 122, 9, 13, 32, 127, 0, 31, 10, 9, 13, 32,\n-\t 33, 124, 126, 35, 39, 42, 43, 45, 46, 48, 57, 65,\n-\t 90, 94, 122, 9, 13, 32, 127, 0, 31, 9, 13, 32,\n-\t 127, 0, 31, 9, 13, 32, 127, 0, 31, 0\n+\t 126, 128, 255, 10, 32, 0, 191, 194, 244, 32, 48, 57,\n+\t 32, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 57,\n+\t 46, 13, 33, 124, 126, 35, 39, 42, 43, 45, 46, 48,\n+\t 57, 65, 90, 94, 122, 10, 33, 58, 124, 126, 35, 39,\n+\t 42, 43, 45, 46, 48, 57, 65, 90, 94, 122, 9, 13,\n+\t 32, 127, 0, 31, 10, 9, 13, 32, 33, 124, 126, 35,\n+\t 39, 42, 43, 45, 46, 48, 57, 65, 90, 94, 122, 9,\n+\t 13, 32, 127, 0, 31, 9, 13, 32, 127, 0, 31, 9,\n+\t 13, 32, 127, 0, 31, 0\n \t};\n }\n \n@@ -433,9 +425,9 @@ private static byte[] init__warc_single_lengths_0()\n \t 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0,\n \t 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 2, 0,\n \t 1, 6, 5, 7, 4, 3, 3, 5, 4, 3, 6, 3,\n-\t 3, 0, 6, 5, 5, 6, 5, 5, 3, 4, 4, 2,\n-\t 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 4,\n-\t 1, 6, 4, 4, 4, 0, 0\n+\t 3, 0, 6, 5, 5, 6, 5, 5, 3, 4, 2, 1,\n+\t 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 4, 1,\n+\t 6, 4, 4, 4, 0, 0\n \t};\n }\n \n@@ -450,9 +442,9 @@ private static byte[] init__warc_range_lengths_0()\n \t 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n \t 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, 0, 1,\n \t 1, 5, 6, 6, 0, 1, 0, 6, 6, 6, 6, 2,\n-\t 0, 2, 6, 6, 6, 6, 6, 2, 4, 4, 0, 2,\n-\t 1, 0, 1, 0, 1, 0, 1, 0, 6, 0, 6, 1,\n-\t 0, 6, 1, 1, 1, 0, 0\n+\t 0, 2, 6, 6, 6, 6, 6, 2, 4, 4, 2, 1,\n+\t 0, 1, 0, 1, 0, 1, 0, 6, 0, 6, 1, 0,\n+\t 6, 1, 1, 1, 0, 0\n \t};\n }\n \n@@ -468,8 +460,8 @@ private static short[] init__warc_index_offsets_0()\n \t 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 154, 157,\n \t 159, 162, 174, 186, 200, 205, 210, 214, 226, 237, 247, 260,\n \t 266, 270, 273, 286, 298, 310, 323, 335, 343, 351, 360, 365,\n-\t 370, 373, 375, 378, 380, 383, 385, 388, 390, 401, 403, 414,\n-\t 420, 422, 435, 441, 447, 453, 454\n+\t 368, 370, 373, 375, 378, 380, 383, 385, 396, 398, 409, 415,\n+\t 417, 430, 436, 442, 448, 449\n \t};\n }\n \n@@ -491,32 +483,32 @@ private static byte[] init__warc_indicies_0()\n \t 1, 40, 41, 1, 42, 1, 43, 1, 44, 1, 45, 1,\n \t 46, 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, 1,\n \t 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 1, 58,\n-\t 59, 59, 59, 59, 59, 59, 59, 59, 59, 57, 1, 60,\n-\t 57, 61, 1, 62, 61, 1, 1, 58, 59, 63, 59, 59,\n-\t 59, 59, 59, 59, 59, 57, 1, 60, 64, 64, 64, 64,\n-\t 64, 64, 64, 64, 64, 57, 65, 1, 66, 64, 67, 64,\n-\t 64, 64, 64, 64, 64, 64, 64, 57, 65, 1, 68, 67,\n-\t 57, 69, 69, 70, 61, 1, 69, 69, 70, 1, 70, 70,\n-\t 71, 71, 71, 71, 71, 71, 71, 71, 71, 1, 71, 72,\n-\t 71, 71, 71, 71, 71, 71, 71, 71, 1, 74, 73, 73,\n-\t 73, 73, 73, 73, 73, 73, 1, 69, 66, 73, 70, 73,\n-\t 73, 73, 73, 73, 73, 73, 73, 1, 74, 75, 76, 74,\n-\t 74, 1, 69, 66, 70, 1, 74, 74, 1, 67, 1, 77,\n-\t 78, 78, 78, 78, 78, 78, 78, 78, 78, 57, 70, 70,\n-\t 71, 71, 71, 71, 71, 71, 79, 71, 71, 1, 62, 71,\n-\t 72, 71, 71, 71, 71, 71, 79, 71, 71, 1, 1, 60,\n-\t 78, 80, 78, 78, 78, 78, 78, 78, 78, 78, 57, 1,\n-\t 60, 81, 64, 64, 64, 64, 64, 64, 64, 64, 57, 81,\n-\t 1, 82, 83, 84, 81, 81, 57, 74, 75, 76, 74, 85,\n-\t 74, 74, 1, 74, 62, 75, 76, 74, 85, 74, 74, 1,\n-\t 65, 1, 66, 67, 57, 74, 82, 81, 81, 57, 40, 86,\n-\t 1, 40, 1, 37, 87, 1, 37, 1, 34, 88, 1, 34,\n-\t 1, 31, 89, 1, 31, 1, 90, 91, 91, 91, 91, 91,\n-\t 91, 91, 91, 91, 1, 92, 1, 91, 93, 91, 91, 91,\n-\t 91, 91, 91, 91, 91, 1, 94, 95, 94, 1, 1, 96,\n-\t 97, 1, 98, 99, 98, 100, 100, 100, 100, 100, 100, 100,\n-\t 100, 100, 1, 98, 101, 98, 1, 1, 102, 103, 104, 103,\n-\t 1, 1, 96, 105, 95, 105, 1, 1, 96, 1, 1, 0\n+\t 59, 59, 59, 59, 59, 59, 59, 59, 59, 57, 1, 58,\n+\t 57, 60, 1, 61, 60, 1, 1, 58, 59, 62, 59, 59,\n+\t 59, 59, 59, 59, 59, 57, 1, 58, 63, 63, 63, 63,\n+\t 63, 63, 63, 63, 63, 57, 64, 1, 65, 63, 66, 63,\n+\t 63, 63, 63, 63, 63, 63, 63, 57, 64, 1, 65, 66,\n+\t 57, 67, 67, 68, 60, 1, 67, 67, 68, 1, 68, 68,\n+\t 69, 69, 69, 69, 69, 69, 69, 69, 69, 1, 69, 70,\n+\t 69, 69, 69, 69, 69, 69, 69, 69, 1, 72, 71, 71,\n+\t 71, 71, 71, 71, 71, 71, 1, 67, 65, 71, 68, 71,\n+\t 71, 71, 71, 71, 71, 71, 71, 1, 72, 73, 74, 72,\n+\t 72, 1, 67, 65, 68, 1, 72, 72, 1, 66, 1, 75,\n+\t 76, 76, 76, 76, 76, 76, 76, 76, 76, 57, 68, 68,\n+\t 69, 69, 69, 69, 69, 69, 77, 69, 69, 1, 61, 69,\n+\t 70, 69, 69, 69, 69, 69, 77, 69, 69, 1, 1, 58,\n+\t 76, 78, 76, 76, 76, 76, 76, 76, 76, 76, 57, 1,\n+\t 58, 79, 63, 63, 63, 63, 63, 63, 63, 63, 57, 79,\n+\t 1, 80, 64, 81, 79, 79, 57, 72, 73, 74, 72, 82,\n+\t 72, 72, 1, 72, 61, 73, 74, 72, 82, 72, 72, 1,\n+\t 72, 80, 79, 79, 57, 40, 83, 1, 40, 1, 37, 84,\n+\t 1, 37, 1, 34, 85, 1, 34, 1, 31, 86, 1, 31,\n+\t 1, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 1,\n+\t 89, 1, 88, 90, 88, 88, 88, 88, 88, 88, 88, 88,\n+\t 1, 91, 92, 91, 1, 1, 93, 94, 1, 95, 96, 95,\n+\t 97, 97, 97, 97, 97, 97, 97, 97, 97, 1, 95, 98,\n+\t 95, 1, 1, 99, 100, 101, 100, 1, 1, 93, 102, 92,\n+\t 102, 1, 1, 93, 1, 1, 0\n \t};\n }\n \n@@ -527,14 +519,14 @@ private static byte[] init__warc_trans_targs_0()\n {\n \treturn new byte [] {\n \t 2, 0, 20, 3, 4, 5, 6, 7, 8, 9, 10, 11,\n-\t 12, 13, 89, 14, 14, 15, 18, 16, 17, 12, 13, 15,\n-\t 18, 19, 15, 19, 21, 22, 23, 24, 78, 25, 26, 76,\n-\t 27, 28, 74, 29, 30, 72, 31, 32, 33, 34, 35, 36,\n+\t 12, 13, 88, 14, 14, 15, 18, 16, 17, 12, 13, 15,\n+\t 18, 19, 15, 19, 21, 22, 23, 24, 77, 25, 26, 75,\n+\t 27, 28, 73, 29, 30, 71, 31, 32, 33, 34, 35, 36,\n \t 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49,\n-\t 47, 48, 89, 50, 51, 52, 53, 62, 53, 54, 55, 56,\n-\t 57, 58, 59, 60, 61, 63, 65, 64, 66, 67, 68, 70,\n-\t 71, 69, 73, 75, 77, 79, 81, 82, 90, 83, 83, 84,\n-\t 87, 85, 86, 81, 82, 84, 87, 88, 84, 88\n+\t 48, 88, 50, 51, 52, 53, 62, 54, 55, 56, 57, 58,\n+\t 59, 60, 61, 63, 65, 64, 66, 67, 68, 70, 69, 72,\n+\t 74, 76, 78, 80, 81, 89, 82, 82, 83, 86, 84, 85,\n+\t 80, 81, 83, 86, 87, 83, 87\n \t};\n }\n \n@@ -545,14 +537,14 @@ private static byte[] init__warc_trans_actions_0()\n {\n \treturn new byte [] {\n \t 0, 0, 1, 0, 0, 0, 0, 3, 0, 5, 0, 0,\n-\t 0, 1, 23, 11, 0, 0, 1, 0, 0, 13, 34, 9,\n-\t 31, 28, 7, 1, 1, 15, 1, 1, 1, 1, 1, 1,\n+\t 0, 1, 21, 11, 0, 0, 1, 0, 0, 13, 29, 9,\n+\t 26, 23, 7, 1, 1, 15, 1, 1, 1, 1, 1, 1,\n \t 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 1,\n-\t 1, 1, 1, 1, 1, 1, 1, 1, 19, 0, 21, 1,\n-\t 0, 1, 37, 1, 1, 1, 25, 1, 1, 1, 1, 1,\n-\t 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n-\t 1, 1, 1, 1, 1, 1, 0, 1, 0, 11, 0, 0,\n-\t 1, 0, 0, 13, 34, 9, 31, 28, 7, 1\n+\t 1, 1, 1, 1, 1, 1, 1, 1, 19, 0, 0, 0,\n+\t 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n+\t 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1,\n+\t 1, 1, 1, 0, 1, 0, 11, 0, 0, 1, 0, 0,\n+\t 13, 29, 9, 26, 23, 7, 1\n \t};\n }\n \n@@ -560,12 +552,12 @@ private static final byte _warc_trans_actions[] = init__warc_trans_actions_0();\n \n \n static final int warc_start = 1;\n-static final int warc_first_final = 89;\n+static final int warc_first_final = 88;\n static final int warc_error = 0;\n \n-static final int warc_en_warc_fields = 80;\n+static final int warc_en_warc_fields = 79;\n static final int warc_en_any_header = 1;\n \n \n-// line 262 \"WarcParser.rl\"\n+// line 257 \"WarcParser.rl\"\n }\n\\ No newline at end of file\n", "bug_patch_file_extensions": ["java"], "test_patch": "diff --git a/test/org/netpreserve/jwarc/WarcParserTest.java b/test/org/netpreserve/jwarc/WarcParserTest.java\nindex 6c9b431..4216591 100644\n--- a/test/org/netpreserve/jwarc/WarcParserTest.java\n+++ b/test/org/netpreserve/jwarc/WarcParserTest.java\n@@ -11,11 +11,21 @@ import static org.junit.Assert.*;\n public class WarcParserTest {\n @Test\n public void testParsingArcWithBogusMime() {\n- String input = \"http://example.com/ 1.2.3.4 20110104111607 @[=*\u00ef\u00bf\u00bdContent-Type] 494\\n\";\n+ WarcParser parser = parse(\"http://example.com/ 1.2.3.4 20110104111607 @[=*\u00ef\u00bf\u00bdContent-Type] 494\\n\");\n+ assertEquals(Optional.of(\"494\"), parser.headers().sole(\"Content-Length\"));\n+ parser = parse(\"http://example.com/ 1.2.3.4 20110104111607 charset=foo 494\\n\");\n+ assertEquals(Optional.of(\"494\"), parser.headers().sole(\"Content-Length\"));\n+ parser = parse(\"http://example.com/ 1.2.3.4 20110104111607 image(jpeg) 494\\n\");\n+ assertEquals(Optional.of(\"494\"), parser.headers().sole(\"Content-Length\"));\n+ parser = parse(\"http://example.com/ 1.2.3.4 20110104111607 ERROR: 494\\n\");\n+ assertEquals(Optional.of(\"494\"), parser.headers().sole(\"Content-Length\"));\n+ }\n+\n+ private static WarcParser parse(String input) {\n WarcParser parser = new WarcParser();\n parser.parse(ByteBuffer.wrap(input.getBytes(StandardCharsets.ISO_8859_1)));\n assertFalse(parser.isError());\n assertTrue(parser.isFinished());\n- assertEquals(Optional.of(\"494\"), parser.headers().sole(\"Content-Length\"));\n+ return parser;\n }\n }\n\\ No newline at end of file\n", "test_patch_file_extensions": ["java"], "non_code_patch": "diff --git a/src/org/netpreserve/jwarc/WarcParser.rl b/src/org/netpreserve/jwarc/WarcParser.rl\nindex 1930c09..4f9efa4 100644\n--- a/src/org/netpreserve/jwarc/WarcParser.rl\n+++ b/src/org/netpreserve/jwarc/WarcParser.rl\n@@ -77,11 +77,6 @@ action handle_arc_date {\n bufPos = 0;\n }\n \n-action handle_arc_mime {\n- // TODO\n- bufPos = 0;\n-}\n-\n action handle_arc_length {\n setHeader(\"Content-Length\", new String(buf, 0, bufPos, US_ASCII));\n bufPos = 0;\n@@ -136,7 +131,7 @@ arc_url_byte = any - \"\\n\" - \" \";\n arc_url = (lower+ \":\" arc_url_byte*) $push %handle_arc_url;\n arc_ip = (digit{1,3} \".\" digit{1,3} \".\" digit{1,3} \".\" digit{1,3}) $push %handle_arc_ip;\n arc_date = digit{14} $push %handle_arc_date;\n-arc_mime = (token (\"/\" token ( OWS \";\" OWS parameter )*)?)? $push %handle_arc_mime;\n+arc_mime = (token (\"/\" token ( OWS \";\" OWS parameter )*)?)?;\n arc_mime_lenient = arc_mime | (any - \" \" - \"\\n\")*;\n arc_length = digit+ $push %handle_arc_length %handle_arc;\n arc_header = arc_url \" \" arc_ip \" \" arc_date \" \" arc_mime_lenient \" \" arc_length \"\\n\";\n", "non_code_patch_file_extensions": ["rl"], "change_type": "MIXED", "actions_runs": [[{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.157, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.02, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.244, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.016, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.018, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.012, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.012, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.025, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.015, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.0, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.877, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.879, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.02, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.021, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/edbb904f-deac-4494-ba55-bf0baa0a075a/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "9dfc6403-bc38-46ad-8d50-6f892f3fb09c", "build_tool": "maven", "elapsed_time": 31.452624320983887, "default_actions": false}], [{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.154, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.031, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.259, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.013, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.01, "results": [{"result": "Failure", "message": "expected:<Optional[494]> but was:<Optional[charset494]>", "type": "java.lang.AssertionError"}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.015, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.01, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.024, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.01, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.0, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.013, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.858, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.858, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.01, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.019, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/edbb904f-deac-4494-ba55-bf0baa0a075a/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "8931977a-24d4-4454-a3fb-7570543fad73", "build_tool": "maven", "elapsed_time": 27.17606830596924, "default_actions": false}], [{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.137, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.025, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.248, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.01, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.009, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.015, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.001, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.808, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.809, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.014, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/edbb904f-deac-4494-ba55-bf0baa0a075a/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "e1432841-85e9-43ff-aaec-fb3fe22331fa", "build_tool": "maven", "elapsed_time": 35.11030054092407, "default_actions": false}]], "strategy": "PASS_PASS", "issues": []}
{"repository": "iipc/jwarc", "language": "java", "clone_url": "https://github.com/iipc/jwarc.git", "collection_timestamp": "2023-11-24T14:00:24.035836Z", "commit_hash": "d47a479c9025ee8fa9fe7e494b33df5b48d802c7", "commit_message": "CdxRequestEncoder: Handle non-ASCII characters in form request body the same way as pywb\n", "commit_timestamp": "2023-08-02T01:09:03Z", "previous_commit_hash": "ed4e7940b8d4b01e85bc80a3a2bedd0cd1319c86", "previous_commit_message": "CdxRequestEncoder: Fix exception if request body contains partial % encoding\n\nThis exception could also happen if the request body exceeds QUERY_STRING_LIMIT and truncated happened in the middle of a percent encoded character. Avoided by switching CdxRequestEncoder to use our own percent decoding method instead of URLDecoder.\n\nFixes #78\n", "previous_commit_timestamp": "2023-08-02T00:59:59Z", "time_to_patch": "0:09:04", "bug_patch": "diff --git a/src/org/netpreserve/jwarc/cdx/CdxRequestEncoder.java b/src/org/netpreserve/jwarc/cdx/CdxRequestEncoder.java\nindex c3d5220..db57870 100644\n--- a/src/org/netpreserve/jwarc/cdx/CdxRequestEncoder.java\n+++ b/src/org/netpreserve/jwarc/cdx/CdxRequestEncoder.java\n@@ -56,13 +56,24 @@ public class CdxRequestEncoder {\n byte[] body = IOUtils.readNBytes(stream, limit);\n String decodedBody = String.valueOf(UTF_8.newDecoder().decode(ByteBuffer.wrap(body)));\n out.append('&');\n- out.append(URIs.percentPlusDecode(decodedBody));\n+ percentEncodeNonPercent(URIs.percentPlusDecode(decodedBody), out);\n } catch (MalformedInputException e) {\n stream.reset();\n encodeBinaryBody(stream, out);\n }\n }\n \n+ private static void percentEncodeNonPercent(String s, StringBuilder out) {\n+ for (byte rawByte : s.getBytes(UTF_8)) {\n+ int b = rawByte & 0xff;\n+ if (b == '#' || b <= 0x20 || b >= 0x7f) {\n+ out.append('%').append(String.format(\"%02X\", b));\n+ } else {\n+ out.append((char) b);\n+ }\n+ }\n+ }\n+\n private static void encodeJsonBody(InputStream stream, StringBuilder output, int maxLength, boolean binaryFallback) throws IOException {\n stream.mark(BUFFER_SIZE);\n JsonTokenizer tokenizer = new JsonTokenizer(new BufferedReader(new InputStreamReader(stream, UTF_8)),\n@@ -150,7 +161,7 @@ public class CdxRequestEncoder {\n public static String percentPlusEncode(String string) {\n StringBuilder output = new StringBuilder();\n Formatter formatter = new Formatter(output);\n- byte[] bytes = string.getBytes(StandardCharsets.UTF_8);\n+ byte[] bytes = string.getBytes(UTF_8);\n for (byte rawByte : bytes) {\n int b = rawByte & 0xff;\n if (percentPlusUnreserved.get(b)) {\n", "bug_patch_file_extensions": ["java"], "test_patch": "diff --git a/test/org/netpreserve/jwarc/cdx/CdxRequestEncoderTest.java b/test/org/netpreserve/jwarc/cdx/CdxRequestEncoderTest.java\nindex d71a86c..a427bb5 100644\n--- a/test/org/netpreserve/jwarc/cdx/CdxRequestEncoderTest.java\n+++ b/test/org/netpreserve/jwarc/cdx/CdxRequestEncoderTest.java\n@@ -29,6 +29,8 @@ public class CdxRequestEncoderTest {\n MediaType.WWW_FORM_URLENCODED, \"foo=bar&dir=%2Fbaz\"),\n new Case(\"__wb_method=POST&__wb_post_data=/w==\",\n MediaType.WWW_FORM_URLENCODED, new byte[]{-1}),\n+ new Case(\"__wb_method=POST&snowman=%E2%98%83\",\n+ MediaType.WWW_FORM_URLENCODED, \"snowman=\u2603\"),\n new Case(\"__wb_method=POST&a=b&a.2_=2&d=e\",\n MediaType.JSON, \"{\\\"a\\\": \\\"b\\\", \\\"c\\\": {\\\"a\\\": 2}, \\\"d\\\": \\\"e\\\"}\"),\n new Case(\"__wb_method=POST\",\n", "test_patch_file_extensions": ["java"], "non_code_patch": "", "non_code_patch_file_extensions": [], "change_type": "SOURCE_ONLY", "actions_runs": [[{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.102, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.018, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.185, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.013, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.045, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.013, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.022, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.014, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.021, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.041, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.004, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.735, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.735, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.019, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.014, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/0bf5f083-fad1-4ead-80c4-77b66bca1b83/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "f7457c3b-697c-42d5-a7e6-764bea58559f", "build_tool": "maven", "elapsed_time": 29.939813137054443, "default_actions": false}], [{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.097, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.192, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.014, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.021, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.016, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.023, "results": [{"result": "Failure", "message": "Case 3 expected:<...method=POST&snowman=[%E2%98%83]> but was:<...method=POST&snowman=[\u2603]>", "type": "org.junit.ComparisonFailure"}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.048, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.004, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.013, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.8, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.8, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.017, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.012, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/0bf5f083-fad1-4ead-80c4-77b66bca1b83/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "86c1c159-ca36-4cf1-9a04-2daacf0cccab", "build_tool": "maven", "elapsed_time": 28.040233612060547, "default_actions": false}], [{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.107, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.194, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.017, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.012, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.022, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.012, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.019, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.034, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.006, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.598, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.598, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.011, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/0bf5f083-fad1-4ead-80c4-77b66bca1b83/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "48f4e003-b97a-40e1-b7d1-aad7e02385ae", "build_tool": "maven", "elapsed_time": 36.75221824645996, "default_actions": false}]], "strategy": "PASS_PASS", "issues": []}
{"repository": "iipc/jwarc", "language": "java", "clone_url": "https://github.com/iipc/jwarc.git", "collection_timestamp": "2023-11-24T14:00:57.784291Z", "commit_hash": "6c7083b72172f32646843958eedf19cad38eb4b1", "commit_message": "Leniently parse ARC records containing corrupt dates\n\nReported-by: @thomasegense\n", "commit_timestamp": "2023-09-15T07:07:43Z", "previous_commit_hash": "eb28cfa8e5cff83c249b830d468458bd6f369036", "previous_commit_message": "Recover from NumberFormatException on invalid HTTP Content-Length in non-strict mode\n\nReported-by: @thomasegense\n", "previous_commit_timestamp": "2023-09-14T07:45:16Z", "time_to_patch": "23:22:27", "bug_patch": "diff --git a/src/org/netpreserve/jwarc/MessageParser.java b/src/org/netpreserve/jwarc/MessageParser.java\nindex 278511a..a8c4daa 100644\n--- a/src/org/netpreserve/jwarc/MessageParser.java\n+++ b/src/org/netpreserve/jwarc/MessageParser.java\n@@ -6,8 +6,20 @@\n package org.netpreserve.jwarc;\n \n import java.nio.ByteBuffer;\n+import java.util.function.Consumer;\n \n public class MessageParser {\n+ private Consumer<String> warningHandler;\n+\n+ protected void emitWarning(String message) {\n+ if (warningHandler != null) {\n+ warningHandler.accept(message);\n+ }\n+ }\n+\n+ void onWarning(Consumer<String> warningHandler) {\n+ this.warningHandler = warningHandler;\n+ }\n \n protected static String getErrorContext(String input, int position, int length) {\n StringBuilder context = new StringBuilder();\ndiff --git a/src/org/netpreserve/jwarc/WarcParser.java b/src/org/netpreserve/jwarc/WarcParser.java\nindex 753d66d..ed2c167 100644\n--- a/src/org/netpreserve/jwarc/WarcParser.java\n+++ b/src/org/netpreserve/jwarc/WarcParser.java\n@@ -13,6 +13,7 @@ import java.time.Instant;\n import java.time.LocalDateTime;\n import java.time.ZoneOffset;\n import java.time.format.DateTimeFormatter;\n+import java.time.format.DateTimeParseException;\n import java.util.*;\n \n import static java.nio.charset.StandardCharsets.ISO_8859_1;\n@@ -20,7 +21,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;\n import static java.nio.charset.StandardCharsets.US_ASCII;\n \n \n-// line 142 \"WarcParser.rl\"\n+// line 156 \"WarcParser.rl\"\n \n \n /**\n@@ -83,7 +84,7 @@ public class WarcParser extends MessageParser {\n int pe = data.limit();\n \n \n-// line 87 \"WarcParser.java\"\n+// line 88 \"WarcParser.java\"\n \t{\n \tint _klen;\n \tint _trans = 0;\n@@ -164,23 +165,23 @@ case 1:\n \t\t\tswitch ( _warc_actions[_acts++] )\n \t\t\t{\n \tcase 0:\n-// line 26 \"WarcParser.rl\"\n+// line 27 \"WarcParser.rl\"\n \t{ push(data.get(p)); }\n \tbreak;\n \tcase 1:\n-// line 27 \"WarcParser.rl\"\n+// line 28 \"WarcParser.rl\"\n \t{ major = major * 10 + data.get(p) - '0'; }\n \tbreak;\n \tcase 2:\n-// line 28 \"WarcParser.rl\"\n+// line 29 \"WarcParser.rl\"\n \t{ minor = minor * 10 + data.get(p) - '0'; }\n \tbreak;\n \tcase 3:\n-// line 29 \"WarcParser.rl\"\n+// line 30 \"WarcParser.rl\"\n \t{ endOfText = bufPos; }\n \tbreak;\n \tcase 4:\n-// line 31 \"WarcParser.rl\"\n+// line 32 \"WarcParser.rl\"\n \t{\n if (bufPos > 0) {\n bufPos = endOfText;\n@@ -189,14 +190,14 @@ case 1:\n }\n \tbreak;\n \tcase 5:\n-// line 38 \"WarcParser.rl\"\n+// line 39 \"WarcParser.rl\"\n \t{\n name = new String(buf, 0, bufPos, US_ASCII);\n bufPos = 0;\n }\n \tbreak;\n \tcase 6:\n-// line 43 \"WarcParser.rl\"\n+// line 44 \"WarcParser.rl\"\n \t{\n String value = new String(buf, 0, endOfText, UTF_8);\n headerMap.computeIfAbsent(name, n -> new ArrayList<>()).add(value);\n@@ -205,7 +206,7 @@ case 1:\n }\n \tbreak;\n \tcase 7:\n-// line 50 \"WarcParser.rl\"\n+// line 51 \"WarcParser.rl\"\n \t{\n String url = new String(buf, 0, bufPos, ISO_8859_1);\n if (url.startsWith(\"filedesc://\")) {\n@@ -225,30 +226,42 @@ case 1:\n }\n \tbreak;\n \tcase 8:\n-// line 68 \"WarcParser.rl\"\n+// line 69 \"WarcParser.rl\"\n \t{\n setHeader(\"WARC-IP-Address\", new String(buf, 0, bufPos, US_ASCII));\n bufPos = 0;\n }\n \tbreak;\n \tcase 9:\n-// line 73 \"WarcParser.rl\"\n+// line 74 \"WarcParser.rl\"\n \t{\n String arcDate = new String(buf, 0, bufPos, US_ASCII);\n- Instant instant = LocalDateTime.parse(arcDate, arcTimeFormat).toInstant(ZoneOffset.UTC);\n- setHeader(\"WARC-Date\", instant.toString());\n+ // Some WARC files have been seen in the wild with truncated dates\n+ if (arcDate.length() < 14) {\n+ emitWarning(\"ARC date too short (\" + arcDate.length() + \" digits)\");\n+ arcDate = arcDate + \"00000000000000\".substring(arcDate.length());\n+ } else if (arcDate.length() > 14) {\n+ emitWarning(\"ARC date too long (\" + arcDate.length() + \" digits)\");\n+ arcDate = arcDate.substring(0, 14);\n+ }\n+ try {\n+ Instant instant = LocalDateTime.parse(arcDate, arcTimeFormat).toInstant(ZoneOffset.UTC);\n+ setHeader(\"WARC-Date\", instant.toString());\n+ } catch (DateTimeParseException e) {\n+ emitWarning(\"ARC date not parsable\");\n+ }\n bufPos = 0;\n }\n \tbreak;\n \tcase 10:\n-// line 80 \"WarcParser.rl\"\n+// line 93 \"WarcParser.rl\"\n \t{\n setHeader(\"Content-Length\", new String(buf, 0, bufPos, US_ASCII));\n bufPos = 0;\n }\n \tbreak;\n \tcase 11:\n-// line 85 \"WarcParser.rl\"\n+// line 98 \"WarcParser.rl\"\n \t{\n protocol = \"ARC\";\n major = 1;\n@@ -256,10 +269,10 @@ case 1:\n }\n \tbreak;\n \tcase 12:\n-// line 140 \"WarcParser.rl\"\n+// line 154 \"WarcParser.rl\"\n \t{ { p += 1; _goto_targ = 5; if (true) continue _goto;} }\n \tbreak;\n-// line 263 \"WarcParser.java\"\n+// line 276 \"WarcParser.java\"\n \t\t\t}\n \t\t}\n \t}\n@@ -279,7 +292,7 @@ case 5:\n \tbreak; }\n \t}\n \n-// line 204 \"WarcParser.rl\"\n+// line 218 \"WarcParser.rl\"\n \n position += p - data.position();\n data.position(p);\n@@ -333,7 +346,7 @@ case 5:\n }\n \n \n-// line 337 \"WarcParser.java\"\n+// line 350 \"WarcParser.java\"\n private static byte[] init__warc_actions_0()\n {\n \treturn new byte [] {\n@@ -352,11 +365,12 @@ private static short[] init__warc_key_offsets_0()\n \t 0, 0, 3, 4, 5, 6, 7, 9, 12, 14, 17, 18,\n \t 34, 35, 51, 57, 58, 76, 82, 88, 94, 97, 99, 101,\n \t 104, 106, 109, 111, 114, 116, 119, 121, 123, 125, 127, 129,\n-\t 131, 133, 135, 137, 139, 141, 143, 145, 147, 148, 165, 167,\n-\t 169, 172, 188, 205, 224, 228, 233, 236, 253, 269, 284, 302,\n-\t 309, 312, 316, 334, 351, 368, 386, 403, 412, 423, 435, 441,\n-\t 444, 445, 448, 449, 452, 453, 456, 457, 473, 474, 490, 496,\n-\t 497, 515, 521, 527, 533, 533\n+\t 131, 133, 135, 138, 155, 157, 159, 162, 178, 195, 214, 218,\n+\t 223, 226, 243, 259, 274, 292, 299, 302, 306, 324, 341, 358,\n+\t 376, 393, 402, 413, 425, 431, 434, 437, 440, 443, 446, 449,\n+\t 452, 455, 458, 461, 464, 467, 470, 473, 476, 479, 482, 485,\n+\t 488, 489, 492, 493, 496, 497, 500, 501, 504, 505, 521, 522,\n+\t 538, 544, 545, 563, 569, 575, 581, 581\n \t};\n }\n \n@@ -377,32 +391,36 @@ private static char[] init__warc_trans_keys_0()\n \t 122, 10, 32, 48, 57, 46, 48, 57, 48, 57, 46, 48,\n \t 57, 48, 57, 46, 48, 57, 48, 57, 32, 48, 57, 48,\n \t 57, 48, 57, 48, 57, 48, 57, 48, 57, 48, 57, 48,\n-\t 57, 48, 57, 48, 57, 48, 57, 48, 57, 48, 57, 48,\n-\t 57, 48, 57, 32, 10, 32, 33, 124, 126, 35, 39, 42,\n-\t 43, 45, 46, 48, 57, 65, 90, 94, 122, 10, 32, 48,\n-\t 57, 10, 48, 57, 10, 32, 33, 47, 124, 126, 35, 39,\n-\t 42, 43, 45, 57, 65, 90, 94, 122, 10, 32, 33, 124,\n-\t 126, 35, 39, 42, 43, 45, 46, 48, 57, 65, 90, 94,\n-\t 122, 9, 10, 32, 33, 59, 124, 126, 35, 39, 42, 43,\n-\t 45, 46, 48, 57, 65, 90, 94, 122, 9, 10, 32, 59,\n-\t 9, 32, 59, 48, 57, 9, 32, 59, 9, 32, 33, 124,\n-\t 126, 35, 39, 42, 43, 45, 46, 48, 57, 65, 90, 94,\n-\t 122, 33, 61, 124, 126, 35, 39, 42, 43, 45, 46, 48,\n-\t 57, 65, 90, 94, 122, 34, 124, 126, 33, 39, 42, 43,\n-\t 45, 46, 48, 57, 65, 90, 94, 122, 9, 32, 33, 59,\n-\t 124, 126, 35, 39, 42, 43, 45, 46, 48, 57, 65, 90,\n-\t 94, 122, 9, 34, 92, 32, 126, 128, 255, 9, 32, 59,\n-\t 0, 191, 194, 244, 9, 10, 32, 33, 124, 126, 35, 39,\n-\t 42, 43, 45, 46, 48, 57, 65, 90, 94, 122, 9, 32,\n+\t 57, 48, 57, 32, 48, 57, 10, 32, 33, 124, 126, 35,\n+\t 39, 42, 43, 45, 46, 48, 57, 65, 90, 94, 122, 10,\n+\t 32, 48, 57, 10, 48, 57, 10, 32, 33, 47, 124, 126,\n+\t 35, 39, 42, 43, 45, 57, 65, 90, 94, 122, 10, 32,\n \t 33, 124, 126, 35, 39, 42, 43, 45, 46, 48, 57, 65,\n-\t 90, 94, 122, 10, 33, 61, 124, 126, 35, 39, 42, 43,\n-\t 45, 46, 48, 57, 65, 90, 94, 122, 10, 32, 33, 61,\n-\t 124, 126, 35, 39, 42, 43, 45, 46, 48, 57, 65, 90,\n-\t 94, 122, 10, 32, 34, 124, 126, 33, 39, 42, 43, 45,\n-\t 46, 48, 57, 65, 90, 94, 122, 9, 10, 32, 34, 92,\n-\t 33, 126, 128, 255, 9, 34, 92, 32, 47, 48, 57, 58,\n-\t 126, 128, 255, 9, 10, 34, 92, 32, 47, 48, 57, 58,\n-\t 126, 128, 255, 10, 32, 0, 191, 194, 244, 32, 48, 57,\n+\t 90, 94, 122, 9, 10, 32, 33, 59, 124, 126, 35, 39,\n+\t 42, 43, 45, 46, 48, 57, 65, 90, 94, 122, 9, 10,\n+\t 32, 59, 9, 32, 59, 48, 57, 9, 32, 59, 9, 32,\n+\t 33, 124, 126, 35, 39, 42, 43, 45, 46, 48, 57, 65,\n+\t 90, 94, 122, 33, 61, 124, 126, 35, 39, 42, 43, 45,\n+\t 46, 48, 57, 65, 90, 94, 122, 34, 124, 126, 33, 39,\n+\t 42, 43, 45, 46, 48, 57, 65, 90, 94, 122, 9, 32,\n+\t 33, 59, 124, 126, 35, 39, 42, 43, 45, 46, 48, 57,\n+\t 65, 90, 94, 122, 9, 34, 92, 32, 126, 128, 255, 9,\n+\t 32, 59, 0, 191, 194, 244, 9, 10, 32, 33, 124, 126,\n+\t 35, 39, 42, 43, 45, 46, 48, 57, 65, 90, 94, 122,\n+\t 9, 32, 33, 124, 126, 35, 39, 42, 43, 45, 46, 48,\n+\t 57, 65, 90, 94, 122, 10, 33, 61, 124, 126, 35, 39,\n+\t 42, 43, 45, 46, 48, 57, 65, 90, 94, 122, 10, 32,\n+\t 33, 61, 124, 126, 35, 39, 42, 43, 45, 46, 48, 57,\n+\t 65, 90, 94, 122, 10, 32, 34, 124, 126, 33, 39, 42,\n+\t 43, 45, 46, 48, 57, 65, 90, 94, 122, 9, 10, 32,\n+\t 34, 92, 33, 126, 128, 255, 9, 34, 92, 32, 47, 48,\n+\t 57, 58, 126, 128, 255, 9, 10, 34, 92, 32, 47, 48,\n+\t 57, 58, 126, 128, 255, 10, 32, 0, 191, 194, 244, 32,\n+\t 48, 57, 32, 48, 57, 32, 48, 57, 32, 48, 57, 32,\n+\t 48, 57, 32, 48, 57, 32, 48, 57, 32, 48, 57, 32,\n+\t 48, 57, 32, 48, 57, 32, 48, 57, 32, 48, 57, 32,\n+\t 48, 57, 32, 48, 57, 32, 48, 57, 32, 48, 57, 32,\n+\t 48, 57, 32, 48, 57, 32, 48, 57, 32, 32, 48, 57,\n \t 32, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 57,\n \t 46, 13, 33, 124, 126, 35, 39, 42, 43, 45, 46, 48,\n \t 57, 65, 90, 94, 122, 10, 33, 58, 124, 126, 35, 39,\n@@ -423,11 +441,12 @@ private static byte[] init__warc_single_lengths_0()\n \t 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 4,\n \t 1, 4, 4, 1, 6, 4, 4, 4, 1, 2, 0, 1,\n \t 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0,\n-\t 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 2, 0,\n-\t 1, 6, 5, 7, 4, 3, 3, 5, 4, 3, 6, 3,\n-\t 3, 0, 6, 5, 5, 6, 5, 5, 3, 4, 2, 1,\n-\t 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 4, 1,\n-\t 6, 4, 4, 4, 0, 0\n+\t 0, 0, 1, 5, 2, 0, 1, 6, 5, 7, 4, 3,\n+\t 3, 5, 4, 3, 6, 3, 3, 0, 6, 5, 5, 6,\n+\t 5, 5, 3, 4, 2, 1, 1, 1, 1, 1, 1, 1,\n+\t 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n+\t 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4,\n+\t 4, 1, 6, 4, 4, 4, 0, 0\n \t};\n }\n \n@@ -440,11 +459,12 @@ private static byte[] init__warc_range_lengths_0()\n \t 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 6,\n \t 0, 6, 1, 0, 6, 1, 1, 1, 1, 0, 1, 1,\n \t 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n-\t 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, 0, 1,\n-\t 1, 5, 6, 6, 0, 1, 0, 6, 6, 6, 6, 2,\n-\t 0, 2, 6, 6, 6, 6, 6, 2, 4, 4, 2, 1,\n-\t 0, 1, 0, 1, 0, 1, 0, 6, 0, 6, 1, 0,\n-\t 6, 1, 1, 1, 0, 0\n+\t 1, 1, 1, 6, 0, 1, 1, 5, 6, 6, 0, 1,\n+\t 0, 6, 6, 6, 6, 2, 0, 2, 6, 6, 6, 6,\n+\t 6, 2, 4, 4, 2, 1, 1, 1, 1, 1, 1, 1,\n+\t 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n+\t 0, 1, 0, 1, 0, 1, 0, 1, 0, 6, 0, 6,\n+\t 1, 0, 6, 1, 1, 1, 0, 0\n \t};\n }\n \n@@ -457,11 +477,12 @@ private static short[] init__warc_index_offsets_0()\n \t 0, 0, 3, 5, 7, 9, 11, 13, 16, 18, 21, 23,\n \t 34, 36, 47, 53, 55, 68, 74, 80, 86, 89, 92, 94,\n \t 97, 99, 102, 104, 107, 109, 112, 114, 116, 118, 120, 122,\n-\t 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 154, 157,\n-\t 159, 162, 174, 186, 200, 205, 210, 214, 226, 237, 247, 260,\n-\t 266, 270, 273, 286, 298, 310, 323, 335, 343, 351, 360, 365,\n-\t 368, 370, 373, 375, 378, 380, 383, 385, 396, 398, 409, 415,\n-\t 417, 430, 436, 442, 448, 449\n+\t 124, 126, 128, 131, 143, 146, 148, 151, 163, 175, 189, 194,\n+\t 199, 203, 215, 226, 236, 249, 255, 259, 262, 275, 287, 299,\n+\t 312, 324, 332, 340, 349, 354, 357, 360, 363, 366, 369, 372,\n+\t 375, 378, 381, 384, 387, 390, 393, 396, 399, 402, 405, 408,\n+\t 411, 413, 416, 418, 421, 423, 426, 428, 431, 433, 444, 446,\n+\t 457, 463, 465, 478, 484, 490, 496, 497\n \t};\n }\n \n@@ -481,34 +502,38 @@ private static byte[] init__warc_indicies_0()\n \t 1, 18, 28, 2, 1, 1, 29, 28, 30, 1, 31, 32,\n \t 1, 33, 1, 34, 35, 1, 36, 1, 37, 38, 1, 39,\n \t 1, 40, 41, 1, 42, 1, 43, 1, 44, 1, 45, 1,\n-\t 46, 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, 1,\n-\t 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 1, 58,\n-\t 59, 59, 59, 59, 59, 59, 59, 59, 59, 57, 1, 58,\n-\t 57, 60, 1, 61, 60, 1, 1, 58, 59, 62, 59, 59,\n-\t 59, 59, 59, 59, 59, 57, 1, 58, 63, 63, 63, 63,\n-\t 63, 63, 63, 63, 63, 57, 64, 1, 65, 63, 66, 63,\n-\t 63, 63, 63, 63, 63, 63, 63, 57, 64, 1, 65, 66,\n-\t 57, 67, 67, 68, 60, 1, 67, 67, 68, 1, 68, 68,\n-\t 69, 69, 69, 69, 69, 69, 69, 69, 69, 1, 69, 70,\n-\t 69, 69, 69, 69, 69, 69, 69, 69, 1, 72, 71, 71,\n-\t 71, 71, 71, 71, 71, 71, 1, 67, 65, 71, 68, 71,\n-\t 71, 71, 71, 71, 71, 71, 71, 1, 72, 73, 74, 72,\n-\t 72, 1, 67, 65, 68, 1, 72, 72, 1, 66, 1, 75,\n-\t 76, 76, 76, 76, 76, 76, 76, 76, 76, 57, 68, 68,\n-\t 69, 69, 69, 69, 69, 69, 77, 69, 69, 1, 61, 69,\n-\t 70, 69, 69, 69, 69, 69, 77, 69, 69, 1, 1, 58,\n-\t 76, 78, 76, 76, 76, 76, 76, 76, 76, 76, 57, 1,\n-\t 58, 79, 63, 63, 63, 63, 63, 63, 63, 63, 57, 79,\n-\t 1, 80, 64, 81, 79, 79, 57, 72, 73, 74, 72, 82,\n-\t 72, 72, 1, 72, 61, 73, 74, 72, 82, 72, 72, 1,\n-\t 72, 80, 79, 79, 57, 40, 83, 1, 40, 1, 37, 84,\n-\t 1, 37, 1, 34, 85, 1, 34, 1, 31, 86, 1, 31,\n-\t 1, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 1,\n-\t 89, 1, 88, 90, 88, 88, 88, 88, 88, 88, 88, 88,\n-\t 1, 91, 92, 91, 1, 1, 93, 94, 1, 95, 96, 95,\n-\t 97, 97, 97, 97, 97, 97, 97, 97, 97, 1, 95, 98,\n-\t 95, 1, 1, 99, 100, 101, 100, 1, 1, 93, 102, 92,\n-\t 102, 1, 1, 93, 1, 1, 0\n+\t 46, 1, 47, 1, 48, 1, 49, 1, 50, 51, 1, 1,\n+\t 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 52, 1,\n+\t 53, 52, 55, 1, 56, 55, 1, 1, 53, 54, 57, 54,\n+\t 54, 54, 54, 54, 54, 54, 52, 1, 53, 58, 58, 58,\n+\t 58, 58, 58, 58, 58, 58, 52, 59, 1, 60, 58, 61,\n+\t 58, 58, 58, 58, 58, 58, 58, 58, 52, 59, 1, 60,\n+\t 61, 52, 62, 62, 63, 55, 1, 62, 62, 63, 1, 63,\n+\t 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 1, 64,\n+\t 65, 64, 64, 64, 64, 64, 64, 64, 64, 1, 67, 66,\n+\t 66, 66, 66, 66, 66, 66, 66, 1, 62, 60, 66, 63,\n+\t 66, 66, 66, 66, 66, 66, 66, 66, 1, 67, 68, 69,\n+\t 67, 67, 1, 62, 60, 63, 1, 67, 67, 1, 61, 1,\n+\t 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 52, 63,\n+\t 63, 64, 64, 64, 64, 64, 64, 72, 64, 64, 1, 56,\n+\t 64, 65, 64, 64, 64, 64, 64, 72, 64, 64, 1, 1,\n+\t 53, 71, 73, 71, 71, 71, 71, 71, 71, 71, 71, 52,\n+\t 1, 53, 74, 58, 58, 58, 58, 58, 58, 58, 58, 52,\n+\t 74, 1, 75, 59, 76, 74, 74, 52, 67, 68, 69, 67,\n+\t 77, 67, 67, 1, 67, 56, 68, 69, 67, 77, 67, 67,\n+\t 1, 67, 75, 74, 74, 52, 50, 78, 1, 50, 79, 1,\n+\t 50, 80, 1, 50, 81, 1, 50, 82, 1, 50, 83, 1,\n+\t 50, 84, 1, 50, 85, 1, 50, 86, 1, 50, 87, 1,\n+\t 50, 88, 1, 50, 89, 1, 50, 90, 1, 50, 91, 1,\n+\t 50, 92, 1, 50, 93, 1, 50, 94, 1, 50, 95, 1,\n+\t 50, 96, 1, 50, 1, 40, 97, 1, 40, 1, 37, 98,\n+\t 1, 37, 1, 34, 99, 1, 34, 1, 31, 100, 1, 31,\n+\t 1, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 1,\n+\t 103, 1, 102, 104, 102, 102, 102, 102, 102, 102, 102, 102,\n+\t 1, 105, 106, 105, 1, 1, 107, 108, 1, 109, 110, 109,\n+\t 111, 111, 111, 111, 111, 111, 111, 111, 111, 1, 109, 112,\n+\t 109, 1, 1, 113, 114, 115, 114, 1, 1, 107, 116, 106,\n+\t 116, 1, 1, 107, 1, 1, 0\n \t};\n }\n \n@@ -519,14 +544,15 @@ private static byte[] init__warc_trans_targs_0()\n {\n \treturn new byte [] {\n \t 2, 0, 20, 3, 4, 5, 6, 7, 8, 9, 10, 11,\n-\t 12, 13, 88, 14, 14, 15, 18, 16, 17, 12, 13, 15,\n-\t 18, 19, 15, 19, 21, 22, 23, 24, 77, 25, 26, 75,\n-\t 27, 28, 73, 29, 30, 71, 31, 32, 33, 34, 35, 36,\n-\t 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49,\n-\t 48, 88, 50, 51, 52, 53, 62, 54, 55, 56, 57, 58,\n-\t 59, 60, 61, 63, 65, 64, 66, 67, 68, 70, 69, 72,\n-\t 74, 76, 78, 80, 81, 89, 82, 82, 83, 86, 84, 85,\n-\t 80, 81, 83, 86, 87, 83, 87\n+\t 12, 13, 102, 14, 14, 15, 18, 16, 17, 12, 13, 15,\n+\t 18, 19, 15, 19, 21, 22, 23, 24, 91, 25, 26, 89,\n+\t 27, 28, 87, 29, 30, 85, 31, 32, 33, 34, 35, 36,\n+\t 37, 38, 39, 65, 40, 41, 43, 42, 102, 44, 45, 46,\n+\t 47, 56, 48, 49, 50, 51, 52, 53, 54, 55, 57, 59,\n+\t 58, 60, 61, 62, 64, 63, 66, 67, 68, 69, 70, 71,\n+\t 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,\n+\t 84, 86, 88, 90, 92, 94, 95, 103, 96, 96, 97, 100,\n+\t 98, 99, 94, 95, 97, 100, 101, 97, 101\n \t};\n }\n \n@@ -540,11 +566,12 @@ private static byte[] init__warc_trans_actions_0()\n \t 0, 1, 21, 11, 0, 0, 1, 0, 0, 13, 29, 9,\n \t 26, 23, 7, 1, 1, 15, 1, 1, 1, 1, 1, 1,\n \t 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 1,\n-\t 1, 1, 1, 1, 1, 1, 1, 1, 19, 0, 0, 0,\n-\t 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n-\t 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1,\n-\t 1, 1, 1, 0, 1, 0, 11, 0, 0, 1, 0, 0,\n-\t 13, 29, 9, 26, 23, 7, 1\n+\t 1, 1, 19, 1, 0, 0, 0, 1, 32, 0, 0, 0,\n+\t 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n+\t 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,\n+\t 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n+\t 1, 1, 1, 1, 1, 0, 1, 0, 11, 0, 0, 1,\n+\t 0, 0, 13, 29, 9, 26, 23, 7, 1\n \t};\n }\n \n@@ -552,12 +579,12 @@ private static final byte _warc_trans_actions[] = init__warc_trans_actions_0();\n \n \n static final int warc_start = 1;\n-static final int warc_first_final = 88;\n+static final int warc_first_final = 102;\n static final int warc_error = 0;\n \n-static final int warc_en_warc_fields = 79;\n+static final int warc_en_warc_fields = 93;\n static final int warc_en_any_header = 1;\n \n \n-// line 257 \"WarcParser.rl\"\n+// line 271 \"WarcParser.rl\"\n }\n\\ No newline at end of file\ndiff --git a/src/org/netpreserve/jwarc/WarcReader.java b/src/org/netpreserve/jwarc/WarcReader.java\nindex 2b884b9..60254ef 100644\n--- a/src/org/netpreserve/jwarc/WarcReader.java\n+++ b/src/org/netpreserve/jwarc/WarcReader.java\n@@ -363,6 +363,7 @@ public class WarcReader implements Iterable<WarcRecord>, Closeable {\n */\n public void onWarning(Consumer<String> warningHandler) {\n this.warningHandler = warningHandler;\n+ parser.onWarning(warningHandler);\n }\n \n /**\ndiff --git a/src/org/netpreserve/jwarc/cdx/CdxWriter.java b/src/org/netpreserve/jwarc/cdx/CdxWriter.java\nindex 6e319c3..741894f 100644\n--- a/src/org/netpreserve/jwarc/cdx/CdxWriter.java\n+++ b/src/org/netpreserve/jwarc/cdx/CdxWriter.java\n@@ -100,6 +100,12 @@ public class CdxWriter implements Closeable {\n record = reader.next().orElse(null);\n long length = reader.position() - position;\n \n+ // skip records without a date, this often occurs in old ARC files with a corrupt date field\n+ if (!capture.headers().first(\"WARC-Date\").isPresent()) {\n+ emitWarning(filename, position, \"Skipping record due to missing or invalid date\");\n+ continue;\n+ }\n+\n String encodedRequest = null;\n if (postAppend) {\n // check for a corresponding request record\n", "bug_patch_file_extensions": ["java"], "test_patch": "diff --git a/test/org/netpreserve/jwarc/WarcParserTest.java b/test/org/netpreserve/jwarc/WarcParserTest.java\nindex 4216591..dec7381 100644\n--- a/test/org/netpreserve/jwarc/WarcParserTest.java\n+++ b/test/org/netpreserve/jwarc/WarcParserTest.java\n@@ -21,6 +21,16 @@ public class WarcParserTest {\n assertEquals(Optional.of(\"494\"), parser.headers().sole(\"Content-Length\"));\n }\n \n+ @Test\n+ public void testParsingArcWithCorruptDates() {\n+ WarcParser parser = parse(\"http://example.com/ 1.2.3.4 200012120739 text/html 42\\n\");\n+ assertEquals(Optional.of(\"2000-12-12T07:39:00Z\"), parser.headers().first(\"WARC-Date\"));\n+ parser = parse(\"http://example.com/ 1.2.3.4 2000121207394211 text/html 1942\\n\");\n+ assertEquals(Optional.of(\"2000-12-12T07:39:42Z\"), parser.headers().first(\"WARC-Date\"));\n+ parser = parse(\"http://example.com/ 1.2.3.4 99999999999999 text/html 1942\\n\");\n+ assertEquals(Optional.empty(), parser.headers().first(\"WARC-Date\"));\n+ }\n+\n private static WarcParser parse(String input) {\n WarcParser parser = new WarcParser();\n parser.parse(ByteBuffer.wrap(input.getBytes(StandardCharsets.ISO_8859_1)));\n", "test_patch_file_extensions": ["java"], "non_code_patch": "diff --git a/src/org/netpreserve/jwarc/WarcParser.rl b/src/org/netpreserve/jwarc/WarcParser.rl\nindex 4f9efa4..60d2b7e 100644\n--- a/src/org/netpreserve/jwarc/WarcParser.rl\n+++ b/src/org/netpreserve/jwarc/WarcParser.rl\n@@ -11,6 +11,7 @@ import java.time.Instant;\n import java.time.LocalDateTime;\n import java.time.ZoneOffset;\n import java.time.format.DateTimeFormatter;\n+import java.time.format.DateTimeParseException;\n import java.util.*;\n \n import static java.nio.charset.StandardCharsets.ISO_8859_1;\n@@ -72,8 +73,20 @@ action handle_arc_ip {\n \n action handle_arc_date {\n String arcDate = new String(buf, 0, bufPos, US_ASCII);\n- Instant instant = LocalDateTime.parse(arcDate, arcTimeFormat).toInstant(ZoneOffset.UTC);\n- setHeader(\"WARC-Date\", instant.toString());\n+ // Some WARC files have been seen in the wild with truncated dates\n+ if (arcDate.length() < 14) {\n+ emitWarning(\"ARC date too short (\" + arcDate.length() + \" digits)\");\n+ arcDate = arcDate + \"00000000000000\".substring(arcDate.length());\n+ } else if (arcDate.length() > 14) {\n+ emitWarning(\"ARC date too long (\" + arcDate.length() + \" digits)\");\n+ arcDate = arcDate.substring(0, 14);\n+ }\n+ try {\n+ Instant instant = LocalDateTime.parse(arcDate, arcTimeFormat).toInstant(ZoneOffset.UTC);\n+ setHeader(\"WARC-Date\", instant.toString());\n+ } catch (DateTimeParseException e) {\n+ emitWarning(\"ARC date not parsable\");\n+ }\n bufPos = 0;\n }\n \n@@ -131,10 +144,11 @@ arc_url_byte = any - \"\\n\" - \" \";\n arc_url = (lower+ \":\" arc_url_byte*) $push %handle_arc_url;\n arc_ip = (digit{1,3} \".\" digit{1,3} \".\" digit{1,3} \".\" digit{1,3}) $push %handle_arc_ip;\n arc_date = digit{14} $push %handle_arc_date;\n+arc_date_lenient = digit{8,28} $push %handle_arc_date;\n arc_mime = (token (\"/\" token ( OWS \";\" OWS parameter )*)?)?;\n arc_mime_lenient = arc_mime | (any - \" \" - \"\\n\")*;\n arc_length = digit+ $push %handle_arc_length %handle_arc;\n-arc_header = arc_url \" \" arc_ip \" \" arc_date \" \" arc_mime_lenient \" \" arc_length \"\\n\";\n+arc_header = arc_url \" \" arc_ip \" \" arc_date_lenient \" \" arc_mime_lenient \" \" arc_length \"\\n\";\n \n warc_fields := named_fields;\n any_header := (arc_header | warc_header) @{ fbreak; };\n", "non_code_patch_file_extensions": ["rl"], "change_type": "MIXED", "actions_runs": [[{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.06, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.169, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidContentLengthHeader", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.031, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.013, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.021, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.01, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.056, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.006, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.774, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.774, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.013, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.026, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "parsingBogusContentLengthFolding", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.012, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.022, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.039, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/30b63549-b4c7-41d3-9ede-8266e13efa15/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "b25e5e83-6073-40aa-a54d-12706a82790c", "build_tool": "maven", "elapsed_time": 29.132014989852905, "default_actions": false}], [{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.076, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.164, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.014, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidContentLengthHeader", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithCorruptDates", "time": 0.003, "results": [{"result": "Failure", "message": null, "type": "java.lang.AssertionError"}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.03, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.008, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.014, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.02, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.054, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.003, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.764, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.765, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.012, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "parsingBogusContentLengthFolding", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.027, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/30b63549-b4c7-41d3-9ede-8266e13efa15/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "c6f7f9df-d0ae-4114-ac92-669c0e8a9c09", "build_tool": "maven", "elapsed_time": 34.590012073516846, "default_actions": false}], [{"failed": false, "tests": [{"classname": "org.netpreserve.jwarc.apitests.WarcResourceTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.net.WarcServerTest", "name": "test", "time": 0.095, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.JsonTokenizerTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.LengthedBodyTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.URIsTest", "name": "toNormalizedSurt", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "fetch", "time": 0.159, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcWriterTest", "name": "gzippedWarc", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcMetadataTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxReaderTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "nonAsciiCharsShouldNotError", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientResponseModeShouldBeLenient", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "lenientRequestModeShouldBeLenient", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictResponseModeShouldBeStrict", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "shouldStopBeforeBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpParserTest", "name": "strictRequestModeShouldBeStrict", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidVersionShouldThrow", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpRequestTest", "name": "invalidContentLengthHeader", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcConversionTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithCorruptDates", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcParserTest", "name": "testParsingArcWithBogusMime", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testBufferNoArray", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testEmpty", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "testMultiMember", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GzipChannelTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.MessageHeadersTest", "name": "testContains", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxWriterTest", "name": "test", "time": 0.016, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "test", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcinfoTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURINormal", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcTargetRecordTest", "name": "testTargetURIAngleBracketsQuirk", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "invalidVersionShouldThrow", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcRecordTest", "name": "datePrecision", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "testAgainstReference", "time": 0.015, "results": [{"result": "Skipped", "message": null, "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxRequestEncoderTest", "name": "test", "time": 0.03, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testEncodeHex", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testParsing", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha1", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBaseEncodingAutoDetection", "time": 0.057, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase32", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testBase64", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testMessageDigests", "time": 0.004, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha224", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha256", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.WarcDigestTest", "name": "testSha384", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoReadState", "time": 0.003, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferNoArray", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "testExtraField", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.GunzipChannelTest", "name": "externalBufferByteOrderLE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "test", "time": 0.005, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRequestTest", "name": "builder", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcContinuationTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "incompleteGzippedWarcRecordShouldCauseException", "time": 0.656, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoReadState", "time": 0.656, "results": [{"result": "Skipped", "message": "User must ensure buffer is in read state", "type": null}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testReadingFileChannel", "time": 0.021, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferNoArray", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "emptyFileShouldReturnNoRecords", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderBE", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferByteOrderLE", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "testCalculateBlockDigest", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcReaderTest", "name": "externalBufferPrepopulated", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcFilterTest", "name": "test", "time": 0.015, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "serializeHeaderShouldPreserveExactly", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.HttpResponseTest", "name": "parsingBogusContentLengthFolding", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "readingBodyShouldInvalidateHttp", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "callingHttpShouldNotCorruptBody", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "testNoHttpContentLength", "time": 0.009, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "test", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "builder", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcResponseTest", "name": "nullTruncation", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testFullFilePath", "time": 0.027, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "test", "time": 0.003, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testRevisit", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.cdx.CdxFormatTest", "name": "testDigestUnchanged", "time": 0.002, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MediaTypeTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "test", "time": 0.006, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "builder", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.WarcRevisitTest", "name": "buildingWithoutRefersToRecordId", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testBypassInternalBuffer", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testEOF", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testErr", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testLenientMode", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "test", "time": 0.001, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.ChunkedBodyTest", "name": "testChunkLengthTrailingWhiteSpace", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.ArcTest", "name": "test", "time": 0.007, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}, {"classname": "org.netpreserve.jwarc.apitests.MessageVersionTest", "name": "test", "time": 0.0, "results": [{"result": "Passed", "message": "", "type": ""}], "stdout": null, "stderr": null}], "workflow": {"path": "/tmp/30b63549-b4c7-41d3-9ede-8266e13efa15/.github/workflows/maven-crawler.yml", "type": "maven"}, "workflow_name": "579ae56b-7e72-400c-b378-c5eab9c81ee4", "build_tool": "maven", "elapsed_time": 34.53496551513672, "default_actions": false}]], "strategy": "PASS_PASS", "issues": []}