From 2925e976e0be378d25c3d315b203a26cff1d34fd Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Sat, 1 Jun 2019 14:29:26 -0700 Subject: [PATCH 1/2] Add test for bracketed paste Part of #2170 Part of #2117 --- src/InputHandler.api.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/InputHandler.api.ts b/src/InputHandler.api.ts index 0d146d5d..863a38d7 100644 --- a/src/InputHandler.api.ts +++ b/src/InputHandler.api.ts @@ -229,6 +229,16 @@ describe('InputHandler Integration Tests', function(): void { assert.equal(await page.evaluate(`window.result`), '\x1b[?3;4R'); }); }); + + describe.only('SM: Set Mode', () => { + describe('CSI ? Pm h', () => { + it('Pm = 2004, Set bracketed paste mode', async function(): Promise { + assert.equal(await simulatePaste('foo'), 'foo'); + await page.evaluate(`window.term.write('\x1b[?2004h')`); + assert.equal(await simulatePaste('bar'), '\x1b[200~bar\x1b[201~'); + }); + }); + }); }); }); @@ -249,3 +259,16 @@ async function getLinesAsArray(count: number, start: number = 0): Promise { + const id = Math.floor(Math.random() * 1000000); + await page.evaluate(` + (function () { + window.term.onData(e => window.result_${id} = e); + const clipboardData = new DataTransfer(); + clipboardData.setData('text/plain', '${text}'); + window.term.textarea.dispatchEvent(new ClipboardEvent('paste', { clipboardData })); + })(); + `); + return await page.evaluate(`window.result_${id}`); +} From 86d410bfe99953397bac96550d73565f1ebda540 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Sat, 1 Jun 2019 14:31:36 -0700 Subject: [PATCH 2/2] Also test exit bracketed paste mode --- src/InputHandler.api.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/InputHandler.api.ts b/src/InputHandler.api.ts index 863a38d7..4ed06bfd 100644 --- a/src/InputHandler.api.ts +++ b/src/InputHandler.api.ts @@ -230,12 +230,14 @@ describe('InputHandler Integration Tests', function(): void { }); }); - describe.only('SM: Set Mode', () => { + describe('SM: Set Mode', () => { describe('CSI ? Pm h', () => { it('Pm = 2004, Set bracketed paste mode', async function(): Promise { assert.equal(await simulatePaste('foo'), 'foo'); await page.evaluate(`window.term.write('\x1b[?2004h')`); assert.equal(await simulatePaste('bar'), '\x1b[200~bar\x1b[201~'); + await page.evaluate(`window.term.write('\x1b[?2004l')`); + assert.equal(await simulatePaste('baz'), 'baz'); }); }); });