From 93a2b528adcfa725e78695524f3398cb56942623 Mon Sep 17 00:00:00 2001 From: Parth Sharma Date: Wed, 28 Apr 2021 18:02:53 +0530 Subject: [PATCH] feat: add support for to clear line in prompt --- CHANGELOG.md | 1 + packages/jest-watcher/src/constants.ts | 1 + packages/jest-watcher/src/lib/Prompt.ts | 6 ++++++ .../src/lib/__tests__/prompt.test.ts | 17 +++++++++++++++++ 4 files changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41e06c7a83f9..d9f99b65bd62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ - `[jest-transform]` [**BREAKING**] Do not export `ScriptTransformer` class, instead export the async function `createScriptTransformer` ([#11163](https://github.com/facebook/jest/pull/11163)) - `[jest-transform]` Async code transformations ([#9889](https://github.com/facebook/jest/pull/9889)) - `[jest-transform]` Support transpiled transformers ([#11193](https://github.com/facebook/jest/pull/11193)) +- `[jest-watcher]` Added support for clearing the line when `` is pressed in a watch mode pattern prompt ([#11358](https://github.com/facebook/jest/pull/11358)) - `[jest-worker]` Add support for custom task queues and adds a `PriorityQueue` implementation. ([#10921](https://github.com/facebook/jest/pull/10921)) - `[jest-worker]` Add in-order scheduling policy to jest worker ([10902](https://github.com/facebook/jest/pull/10902)) - `[pretty-format]` Better print for sparse arrays ([11326](https://github.com/facebook/jest/pull/11326)) diff --git a/packages/jest-watcher/src/constants.ts b/packages/jest-watcher/src/constants.ts index d1a29c337421..e98ed3b2eb7f 100644 --- a/packages/jest-watcher/src/constants.ts +++ b/packages/jest-watcher/src/constants.ts @@ -15,6 +15,7 @@ export const KEYS = { BACKSPACE: Buffer.from(isWindows ? '08' : '7f', 'hex').toString(), CONTROL_C: '\u0003', CONTROL_D: '\u0004', + CONTROL_U: '\u0015', ENTER: '\r', ESCAPE: '\u001b', }; diff --git a/packages/jest-watcher/src/lib/Prompt.ts b/packages/jest-watcher/src/lib/Prompt.ts index 287d3bea027d..114bd4821a91 100644 --- a/packages/jest-watcher/src/lib/Prompt.ts +++ b/packages/jest-watcher/src/lib/Prompt.ts @@ -89,6 +89,12 @@ export default class Prompt { case KEYS.ARROW_LEFT: case KEYS.ARROW_RIGHT: break; + case KEYS.CONTROL_U: + this._value = ''; + this._offset = -1; + this._selection = null; + this._onChange(); + break; default: this._value = key === KEYS.BACKSPACE ? this._value.slice(0, -1) : this._value + key; diff --git a/packages/jest-watcher/src/lib/__tests__/prompt.test.ts b/packages/jest-watcher/src/lib/__tests__/prompt.test.ts index da68d77da31d..d76cff32709f 100644 --- a/packages/jest-watcher/src/lib/__tests__/prompt.test.ts +++ b/packages/jest-watcher/src/lib/__tests__/prompt.test.ts @@ -62,3 +62,20 @@ it('calls handler on cancel prompt', () => { expect(onCancel).toHaveBeenCalled(); }); + +it('clears the line when CONTROL_U is pressed', () => { + const prompt = new Prompt(); + const onChange = jest.fn(); + const options = {max: 10, offset: -1}; + + prompt.enter(onChange, jest.fn(), jest.fn()); + + prompt.put('t'); + prompt.put('e'); + prompt.put('s'); + prompt.put('t'); + expect(onChange).toHaveBeenLastCalledWith('test', options); + + prompt.put(KEYS.CONTROL_U); + expect(onChange).toHaveBeenLastCalledWith('', options); +});