aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/inspect.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js/inspect.test.js')
-rw-r--r--test/bun.js/inspect.test.js315
1 files changed, 0 insertions, 315 deletions
diff --git a/test/bun.js/inspect.test.js b/test/bun.js/inspect.test.js
deleted file mode 100644
index 024a976a3..000000000
--- a/test/bun.js/inspect.test.js
+++ /dev/null
@@ -1,315 +0,0 @@
-import { it, expect, describe } from "bun:test";
-
-it("Timeout", () => {
- const id = setTimeout(() => {}, 0);
- expect(Bun.inspect(id)).toBe(`Timeout (#${+id})`);
-
- const id2 = setInterval(() => {}, 1);
- id2.unref();
- expect(Bun.inspect(id2)).toBe(`Timeout (#${+id2}, repeats)`);
-});
-
-it("when prototype defines the same property, don't print the same property twice", () => {
- var base = {
- foo: "123",
- };
- var obj = Object.create(base);
- obj.foo = "456";
- expect(Bun.inspect(obj).trim()).toBe('{\n foo: "456"\n}'.trim());
-});
-
-it("Blob inspect", () => {
- expect(Bun.inspect(new Blob(["123"]))).toBe(`Blob (3 bytes)`);
- expect(Bun.inspect(new Blob(["123".repeat(900)]))).toBe(`Blob (2.70 KB)`);
- expect(Bun.inspect(Bun.file("/tmp/file.txt"))).toBe(`FileRef ("/tmp/file.txt") {
- type: "text/plain;charset=utf-8"
-}`);
- expect(Bun.inspect(Bun.file(123))).toBe(`FileRef (fd: 123) {
- type: "application/octet-stream"
-}`);
- expect(Bun.inspect(new Response(new Blob()))).toBe(`Response (0 KB) {
- ok: true,
- url: "",
- statusText: "",
- redirected: false,
- bodyUsed: false,
- status: 200,
- [Blob detached]
-}`);
- expect(Bun.inspect(new Response("Hello"))).toBe(`Response (5 bytes) {
- ok: true,
- url: "",
- statusText: "",
- redirected: false,
- bodyUsed: false,
- status: 200,
- Blob (5 bytes)
-}`);
-});
-
-it.skip("utf16 property name", () => {
- var { Database } = require("bun:sqlite");
- const db = Database.open(":memory:");
- expect("笑".codePointAt(0)).toBe(31505);
-
- // latin1 escaping identifier issue
- expect(Object.keys({ 笑: "hey" })[0].codePointAt(0)).toBe(31505);
-
- const output = JSON.stringify(
- [
- {
- 笑: "😀",
- },
- ],
- null,
- 2,
- );
- expect(Bun.inspect(db.prepare("select '😀' as 笑").all())).toBe(output);
-});
-
-it("latin1", () => {
- expect(Bun.inspect("English")).toBe("English");
- expect(Bun.inspect("Français")).toBe("Français");
- expect(Bun.inspect("Ελληνική")).toBe("Ελληνική");
- expect(Bun.inspect("日本語")).toBe("日本語");
- expect(Bun.inspect("Emoji😎")).toBe("Emoji😎");
- expect(Bun.inspect("Français / Ελληνική")).toBe("Français / Ελληνική");
-});
-
-it("Request object", () => {
- expect(Bun.inspect(new Request({ url: "https://example.com" })).trim()).toBe(
- `
-Request (0 KB) {
- method: "GET",
- url: "https://example.com"
-}`.trim(),
- );
-});
-
-it("MessageEvent", () => {
- expect(Bun.inspect(new MessageEvent("message", { data: 123 }))).toBe(
- `MessageEvent {
- type: "message",
- data: 123
-}`,
- );
-});
-
-// https://github.com/oven-sh/bun/issues/561
-it("TypedArray prints", () => {
- for (let TypedArray of [
- Uint8Array,
- Uint16Array,
- Uint32Array,
- Uint8ClampedArray,
- Int8Array,
- Int16Array,
- Int32Array,
- Float32Array,
- Float64Array,
- ]) {
- const buffer = new TypedArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
- const input = Bun.inspect(buffer);
-
- expect(input).toBe(`${TypedArray.name}(${buffer.length}) [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]`);
- for (let i = 1; i < buffer.length + 1; i++) {
- expect(Bun.inspect(buffer.subarray(i))).toBe(
- `${TypedArray.name}(${buffer.length - i}) [ ` + [...buffer.subarray(i)].join(", ") + " ]",
- );
- }
- }
-});
-
-it("BigIntArray", () => {
- for (let TypedArray of [BigInt64Array, BigUint64Array]) {
- const buffer = new TypedArray([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 10n]);
- const input = Bun.inspect(buffer);
-
- expect(input).toBe(`${TypedArray.name}(${buffer.length}) [ 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 10n ]`);
- for (let i = 1; i < buffer.length + 1; i++) {
- expect(Bun.inspect(buffer.subarray(i))).toBe(
- `${TypedArray.name}(${buffer.length - i}) [ ` +
- [...buffer.subarray(i)].map(a => a.toString(10) + "n").join(", ") +
- " ]",
- );
- }
- }
-});
-
-it("FloatArray", () => {
- for (let TypedArray of [Float32Array, Float64Array]) {
- const buffer = new TypedArray([Math.fround(42.68)]);
- const input = Bun.inspect(buffer);
-
- expect(input).toBe(`${TypedArray.name}(${buffer.length}) [ ${[Math.fround(42.68)].join(", ")} ]`);
- for (let i = 1; i < buffer.length + 1; i++) {
- expect(Bun.inspect(buffer.subarray(i))).toBe(
- `${TypedArray.name}(${buffer.length - i}) [ ` + [...buffer.subarray(i)].join(", ") + " ]",
- );
- }
- }
-});
-
-it("jsx with two elements", () => {
- const input = Bun.inspect(
- <div hello="quoted">
- <input type="text" value={"123"} />
- string inside child
- </div>,
- );
-
- const output = `<div hello="quoted">
- <input type="text" value="123" />
- string inside child
-</div>`;
-
- expect(input).toBe(output);
-});
-
-const Foo = () => <div hello="quoted">foo</div>;
-
-it("jsx with anon component", () => {
- const input = Bun.inspect(<Foo />);
-
- const output = `<NoName />`;
-
- expect(input).toBe(output);
-});
-
-it("jsx with fragment", () => {
- const input = Bun.inspect(<>foo bar</>);
-
- const output = `<>foo bar</>`;
-
- expect(input).toBe(output);
-});
-
-it("inspect", () => {
- expect(Bun.inspect(new TypeError("what")).includes("TypeError: what")).toBe(true);
- expect("hi").toBe("hi");
- expect(Bun.inspect(1)).toBe("1");
- expect(Bun.inspect(NaN)).toBe("NaN");
- expect(Bun.inspect(Infinity)).toBe("Infinity");
- expect(Bun.inspect(-Infinity)).toBe("-Infinity");
- expect(Bun.inspect(1, "hi")).toBe("1 hi");
- expect(Bun.inspect([])).toBe("[]");
- expect(Bun.inspect({})).toBe("{}");
- expect(Bun.inspect({ hello: 1 })).toBe("{\n hello: 1\n}");
- expect(Bun.inspect({ hello: 1, there: 2 })).toBe("{\n hello: 1,\n there: 2\n}");
- expect(Bun.inspect({ hello: "1", there: 2 })).toBe('{\n hello: "1",\n there: 2\n}');
- expect(Bun.inspect({ 'hello-"there': "1", there: 2 })).toBe('{\n "hello-\\"there": "1",\n there: 2\n}');
- var str = "123";
- while (str.length < 4096) {
- str += "123";
- }
- expect(Bun.inspect(str)).toBe(str);
- // expect(Bun.inspect(new Headers())).toBe("Headers (0 KB) {}");
- expect(Bun.inspect(new Response()).length > 0).toBe(true);
- // expect(
- // JSON.stringify(
- // new Headers({
- // hi: "ok",
- // })
- // )
- // ).toBe('{"hi":"ok"}');
- expect(Bun.inspect(new Set())).toBe("Set {}");
- expect(Bun.inspect(new Map())).toBe("Map {}");
- expect(Bun.inspect(new Map([["foo", "bar"]]))).toBe('Map(1) {\n "foo": "bar",\n}');
- expect(Bun.inspect(new Set(["bar"]))).toBe('Set(1) {\n "bar",\n}');
- expect(Bun.inspect(<div>foo</div>)).toBe("<div>foo</div>");
- expect(Bun.inspect(<div hello>foo</div>)).toBe("<div hello=true>foo</div>");
- expect(Bun.inspect(<div hello={1}>foo</div>)).toBe("<div hello=1>foo</div>");
- expect(Bun.inspect(<div hello={123}>hi</div>)).toBe("<div hello=123>hi</div>");
- expect(Bun.inspect(<div hello="quoted">quoted</div>)).toBe('<div hello="quoted">quoted</div>');
- expect(
- Bun.inspect(
- <div hello="quoted">
- <input type="text" value={"123"} />
- </div>,
- ),
- ).toBe(
- `
-<div hello="quoted">
- <input type="text" value="123" />
-</div>`.trim(),
- );
- expect(Bun.inspect(BigInt(32))).toBe("32n");
-});
-
-describe("latin1 supplemental", () => {
- const fixture = [
- [["äbc"], '[ "äbc" ]'],
- [["cbä"], '[ "cbä" ]'],
- [["cäb"], '[ "cäb" ]'],
- [["äbc äbc"], '[ "äbc äbc" ]'],
- [["cbä cbä"], '[ "cbä cbä" ]'],
- [["cäb cäb"], '[ "cäb cäb" ]'],
- ];
-
- for (let [input, output] of fixture) {
- it(`latin1 (input) \"${input}\" ${output}`, () => {
- expect(Bun.inspect(input)).toBe(output);
- });
- it(`latin1 (output) \"${output}\"`, () => {
- expect(Bun.inspect(output)).toBe(output);
- });
- // this test is failing:
- // it(`latin1 (property key)`, () => {
- // expect(
- // Object.keys({
- // ä: 1,
- // })[0].codePointAt(0),
- // ).toBe(228);
- // });
- }
-});
-
-const fixture = [
- () => globalThis,
- () => Bun.file("/tmp/log.txt").stream(),
- () => Bun.file("/tmp/log.1.txt").stream().getReader(),
- () => Bun.file("/tmp/log.2.txt").writer(),
- () =>
- new WritableStream({
- write(chunk) {},
- }),
- () => require("events"),
- () => {
- return new (import.meta.require("events").EventEmitter)();
- },
- async () => await import("node:assert"),
- async () => await import("./empty.js"),
- () => import.meta.require("./empty.js"),
- () => new Proxy({ yolo: 1 }, {}),
- () =>
- new Proxy(
- { yolo: 1 },
- {
- get(target, prop) {
- return prop + "!";
- },
- has(target, prop) {
- return true;
- },
- ownKeys() {
- return ["foo"];
- },
- },
- ),
-];
-
-describe("crash testing", () => {
- for (let input of fixture) {
- it(`inspecting "${input.toString().slice(0, 20).replaceAll("\n", "\\n")}" doesn't crash`, async () => {
- try {
- Bun.inspect(await input());
- } catch (e) {
- // this can throw its fine
- }
- });
- }
-});
-
-it("possibly formatted emojis log", () => {
- expect(Bun.inspect("✔", "hey")).toBe("✔ hey");
-});