Skip to content

Commit 8acb62d

Browse files
dweillerandrewrk
authored andcommitted
std.compress.zstd: disable failing wasm32 tests
This commit can be reverted after #18971 is merged.
1 parent 588ec9d commit 8acb62d

File tree

1 file changed

+42
-14
lines changed

1 file changed

+42
-14
lines changed

lib/std/compress/zstandard.zig

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -247,38 +247,46 @@ test "zstandard decompression" {
247247
const res19 = try decompress.decode(buffer, compressed19, true);
248248
try std.testing.expectEqual(uncompressed.len, res19);
249249
try std.testing.expectEqualSlices(u8, uncompressed, buffer);
250+
}
251+
252+
test "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

251261
try testReader(compressed3, uncompressed);
252262
try testReader(compressed19, uncompressed);
253263
}
254264

255265
fn expectEqualDecoded(expected: []const u8, input: []const u8) !void {
256-
const allocator = std.testing.allocator;
257-
258266
{
259-
const result = try decompress.decodeAlloc(allocator, input, false, 1 << 23);
260-
defer allocator.free(result);
267+
const result = try decompress.decodeAlloc(std.testing.allocator, input, false, 1 << 23);
268+
defer std.testing.allocator.free(result);
261269
try std.testing.expectEqualStrings(expected, result);
262270
}
263271

264272
{
265-
var buffer = try allocator.alloc(u8, 2 * expected.len);
266-
defer allocator.free(buffer);
273+
var buffer = try std.testing.allocator.alloc(u8, 2 * expected.len);
274+
defer std.testing.allocator.free(buffer);
267275

268276
const size = try decompress.decode(buffer, input, false);
269277
try std.testing.expectEqualStrings(expected, buffer[0..size]);
270278
}
279+
}
271280

272-
{
273-
var window_buffer: [DecompressStreamOptions.default_window_size_max]u8 = undefined;
274-
var in_stream = std.io.fixedBufferStream(input);
275-
var stream = decompressStream(in_stream.reader(), &window_buffer);
281+
fn expectEqualDecodedStreaming(expected: []const u8, input: []const u8) !void {
282+
var window_buffer: [DecompressStreamOptions.default_window_size_max]u8 = undefined;
283+
var in_stream = std.io.fixedBufferStream(input);
284+
var stream = decompressStream(in_stream.reader(), &window_buffer);
276285

277-
const result = try stream.reader().readAllAlloc(allocator, std.math.maxInt(usize));
278-
defer allocator.free(result);
286+
const result = try stream.reader().readAllAlloc(std.testing.allocator, std.math.maxInt(usize));
287+
defer std.testing.allocator.free(result);
279288

280-
try std.testing.expectEqualStrings(expected, result);
281-
}
289+
try std.testing.expectEqualStrings(expected, result);
282290
}
283291

284292
test "zero sized block" {
@@ -296,3 +304,23 @@ test "zero sized block" {
296304
try expectEqualDecoded("", input_raw);
297305
try expectEqualDecoded("", input_rle);
298306
}
307+
308+
test "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+
}

0 commit comments

Comments
 (0)