mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 10:58:56 +00:00
* fix: zlib functions should throw an error if appropriate Fixes #8887. * Tests for #8887 * fix: drive-by fix to avoid unreachable code being reached on error
67 lines
2.1 KiB
JavaScript
67 lines
2.1 KiB
JavaScript
import { describe, it, expect } from "bun:test";
|
|
import { gzipSync, deflateSync, inflateSync, gunzipSync } from "bun";
|
|
|
|
describe("zlib", () => {
|
|
it("should be able to deflate and inflate", () => {
|
|
const data = new TextEncoder().encode("Hello World!".repeat(1));
|
|
const compressed = deflateSync(data);
|
|
const decompressed = inflateSync(compressed);
|
|
expect(decompressed.join("")).toBe(data.join(""));
|
|
});
|
|
|
|
it("should be able to gzip and gunzip", () => {
|
|
const data = new TextEncoder().encode("Hello World!".repeat(1));
|
|
const compressed = gzipSync(data);
|
|
const decompressed = gunzipSync(compressed);
|
|
expect(decompressed.join("")).toBe(data.join(""));
|
|
});
|
|
|
|
it("should throw on invalid raw deflate data", () => {
|
|
const data = new TextEncoder().encode("Hello World!".repeat(1));
|
|
expect(() => inflateSync(data)).toThrow(new Error("invalid stored block lengths"));
|
|
});
|
|
|
|
it("should throw on invalid gzip data", () => {
|
|
const data = new TextEncoder().encode("Hello World!".repeat(1));
|
|
expect(() => gunzipSync(data)).toThrow(new Error("incorrect header check"));
|
|
});
|
|
});
|
|
|
|
import * as zlib from "node:zlib";
|
|
import * as fs from "node:fs";
|
|
import * as buffer from "node:buffer";
|
|
|
|
describe("zlib.gunzip", () => {
|
|
it("should be able to unzip a Buffer and return an unzipped Buffer", async () => {
|
|
const content = fs.readFileSync(import.meta.dir + "/fixture.html.gz");
|
|
return new Promise((resolve, reject) => {
|
|
zlib.gunzip(content, (error, data) => {
|
|
if (error) {
|
|
reject(error);
|
|
return;
|
|
}
|
|
expect(data !== null).toBe(true);
|
|
expect(buffer.Buffer.isBuffer(data)).toBe(true);
|
|
resolve(true);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("zlib.brotli*", () => {
|
|
it("returns stub", () => {
|
|
for (const method of [
|
|
"BrotliCompress",
|
|
"BrotliDecompress",
|
|
"brotliCompress",
|
|
"brotliCompressSync",
|
|
"brotliDecompress",
|
|
"brotliDecompressSync",
|
|
"createBrotliCompress",
|
|
"createBrotliDecompress",
|
|
]) {
|
|
expect(() => zlib[method]()).toThrow(new Error(`zlib.${method} is not implemented`));
|
|
}
|
|
});
|
|
});
|