authorgravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2024-02-17 14:29:44+11:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-02-23 02:37:11-07:00
logaccbba3cd8143eb85d3cb7d8d52f092c6fb9c847
tree2e211158ca56d962f3a51aa195e888a32a76ff68
parentac1b957e79e6a150c0dc8f835fe956d6bb3d3372

std.compress.zstd: disable failing wasm32 tests

This commit can be reverted after https://github.com/ziglang/zig/pull/18971 is merged.

1 files changed, 42 insertions(+), 14 deletions(-)

lib/std/compress/zstandard.zig+42-14
...@@ -247,38 +247,46 @@ test "zstandard decompression" {...@@ -247,38 +247,46 @@ test "zstandard decompression" {
247 const res19 = try decompress.decode(buffer, compressed19, true);247 const res19 = try decompress.decode(buffer, compressed19, true);
248 try std.testing.expectEqual(uncompressed.len, res19);248 try std.testing.expectEqual(uncompressed.len, res19);
249 try std.testing.expectEqualSlices(u8, uncompressed, buffer);249 try std.testing.expectEqualSlices(u8, uncompressed, buffer);
250}
251
252test "zstandard streaming decompression" {
253 // default stack size for wasm32 is too low for DecompressStream - slightly
254 // over 9MiB stack space is needed via the --stack CLI flag
255 if (@import("builtin").target.cpu.arch == .wasm32) return error.SkipZigTest;
256
257 const uncompressed = @embedFile("testdata/rfc8478.txt");
258 const compressed3 = @embedFile("testdata/rfc8478.txt.zst.3");
259 const compressed19 = @embedFile("testdata/rfc8478.txt.zst.19");
250260
251 try testReader(compressed3, uncompressed);261 try testReader(compressed3, uncompressed);
252 try testReader(compressed19, uncompressed);262 try testReader(compressed19, uncompressed);
253}263}
254264
255fn expectEqualDecoded(expected: []const u8, input: []const u8) !void {265fn expectEqualDecoded(expected: []const u8, input: []const u8) !void {
256 const allocator = std.testing.allocator;
257
258 {266 {
259 const result = try decompress.decodeAlloc(allocator, input, false, 1 << 23);267 const result = try decompress.decodeAlloc(std.testing.allocator, input, false, 1 << 23);
260 defer allocator.free(result);268 defer std.testing.allocator.free(result);
261 try std.testing.expectEqualStrings(expected, result);269 try std.testing.expectEqualStrings(expected, result);
262 }270 }
263271
264 {272 {
265 var buffer = try allocator.alloc(u8, 2 * expected.len);273 var buffer = try std.testing.allocator.alloc(u8, 2 * expected.len);
266 defer allocator.free(buffer);274 defer std.testing.allocator.free(buffer);
267275
268 const size = try decompress.decode(buffer, input, false);276 const size = try decompress.decode(buffer, input, false);
269 try std.testing.expectEqualStrings(expected, buffer[0..size]);277 try std.testing.expectEqualStrings(expected, buffer[0..size]);
270 }278 }
279}
271280
272 {281fn expectEqualDecodedStreaming(expected: []const u8, input: []const u8) !void {
273 var window_buffer: [DecompressStreamOptions.default_window_size_max]u8 = undefined;282 var window_buffer: [DecompressStreamOptions.default_window_size_max]u8 = undefined;
274 var in_stream = std.io.fixedBufferStream(input);283 var in_stream = std.io.fixedBufferStream(input);
275 var stream = decompressStream(in_stream.reader(), &window_buffer);284 var stream = decompressStream(in_stream.reader(), &window_buffer);
276285
277 const result = try stream.reader().readAllAlloc(allocator, std.math.maxInt(usize));286 const result = try stream.reader().readAllAlloc(std.testing.allocator, std.math.maxInt(usize));
278 defer allocator.free(result);287 defer std.testing.allocator.free(result);
279288
280 try std.testing.expectEqualStrings(expected, result);289 try std.testing.expectEqualStrings(expected, result);
281 }
282}290}
283291
284test "zero sized block" {292test "zero sized block" {
...@@ -296,3 +304,23 @@ test "zero sized block" {...@@ -296,3 +304,23 @@ test "zero sized block" {
296 try expectEqualDecoded("", input_raw);304 try expectEqualDecoded("", input_raw);
297 try expectEqualDecoded("", input_rle);305 try expectEqualDecoded("", input_rle);
298}306}
307
308test "zero sized block streaming" {
309 // default stack size for wasm32 is too low for DecompressStream - slightly
310 // over 9MiB stack space is needed via the --stack CLI flag
311 if (@import("builtin").target.cpu.arch == .wasm32) return error.SkipZigTest;
312
313 const input_raw =
314 "\x28\xb5\x2f\xfd" ++ // zstandard frame magic number
315 "\x20\x00" ++ // frame header: only single_segment_flag set, frame_content_size zero
316 "\x01\x00\x00"; // block header with: last_block set, block_type raw, block_size zero
317
318 const input_rle =
319 "\x28\xb5\x2f\xfd" ++ // zstandard frame magic number
320 "\x20\x00" ++ // frame header: only single_segment_flag set, frame_content_size zero
321 "\x03\x00\x00" ++ // block header with: last_block set, block_type rle, block_size zero
322 "\xaa"; // block_content
323
324 try expectEqualDecodedStreaming("", input_raw);
325 try expectEqualDecodedStreaming("", input_rle);
326}