aboutsummaryrefslogtreecommitdiff
path: root/packages/bun-debug-adapter-protocol/debugger/preview.test.ts
diff options
context:
space:
mode:
authorGravatar Ashcon Partovi <ashcon@partovi.net> 2023-08-24 22:53:34 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-24 22:53:34 -0700
commit1480889205d49cf7221a36608a8896b452967cea (patch)
treee1427e4041cf19ef1e8e8e0f58cfbbceb4cbbf74 /packages/bun-debug-adapter-protocol/debugger/preview.test.ts
parentf269432d90826ad3e5b66c7685a6e826e0fb05e2 (diff)
downloadbun-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.ts62
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();
+ }
+});