Skip to content

Commit b233abe

Browse files
committed
Add tests
1 parent 8263d52 commit b233abe

File tree

2 files changed

+106
-2
lines changed

2 files changed

+106
-2
lines changed

packages/php-wasm/xdebug-bridge/src/tests/start-bridge.spec.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ describe('Bridge', () => {
2222
if (event === 'clientConnected') {
2323
setTimeout(cb, 0);
2424
}
25-
2625
return this;
2726
});
2827
});
@@ -114,6 +113,16 @@ describe('Bridge', () => {
114113
expect(getPHPFile).toHaveBeenCalledWith('file:///custom.php');
115114
expect(result).toBe('<?php echo "Hello World";');
116115
});
116+
117+
it('excludes given paths', async () => {
118+
const paths = ['/foo', '/bar'];
119+
120+
await startBridge({ excludedPaths: paths });
121+
122+
const args = (XdebugCDPBridge as any).mock.calls[0][2];
123+
124+
expect(args.excludedPaths).toEqual(paths);
125+
});
117126
});
118127

119128
describe('Log', () => {

packages/php-wasm/xdebug-bridge/src/tests/xdebug-cdp-bridge.spec.ts

Lines changed: 96 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import fs from 'fs';
2-
import { createHash } from 'crypto';
32
import { vi } from 'vitest';
3+
import { createHash } from 'crypto';
44
import { DbgpSession } from '../lib/dbgp-session';
55
import { CDPServer } from '../lib/cdp-server';
66
import { XdebugCDPBridge } from '../lib/xdebug-cdp-bridge';
@@ -364,6 +364,7 @@ describe('XdebugCDPBridge', () => {
364364
vi.spyOn(cdpServer, 'sendMessage').mockImplementation((message) => {
365365
if (message.method === 'Debugger.scriptParsed') {
366366
script = message;
367+
367368
resolve();
368369
}
369370
return original(message);
@@ -409,4 +410,98 @@ describe('XdebugCDPBridge', () => {
409410
'AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA'
410411
);
411412
});
413+
414+
it('ignores files from excluded path', async () => {
415+
bridge = new XdebugCDPBridge(dbgpSession, cdpServer, {
416+
knownScriptUrls: [],
417+
getPHPFile: (file) => php.readFileAsText(file),
418+
breakOnFirstLine: true,
419+
});
420+
421+
const excludedPath = '/internal/shared';
422+
423+
const file = `${fixtures}/test.php`;
424+
425+
php.writeFile(file, fs.readFileSync(file).toString());
426+
427+
bridge.start();
428+
429+
let script;
430+
let sourceMap;
431+
432+
await php.runStream({ scriptPath: file });
433+
434+
await new Promise<void>((resolve) => {
435+
const original = cdpServer.sendMessage.bind(cdpServer);
436+
vi.spyOn(cdpServer, 'sendMessage').mockImplementation((message) => {
437+
if (message.method === 'Debugger.scriptParsed') {
438+
script = message;
439+
resolve();
440+
}
441+
return original(message);
442+
});
443+
});
444+
445+
sourceMap = JSON.parse(
446+
Buffer.from(
447+
script!.params.sourceMapURL.split(',')[1],
448+
'base64'
449+
).toString('utf8')
450+
);
451+
452+
expect(sourceMap).toEqual(
453+
expect.objectContaining({
454+
sources: expect.arrayContaining([
455+
expect.stringContaining(excludedPath),
456+
]),
457+
}),
458+
);
459+
460+
bridge.stop();
461+
462+
php.exit();
463+
464+
php = new PHP(
465+
await loadNodeRuntime(RecommendedPHPVersion, { withXdebug: true })
466+
);
467+
468+
dbgpSession = new DbgpSession();
469+
cdpServer = new CDPServer();
470+
bridge = new XdebugCDPBridge(dbgpSession, cdpServer, {
471+
knownScriptUrls: [],
472+
getPHPFile: (file) => php.readFileAsText(file),
473+
breakOnFirstLine: true,
474+
excludedPaths: [excludedPath],
475+
});
476+
477+
bridge.start();
478+
479+
await php.runStream({ scriptPath: file });
480+
481+
await new Promise<void>((resolve) => {
482+
const original = cdpServer.sendMessage.bind(cdpServer);
483+
vi.spyOn(cdpServer, 'sendMessage').mockImplementation((message) => {
484+
if (message.method === 'Debugger.scriptParsed') {
485+
script = message;
486+
resolve();
487+
}
488+
return original(message);
489+
});
490+
});
491+
492+
sourceMap = JSON.parse(
493+
Buffer.from(
494+
script!.params.sourceMapURL.split(',')[1],
495+
'base64'
496+
).toString('utf8')
497+
);
498+
499+
expect(sourceMap).toEqual(
500+
expect.objectContaining({
501+
sources: expect.arrayContaining([
502+
expect.stringContaining(file),
503+
]),
504+
}),
505+
);
506+
});
412507
});

0 commit comments

Comments
 (0)