Files
ask262/test/engine262/debugger.test.mts
T
bendtherules 6e92d2345e Squashed 'engine262/' content from commit ae71998
git-subtree-dir: engine262
git-subtree-split: ae71998cc5a8315700555135b1ac202a0d6d0b31
2026-03-27 10:07:29 +05:30

46 lines
1.4 KiB
TypeScript

/* eslint-disable no-await-in-loop */
/* eslint-disable quotes */
import { expect, test } from 'vitest';
import {
Agent, evalQ, ManagedRealm, NormalCompletion, NumberValue, R, setSurroundingAgent,
surroundingAgent,
UndefinedValue,
Value,
type ValueCompletion,
} from '#self';
test('debugger statement should return undefined when no debugger is attached', async () => {
const agent = new Agent();
setSurroundingAgent(agent);
const realm = new ManagedRealm();
const result = realm.evaluateScript('debugger;') as NormalCompletion<UndefinedValue>;
expect(result).toBeInstanceOf(NormalCompletion);
expect(result.Value).toBe(Value.undefined);
});
test('debugger statement should return the value passed to resumeEvaluate', async () => {
const agent = new Agent({
onDebugger() {
},
});
setSurroundingAgent(agent);
const realm = new ManagedRealm();
evalQ((_Q, X) => {
const script = X(realm.compileScript('debugger;'));
let completion!: ValueCompletion;
realm.evaluate(script, (c) => {
completion = c;
});
// start the evaluation
X(surroundingAgent.resumeEvaluate({}));
// paused at the debugger statement, resume with a value
X(surroundingAgent.resumeEvaluate({
debuggerStatementCompletion: NormalCompletion(Value(42)),
}));
expect(completion).toBeDefined();
const value = X(completion) as NumberValue;
expect(value).toBeInstanceOf(NumberValue);
expect(R(value)).toBe(42);
});
});