jest-watch-typeahead 0.6.4 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1,5 @@
1
- "use strict";
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jest-watch-typeahead",
3
- "version": "0.6.4",
3
+ "version": "0.6.5",
4
4
  "main": "build/index.js",
5
5
  "author": "Rogelio Guzman <rogelioguzmanh@gmail.com>",
6
6
  "description": "Jest plugin for filtering by filename or test name",
@@ -19,7 +19,7 @@
19
19
  "test": "jest",
20
20
  "lint": "eslint .",
21
21
  "prebuild": "rimraf build",
22
- "build": "babel --extensions .js,.ts src -d build && rimraf **/*.test.{js,ts},integration",
22
+ "build": "babel --extensions .js,.ts src -d build && rimraf **/*.test.{js,ts},integration build/**/__tests__ build/test_utils",
23
23
  "prepublish": "yarn build",
24
24
  "format": "prettier --write \"**/*.js\" \"**/*.md\" \"**/*.ts\"",
25
25
  "typecheck": "yarn tsc -p ."
@@ -41,7 +41,7 @@
41
41
  "@jest/types": "^27.0.0",
42
42
  "@semantic-release/changelog": "^5.0.1",
43
43
  "@semantic-release/git": "^9.0.0",
44
- "@types/jest": "^26.0.13",
44
+ "@types/jest": "^27.0.0",
45
45
  "@types/node": "^14.6.4",
46
46
  "@typescript-eslint/eslint-plugin": "^4.0.1",
47
47
  "@typescript-eslint/parser": "^4.0.1",
@@ -1,162 +0,0 @@
1
- "use strict";
2
-
3
- var _jestWatcher = require("jest-watcher");
4
-
5
- var _pluginTester = _interopRequireDefault(require("../../test_utils/pluginTester"));
6
-
7
- var _plugin = _interopRequireDefault(require("../plugin"));
8
-
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
-
11
- const projects = [{
12
- config: {
13
- rootDir: '/project'
14
- },
15
- testPaths: ['/project/src/foo.js', '/project/src/file-1.js']
16
- }, {
17
- config: {
18
- rootDir: '/project'
19
- },
20
- testPaths: ['/project/src/bar.js', '/project/src/file-2.js']
21
- }];
22
- it('shows the correct initial state', async () => {
23
- const {
24
- stdout,
25
- hookEmitter,
26
- updateConfigAndRun,
27
- plugin,
28
- type
29
- } = (0, _pluginTester.default)(_plugin.default);
30
- hookEmitter.onFileChange({
31
- projects
32
- });
33
- const runPromise = plugin.run({}, updateConfigAndRun);
34
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
35
- type(_jestWatcher.KEYS.ENTER);
36
- await runPromise;
37
- });
38
- it('can use arrows to select a specific file', async () => {
39
- const {
40
- stdout,
41
- hookEmitter,
42
- updateConfigAndRun,
43
- plugin,
44
- type
45
- } = (0, _pluginTester.default)(_plugin.default);
46
- hookEmitter.onFileChange({
47
- projects
48
- });
49
- const runPromise = plugin.run({}, updateConfigAndRun);
50
- stdout.write.mockReset();
51
- type('f', 'i', _jestWatcher.KEYS.ARROW_DOWN, _jestWatcher.KEYS.ENTER);
52
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
53
- await runPromise;
54
- expect(updateConfigAndRun).toHaveBeenCalledWith({
55
- mode: 'watch',
56
- testPathPattern: 'src/file-1\\.js'
57
- });
58
- });
59
- it('can select a specific file that includes a regexp special character', async () => {
60
- const {
61
- hookEmitter,
62
- updateConfigAndRun,
63
- plugin,
64
- type
65
- } = (0, _pluginTester.default)(_plugin.default);
66
- hookEmitter.onFileChange({
67
- projects: [{
68
- config: {
69
- rootDir: '/project'
70
- },
71
- testPaths: ['/project/src/file_(xyz).js']
72
- }]
73
- });
74
- const runPromise = plugin.run({}, updateConfigAndRun);
75
- type('x', 'y', 'z', _jestWatcher.KEYS.ARROW_DOWN, _jestWatcher.KEYS.ENTER);
76
- await runPromise;
77
- expect(updateConfigAndRun).toHaveBeenCalledWith({
78
- mode: 'watch',
79
- testPathPattern: 'src/file_\\(xyz\\)\\.js'
80
- });
81
- });
82
- it('can select a pattern that matches multiple files', async () => {
83
- const {
84
- stdout,
85
- hookEmitter,
86
- updateConfigAndRun,
87
- plugin,
88
- type
89
- } = (0, _pluginTester.default)(_plugin.default);
90
- hookEmitter.onFileChange({
91
- projects
92
- });
93
- const runPromise = plugin.run({}, updateConfigAndRun);
94
- stdout.write.mockReset();
95
- type('f', 'i', _jestWatcher.KEYS.ENTER);
96
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
97
- await runPromise;
98
- expect(updateConfigAndRun).toHaveBeenCalledWith({
99
- mode: 'watch',
100
- testPathPattern: 'fi'
101
- });
102
- });
103
- it('can configure the key and prompt', async () => {
104
- const {
105
- plugin
106
- } = (0, _pluginTester.default)(_plugin.default, {
107
- config: {
108
- key: 'l',
109
- prompt: 'have a custom prompt'
110
- }
111
- });
112
- expect(plugin.getUsageInfo()).toEqual({
113
- key: 'l',
114
- prompt: 'have a custom prompt'
115
- });
116
- });
117
- it('file matching is case insensitive', async () => {
118
- const {
119
- stdout,
120
- hookEmitter,
121
- updateConfigAndRun,
122
- plugin,
123
- type
124
- } = (0, _pluginTester.default)(_plugin.default);
125
- hookEmitter.onFileChange({
126
- projects
127
- });
128
- const runPromise = plugin.run({}, updateConfigAndRun);
129
- type('f');
130
- stdout.write.mockReset();
131
- type('I');
132
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
133
- type(_jestWatcher.KEYS.ENTER);
134
- await runPromise;
135
- });
136
- it("selected file doesn't include trimming dots", async () => {
137
- const {
138
- hookEmitter,
139
- updateConfigAndRun,
140
- plugin,
141
- type
142
- } = (0, _pluginTester.default)(_plugin.default, {
143
- stdout: {
144
- columns: 40
145
- }
146
- });
147
- hookEmitter.onFileChange({
148
- projects: [{
149
- config: {
150
- rootDir: '/project'
151
- },
152
- testPaths: ['/project/src/long_name_gonna_need_trimming.js']
153
- }]
154
- });
155
- const runPromise = plugin.run({}, updateConfigAndRun);
156
- type('t', 'r', 'i', 'm', 'm', _jestWatcher.KEYS.ARROW_DOWN, _jestWatcher.KEYS.ENTER);
157
- await runPromise;
158
- expect(updateConfigAndRun).toHaveBeenCalledWith({
159
- mode: 'watch',
160
- testPathPattern: 'ong_name_gonna_need_trimming\\.js'
161
- });
162
- });
@@ -1,79 +0,0 @@
1
- "use strict";
2
-
3
- var _chalk = _interopRequireDefault(require("chalk"));
4
-
5
- var _utils = require("../utils");
6
-
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
-
9
- describe('trimAndFormatPath', () => {
10
- test.each`
11
- testPath | pad | columns
12
- ${'/project/src/gonna/fit/all.js'} | ${6} | ${80}
13
- ${'/project/src/trimmed_dir/foo.js'} | ${6} | ${20}
14
- ${'/project/src/exactly/sep_and_basename.js'} | ${6} | ${29}
15
- ${'/project/src/long_name_gonna_need_trimming.js'} | ${6} | ${40}
16
- `('formats when testpath="$testPath", pad="$pad", and columns="$columns"', ({
17
- testPath,
18
- pad,
19
- columns
20
- }) => {
21
- expect((0, _utils.trimAndFormatPath)(pad, {
22
- rootDir: '/project'
23
- }, testPath, columns)).toMatchSnapshot();
24
- });
25
- });
26
- describe('formatTestNameByPattern', () => {
27
- test.each`
28
- testName | pattern | width
29
- ${'the test name'} | ${'the'} | ${30}
30
- ${'the test name'} | ${'the'} | ${25}
31
- ${'the test name'} | ${'the'} | ${20}
32
- ${'the test name'} | ${'the'} | ${15}
33
- ${'the test name'} | ${'the'} | ${10}
34
- ${'the test name'} | ${'the'} | ${5}
35
- ${'the test name'} | ${'test'} | ${30}
36
- ${'the test name'} | ${'test'} | ${25}
37
- ${'the test name'} | ${'test'} | ${20}
38
- ${'the test name'} | ${'test'} | ${15}
39
- ${'the test name'} | ${'test'} | ${10}
40
- ${'the test name'} | ${'test'} | ${5}
41
- ${'the test name'} | ${'name'} | ${30}
42
- ${'the test name'} | ${'name'} | ${25}
43
- ${'the test name'} | ${'name'} | ${20}
44
- ${'the test name'} | ${'name'} | ${15}
45
- ${'the test name'} | ${'name'} | ${10}
46
- ${'the test name'} | ${'name'} | ${5}
47
- `('formats when testname="$testName", pattern="$pattern", and width="$width"', ({
48
- testName,
49
- pattern,
50
- width
51
- }) => {
52
- expect((0, _utils.formatTestNameByPattern)(testName, pattern, width)).toMatchSnapshot();
53
- });
54
- });
55
- describe('highlight', () => {
56
- const rawPath = '/Users/janedoe/my-project/src/__tests__/utils/experimentation/entry-point/parseEntryPoint.test.js';
57
- const pattern = 'parse';
58
- let filePath;
59
- /**
60
- * Helps us test that the highlight is placed correctly when `filePath`
61
- * contains ANSI characters from being formatted by chalk.
62
- * Passing a plain string for `filePath` results in false negatives.
63
- */
64
-
65
- const formatWithAnsi = text => _chalk.default.dim(text);
66
-
67
- it('places highlight correctly when file path is not truncated', () => {
68
- filePath = formatWithAnsi('__tests__/utils/experimentation/entry-point/parseEntryPoint.test.js');
69
- expect((0, _utils.highlight)(rawPath, filePath, pattern)).toMatchInlineSnapshot(`"<dim>__tests__/utils/experimentation/entry-point/</></>parse</><dim>EntryPoint.test.js</>"`);
70
- });
71
- it('places highlight correctly when file path is truncated', () => {
72
- filePath = formatWithAnsi('...tils/experimentation/entry-point/parseEntryPoint.test.js');
73
- expect((0, _utils.highlight)(rawPath, filePath, pattern)).toMatchInlineSnapshot(`"<dim>...tils/experimentation/entry-point/</></>parse</><dim>EntryPoint.test.js</>"`);
74
- });
75
- it('places highlight correctly when file path has relative head', () => {
76
- filePath = formatWithAnsi('./src/__tests__/utils/experimentation/entry-point/parseEntryPoint.test.js');
77
- expect((0, _utils.highlight)(rawPath, filePath, pattern)).toMatchInlineSnapshot(`"<dim>./src/__tests__/utils/experimentation/entry-point/</></>parse</><dim>EntryPoint.test.js</>"`);
78
- });
79
- });
@@ -1,197 +0,0 @@
1
- "use strict";
2
-
3
- var _jestWatcher = require("jest-watcher");
4
-
5
- var _pluginTester = _interopRequireDefault(require("../../test_utils/pluginTester"));
6
-
7
- var _plugin = _interopRequireDefault(require("../plugin"));
8
-
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
-
11
- const testResults = [{
12
- testResults: [{
13
- title: 'foo 1',
14
- fullName: 'some description foo 1'
15
- }, {
16
- title: 'bar 1',
17
- fullName: 'some description bar 1'
18
- }]
19
- }, {
20
- testResults: [{
21
- title: 'foo 2',
22
- fullName: 'other description foo 2'
23
- }, {
24
- title: 'bar 2',
25
- fullName: 'other description bar 2'
26
- }]
27
- }];
28
- it('shows the correct initial state', async () => {
29
- const {
30
- stdout,
31
- updateConfigAndRun,
32
- plugin,
33
- type
34
- } = (0, _pluginTester.default)(_plugin.default);
35
- const runPromise = plugin.run({}, updateConfigAndRun);
36
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
37
- type(_jestWatcher.KEYS.ENTER);
38
- await runPromise;
39
- });
40
- it('shows the correct message when there are no cached tests', async () => {
41
- const {
42
- stdout,
43
- updateConfigAndRun,
44
- plugin,
45
- type
46
- } = (0, _pluginTester.default)(_plugin.default);
47
- const runPromise = plugin.run({}, updateConfigAndRun);
48
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
49
- type('t', _jestWatcher.KEYS.ENTER);
50
- await runPromise;
51
- });
52
- it('can use arrows to select a specific test', async () => {
53
- const {
54
- stdout,
55
- hookEmitter,
56
- updateConfigAndRun,
57
- plugin,
58
- type
59
- } = (0, _pluginTester.default)(_plugin.default);
60
- hookEmitter.onTestRunComplete({
61
- testResults
62
- });
63
- const runPromise = plugin.run({}, updateConfigAndRun);
64
- stdout.write.mockReset();
65
- type('f', _jestWatcher.KEYS.ARROW_DOWN, _jestWatcher.KEYS.ARROW_DOWN, _jestWatcher.KEYS.ENTER);
66
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
67
- await runPromise;
68
- expect(updateConfigAndRun).toHaveBeenCalledWith({
69
- mode: 'watch',
70
- testNamePattern: '^other description foo 2$'
71
- });
72
- });
73
- it('can select a pattern that matches multiple tests', async () => {
74
- const {
75
- stdout,
76
- hookEmitter,
77
- updateConfigAndRun,
78
- plugin,
79
- type
80
- } = (0, _pluginTester.default)(_plugin.default);
81
- hookEmitter.onTestRunComplete({
82
- testResults
83
- });
84
- const runPromise = plugin.run({}, updateConfigAndRun);
85
- stdout.write.mockReset();
86
- type('f', 'o', _jestWatcher.KEYS.ENTER);
87
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
88
- await runPromise;
89
- expect(updateConfigAndRun).toHaveBeenCalledWith({
90
- mode: 'watch',
91
- testNamePattern: 'fo'
92
- });
93
- });
94
- it('can select a pattern that matches a describe block', async () => {
95
- const {
96
- stdout,
97
- hookEmitter,
98
- updateConfigAndRun,
99
- plugin,
100
- type
101
- } = (0, _pluginTester.default)(_plugin.default);
102
- hookEmitter.onTestRunComplete({
103
- testResults
104
- });
105
- const runPromise = plugin.run({}, updateConfigAndRun);
106
- stdout.write.mockReset();
107
- type('s', 'o', _jestWatcher.KEYS.ENTER);
108
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
109
- await runPromise;
110
- expect(updateConfigAndRun).toHaveBeenCalledWith({
111
- mode: 'watch',
112
- testNamePattern: 'so'
113
- });
114
- });
115
- it('can select a pattern that includes a regexp special character', async () => {
116
- const {
117
- hookEmitter,
118
- updateConfigAndRun,
119
- plugin,
120
- type
121
- } = (0, _pluginTester.default)(_plugin.default);
122
- hookEmitter.onTestRunComplete({
123
- testResults: [{
124
- testResults: [{
125
- title: 'bracket',
126
- fullName: 'bracket description (foo)'
127
- }]
128
- }]
129
- });
130
- const runPromise = plugin.run({}, updateConfigAndRun);
131
- type('b', 'r', _jestWatcher.KEYS.ARROW_DOWN, _jestWatcher.KEYS.ENTER);
132
- await runPromise;
133
- expect(updateConfigAndRun).toHaveBeenCalledWith({
134
- mode: 'watch',
135
- testNamePattern: '^bracket description \\(foo\\)$'
136
- });
137
- });
138
- it('can configure the key and prompt', async () => {
139
- const {
140
- plugin
141
- } = (0, _pluginTester.default)(_plugin.default, {
142
- config: {
143
- key: 'l',
144
- prompt: 'have a custom prompt'
145
- }
146
- });
147
- expect(plugin.getUsageInfo()).toEqual({
148
- key: 'l',
149
- prompt: 'have a custom prompt'
150
- });
151
- });
152
- it('test matching is case insensitive', async () => {
153
- const {
154
- stdout,
155
- hookEmitter,
156
- updateConfigAndRun,
157
- plugin,
158
- type
159
- } = (0, _pluginTester.default)(_plugin.default);
160
- hookEmitter.onTestRunComplete({
161
- testResults
162
- });
163
- const runPromise = plugin.run({}, updateConfigAndRun);
164
- type('f');
165
- stdout.write.mockReset();
166
- type('O');
167
- expect(stdout.write.mock.calls.join('\n')).toMatchSnapshot();
168
- type(_jestWatcher.KEYS.ENTER);
169
- await runPromise;
170
- });
171
- it("selected pattern doesn't include trimming dots", async () => {
172
- const {
173
- hookEmitter,
174
- updateConfigAndRun,
175
- plugin,
176
- type
177
- } = (0, _pluginTester.default)(_plugin.default, {
178
- stdout: {
179
- columns: 30
180
- }
181
- });
182
- hookEmitter.onTestRunComplete({
183
- testResults: [{
184
- testResults: [{
185
- title: 'trimmed long',
186
- fullName: 'long test name, gonna need trimming'
187
- }]
188
- }]
189
- });
190
- const runPromise = plugin.run({}, updateConfigAndRun);
191
- type('t', 'r', 'i', 'm', 'm', _jestWatcher.KEYS.ARROW_DOWN, _jestWatcher.KEYS.ENTER);
192
- await runPromise;
193
- expect(updateConfigAndRun).toHaveBeenCalledWith({
194
- mode: 'watch',
195
- testNamePattern: '^me, gonna need trimming$'
196
- });
197
- });
@@ -1,59 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = pluginTester;
7
-
8
- var _jestWatcher = require("jest-watcher");
9
-
10
- var _stripAnsi = _interopRequireDefault(require("strip-ansi"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- expect.addSnapshotSerializer({
15
- test: val => typeof val === 'string',
16
- print: val => (0, _stripAnsi.default)(val)
17
- });
18
- /**
19
- * See https://github.com/facebook/jest/pull/7523 for more details
20
- */
21
-
22
- const CLEAR = '\x1B[2J\x1B[3J\x1B[H';
23
- expect.addSnapshotSerializer({
24
- test: val => val.includes(CLEAR),
25
- print: val => (0, _stripAnsi.default)(val.replace(CLEAR, '[MOCK - clear]'))
26
- });
27
- /**
28
- * See https://github.com/facebook/jest/pull/7523 for more details
29
- */
30
-
31
- const WINDOWS_CLEAR = '\x1B[2J\x1B[0f';
32
- expect.addSnapshotSerializer({
33
- test: val => val.includes(WINDOWS_CLEAR),
34
- print: val => (0, _stripAnsi.default)(val.replace(WINDOWS_CLEAR, '[MOCK - clear]'))
35
- });
36
-
37
- function pluginTester(Plugin, options = {}) {
38
- const stdout = {
39
- columns: (options.stdout || {}).columns || 80,
40
- write: jest.fn()
41
- };
42
- const jestHooks = new _jestWatcher.JestHook();
43
- const plugin = new Plugin({
44
- stdout,
45
- stdin: process.stdin,
46
- config: options.config
47
- });
48
- plugin.apply(jestHooks.getSubscriber());
49
-
50
- const type = (...keys) => keys.forEach(key => plugin.onKey(key));
51
-
52
- return {
53
- stdout,
54
- hookEmitter: jestHooks.getEmitter(),
55
- updateConfigAndRun: jest.fn(),
56
- plugin,
57
- type
58
- };
59
- }