diff options
author | 2023-08-24 22:53:34 -0700 | |
---|---|---|
committer | 2023-08-24 22:53:34 -0700 | |
commit | 1480889205d49cf7221a36608a8896b452967cea (patch) | |
tree | e1427e4041cf19ef1e8e8e0f58cfbbceb4cbbf74 /packages/bun-debug-adapter-protocol/debugger/preview.test.ts | |
parent | f269432d90826ad3e5b66c7685a6e826e0fb05e2 (diff) | |
download | bun-1480889205d49cf7221a36608a8896b452967cea.tar.gz bun-1480889205d49cf7221a36608a8896b452967cea.tar.zst bun-1480889205d49cf7221a36608a8896b452967cea.zip |
Improved support for `debug-adapter-protocol` (#4186)
* Improve support for \`debug-adapter-protocol\`
* More improvements, fix formatting in debug console
* Fix attaching
* Prepare for source maps
* Start of source map support, breakpoints work
* Source map support
* add some package.jsons
* wip
* Update package.json
* More fixes
* Make source maps safer if exception occurs
* Check bun version if it fails
* Fix console.log formatting
* Fix source maps partly
* More source map fixes
* Prepare for extension
* watch mode with dap
* Improve preview code
* Prepare for extension 2
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'packages/bun-debug-adapter-protocol/debugger/preview.test.ts')
-rw-r--r-- | packages/bun-debug-adapter-protocol/debugger/preview.test.ts | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/packages/bun-debug-adapter-protocol/debugger/preview.test.ts b/packages/bun-debug-adapter-protocol/debugger/preview.test.ts new file mode 100644 index 000000000..666913719 --- /dev/null +++ b/packages/bun-debug-adapter-protocol/debugger/preview.test.ts @@ -0,0 +1,62 @@ +import { beforeAll, afterAll, test, expect } from "bun:test"; +import type { JSC } from "../../bun-inspector-protocol"; +import { WebSocketInspector } from "../../bun-inspector-protocol"; +import type { PipedSubprocess } from "bun"; +import { spawn } from "bun"; +import { remoteObjectToString } from "./preview"; + +let subprocess: PipedSubprocess | undefined; +let objects: JSC.Runtime.RemoteObject[] = []; + +beforeAll(async () => { + subprocess = spawn({ + cwd: import.meta.dir, + cmd: [process.argv0, "--inspect-wait=0", "fixtures/preview.js"], + stdout: "pipe", + stderr: "pipe", + stdin: "pipe", + }); + const decoder = new TextDecoder(); + let url: URL; + for await (const chunk of subprocess!.stdout) { + const text = decoder.decode(chunk); + if (text.includes("ws://")) { + url = new URL(/(ws:\/\/.*)/.exec(text)![0]); + break; + } + } + objects = await new Promise((resolve, reject) => { + const inspector = new WebSocketInspector({ + url, + listener: { + ["Inspector.connected"]: () => { + inspector.send("Inspector.enable"); + inspector.send("Runtime.enable"); + inspector.send("Console.enable"); + inspector.send("Debugger.enable"); + inspector.send("Debugger.resume"); + inspector.send("Inspector.initialized"); + }, + ["Inspector.disconnected"]: error => { + reject(error); + }, + ["Console.messageAdded"]: ({ message }) => { + const { parameters } = message; + resolve(parameters!); + inspector.close(); + }, + }, + }); + inspector.start(); + }); +}); + +afterAll(() => { + subprocess?.kill(); +}); + +test("remoteObjectToString", () => { + for (const object of objects) { + expect(remoteObjectToString(object)).toMatchSnapshot(); + } +}); |