Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 83b2bf8

Browse filesBrowse files
lpincaaduh95
authored andcommitted
test: split test-fs-watch-ignore-*
Split and simplify the tests into individual files. Refs: #61433 PR-URL: #61494 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
1 parent f05bad9 commit 83b2bf8
Copy full SHA for 83b2bf8

18 files changed

+690-701Lines changed: 690 additions & 701 deletions
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎test/parallel/parallel.status‎

Copy file name to clipboardExpand all lines: test/parallel/parallel.status
+18Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,32 @@ test-domain-throw-error-then-throw-from-uncaught-exception-handler: PASS, FLAKY
7676
test-domain-with-abort-on-uncaught-exception: PASS, FLAKY
7777
# https://github.com/nodejs/node/issues/54346
7878
test-esm-loader-hooks-inspect-wait: PASS, FLAKY
79+
# https://github.com/nodejs/node/issues/61520
7980
test-fs-promises-watch-iterator: SKIP
81+
test-fs-promises-watch-ignore-function: SKIP
82+
test-fs-promises-watch-ignore-glob: SKIP
83+
test-fs-promises-watch-ignore-mixed: SKIP
84+
test-fs-promises-watch-ignore-regexp: SKIP
85+
test-fs-watch-ignore-function: SKIP
86+
test-fs-watch-ignore-glob: SKIP
87+
test-fs-watch-ignore-mixed: SKIP
88+
test-fs-watch-ignore-regexp: SKIP
8089
# https://github.com/nodejs/node/issues/50050
8190
test-tick-processor-arguments: SKIP
8291

8392
[$system==freebsd]
8493
# https://github.com/nodejs/node/issues/54346
8594
test-esm-loader-hooks-inspect-wait: PASS, FLAKY
95+
# https://github.com/nodejs/node/issues/61520
8696
test-fs-promises-watch-iterator: SKIP
97+
test-fs-promises-watch-ignore-function: SKIP
98+
test-fs-promises-watch-ignore-glob: SKIP
99+
test-fs-promises-watch-ignore-mixed: SKIP
100+
test-fs-promises-watch-ignore-regexp: SKIP
101+
test-fs-watch-ignore-function: SKIP
102+
test-fs-watch-ignore-glob: SKIP
103+
test-fs-watch-ignore-mixed: SKIP
104+
test-fs-watch-ignore-regexp: SKIP
87105

88106
[$system==aix]
89107
# https://github.com/nodejs/node/issues/54346
Collapse file
+46Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import * as common from '../common/index.mjs';
2+
import { skipIfNoWatch } from '../common/watch.js';
3+
4+
skipIfNoWatch();
5+
6+
const assert = await import('node:assert');
7+
const path = await import('node:path');
8+
const tmpdir = await import('../common/tmpdir.js');
9+
const { setTimeout } = await import('node:timers/promises');
10+
const { watch } = await import('node:fs/promises');
11+
const { writeFileSync } = await import('node:fs');
12+
13+
tmpdir.refresh();
14+
15+
const testDir = tmpdir.resolve();
16+
const keepFile = 'visible.txt';
17+
const ignoreFile = '.hidden';
18+
const keepFilePath = path.join(testDir, keepFile);
19+
const ignoreFilePath = path.join(testDir, ignoreFile);
20+
21+
async function watchDir() {
22+
const watcher = watch(testDir, {
23+
ignore: (filename) => filename.startsWith('.'),
24+
});
25+
26+
for await (const { filename } of watcher) {
27+
assert.notStrictEqual(filename, ignoreFile);
28+
29+
if (filename === keepFile) {
30+
break;
31+
}
32+
}
33+
}
34+
35+
async function writeFiles() {
36+
if (common.isMacOS) {
37+
// Do the write with a delay to ensure that the OS is ready to notify us.
38+
// See https://github.com/nodejs/node/issues/52601.
39+
await setTimeout(common.platformTimeout(100));
40+
}
41+
42+
writeFileSync(ignoreFilePath, 'ignored');
43+
writeFileSync(keepFilePath, 'content');
44+
}
45+
46+
await Promise.all([watchDir(), writeFiles()]);
Collapse file
+44Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import * as common from '../common/index.mjs';
2+
import { skipIfNoWatch } from '../common/watch.js';
3+
4+
skipIfNoWatch();
5+
6+
const assert = await import('node:assert');
7+
const path = await import('node:path');
8+
const tmpdir = await import('../common/tmpdir.js');
9+
const { setTimeout } = await import('node:timers/promises');
10+
const { watch } = await import('node:fs/promises');
11+
const { writeFileSync } = await import('node:fs');
12+
13+
tmpdir.refresh();
14+
15+
const testDir = tmpdir.resolve();
16+
const keepFile = 'keep.txt';
17+
const ignoreFile = 'ignore.log';
18+
const keepFilePath = path.join(testDir, keepFile);
19+
const ignoreFilePath = path.join(testDir, ignoreFile);
20+
21+
async function watchDir() {
22+
const watcher = watch(testDir, { ignore: '*.log' });
23+
24+
for await (const { filename } of watcher) {
25+
assert.notStrictEqual(filename, ignoreFile);
26+
27+
if (filename === keepFile) {
28+
break;
29+
}
30+
}
31+
}
32+
33+
async function writeFiles() {
34+
if (common.isMacOS) {
35+
// Do the write with a delay to ensure that the OS is ready to notify us.
36+
// See https://github.com/nodejs/node/issues/52601.
37+
await setTimeout(common.platformTimeout(100));
38+
}
39+
40+
writeFileSync(ignoreFilePath, 'ignored');
41+
writeFileSync(keepFilePath, 'content');
42+
}
43+
44+
await Promise.all([watchDir(), writeFiles()]);
Collapse file
+35Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import '../common/index.mjs';
2+
import { skipIfNoWatch } from '../common/watch.js';
3+
4+
skipIfNoWatch();
5+
6+
const assert = await import('node:assert');
7+
const { watch } = await import('node:fs/promises');
8+
9+
await assert.rejects(
10+
async () => {
11+
const watcher = watch('.', { ignore: 123 });
12+
// eslint-disable-next-line no-unused-vars
13+
for await (const _ of watcher) {
14+
// Will throw before yielding
15+
}
16+
},
17+
{
18+
code: 'ERR_INVALID_ARG_TYPE',
19+
name: 'TypeError',
20+
}
21+
);
22+
23+
await assert.rejects(
24+
async () => {
25+
const watcher = watch('.', { ignore: '' });
26+
// eslint-disable-next-line no-unused-vars
27+
for await (const _ of watcher) {
28+
// Will throw before yielding
29+
}
30+
},
31+
{
32+
code: 'ERR_INVALID_ARG_VALUE',
33+
name: 'TypeError',
34+
}
35+
);
Collapse file
+53Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import * as common from '../common/index.mjs';
2+
import { skipIfNoWatch } from '../common/watch.js';
3+
4+
skipIfNoWatch();
5+
6+
const assert = await import('node:assert');
7+
const path = await import('node:path');
8+
const tmpdir = await import('../common/tmpdir.js');
9+
const { setTimeout } = await import('node:timers/promises');
10+
const { watch } = await import('node:fs/promises');
11+
const { writeFileSync } = await import('node:fs');
12+
13+
tmpdir.refresh();
14+
15+
const testDir = tmpdir.resolve();
16+
const keepFile = 'keep.txt';
17+
const ignoreLog = 'debug.log';
18+
const ignoreTmp = 'temp.tmp';
19+
const keepFilePath = path.join(testDir, keepFile);
20+
const ignoreLogPath = path.join(testDir, ignoreLog);
21+
const ignoreTmpPath = path.join(testDir, ignoreTmp);
22+
23+
async function watchDir() {
24+
const watcher = watch(testDir, {
25+
ignore: [
26+
'*.log',
27+
/\.tmp$/,
28+
],
29+
});
30+
31+
for await (const { filename } of watcher) {
32+
assert.notStrictEqual(filename, ignoreLog);
33+
assert.notStrictEqual(filename, ignoreTmp);
34+
35+
if (filename === keepFile) {
36+
break;
37+
}
38+
}
39+
}
40+
41+
async function writeFiles() {
42+
if (common.isMacOS) {
43+
// Do the write with a delay to ensure that the OS is ready to notify us.
44+
// See https://github.com/nodejs/node/issues/52601.
45+
await setTimeout(common.platformTimeout(100));
46+
}
47+
48+
writeFileSync(ignoreLogPath, 'ignored');
49+
writeFileSync(ignoreTmpPath, 'ignored');
50+
writeFileSync(keepFilePath, 'content');
51+
}
52+
53+
await Promise.all([watchDir(), writeFiles()]);
Collapse file
+44Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import * as common from '../common/index.mjs';
2+
import { skipIfNoWatch } from '../common/watch.js';
3+
4+
skipIfNoWatch();
5+
6+
const assert = await import('node:assert');
7+
const path = await import('node:path');
8+
const tmpdir = await import('../common/tmpdir.js');
9+
const { setTimeout } = await import('node:timers/promises');
10+
const { watch } = await import('node:fs/promises');
11+
const { writeFileSync } = await import('node:fs');
12+
13+
tmpdir.refresh();
14+
15+
const testDir = tmpdir.resolve();
16+
const keepFile = 'keep.txt';
17+
const ignoreFile = 'ignore.tmp';
18+
const keepFilePath = path.join(testDir, keepFile);
19+
const ignoreFilePath = path.join(testDir, ignoreFile);
20+
21+
async function watchDir() {
22+
const watcher = watch(testDir, { ignore: /\.tmp$/ });
23+
24+
for await (const { filename } of watcher) {
25+
assert.notStrictEqual(filename, ignoreFile);
26+
27+
if (filename === keepFile) {
28+
break;
29+
}
30+
}
31+
}
32+
33+
async function writeFiles() {
34+
if (common.isMacOS) {
35+
// Do the write with a delay to ensure that the OS is ready to notify us.
36+
// See https://github.com/nodejs/node/issues/52601.
37+
await setTimeout(common.platformTimeout(100));
38+
}
39+
40+
writeFileSync(ignoreFilePath, 'ignored');
41+
writeFileSync(keepFilePath, 'content');
42+
}
43+
44+
await Promise.all([watchDir(), writeFiles()]);
Collapse file
+44Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
'use strict';
2+
3+
const common = require('../common');
4+
const { skipIfNoWatch } = require('../common/watch.js');
5+
6+
skipIfNoWatch();
7+
8+
const assert = require('assert');
9+
const path = require('path');
10+
const fs = require('fs');
11+
12+
const tmpdir = require('../common/tmpdir');
13+
14+
tmpdir.refresh();
15+
16+
const testFileName = 'visible.txt';
17+
const testFilePath = path.join(tmpdir.path, testFileName);
18+
const ignoredFileName = '.hidden';
19+
const ignoredFilePath = path.join(tmpdir.path, ignoredFileName);
20+
21+
const watcher = fs.watch(tmpdir.path, {
22+
ignore: (filename) => filename.startsWith('.'),
23+
});
24+
25+
watcher.on('change', common.mustCallAtLeast((event, filename) => {
26+
assert.notStrictEqual(filename, ignoredFileName);
27+
28+
if (filename === testFileName) {
29+
watcher.close();
30+
}
31+
}, 1));
32+
33+
function writeFiles() {
34+
fs.writeFileSync(ignoredFilePath, 'ignored');
35+
fs.writeFileSync(testFilePath, 'content');
36+
}
37+
38+
if (common.isMacOS) {
39+
// Do the write with a delay to ensure that the OS is ready to notify us. See
40+
// https://github.com/nodejs/node/issues/52601.
41+
setTimeout(writeFiles, common.platformTimeout(100));
42+
} else {
43+
writeFiles();
44+
}
Collapse file
+44Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
'use strict';
2+
3+
const common = require('../common');
4+
const { skipIfNoWatch } = require('../common/watch.js');
5+
6+
skipIfNoWatch();
7+
8+
const assert = require('assert');
9+
const path = require('path');
10+
const fs = require('fs');
11+
12+
const tmpdir = require('../common/tmpdir');
13+
14+
tmpdir.refresh();
15+
16+
const testFileName = 'file.txt';
17+
const testFilePath = path.join(tmpdir.path, testFileName);
18+
const ignoredFileName = 'file.log';
19+
const ignoredFilePath = path.join(tmpdir.path, ignoredFileName);
20+
21+
const watcher = fs.watch(tmpdir.path, {
22+
ignore: '*.log',
23+
});
24+
25+
watcher.on('change', common.mustCallAtLeast((event, filename) => {
26+
assert.notStrictEqual(filename, ignoredFileName);
27+
28+
if (filename === testFileName) {
29+
watcher.close();
30+
}
31+
}, 1));
32+
33+
function writeFiles() {
34+
fs.writeFileSync(ignoredFilePath, 'ignored');
35+
fs.writeFileSync(testFilePath, 'content');
36+
}
37+
38+
if (common.isMacOS) {
39+
// Do the write with a delay to ensure that the OS is ready to notify us. See
40+
// https://github.com/nodejs/node/issues/52601.
41+
setTimeout(writeFiles, common.platformTimeout(100));
42+
} else {
43+
writeFiles();
44+
}
Collapse file
+41Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
'use strict';
2+
3+
require('../common');
4+
const { skipIfNoWatch } = require('../common/watch.js');
5+
6+
skipIfNoWatch();
7+
8+
const assert = require('assert');
9+
const fs = require('fs');
10+
11+
assert.throws(
12+
() => fs.watch('.', { ignore: 123 }),
13+
{
14+
code: 'ERR_INVALID_ARG_TYPE',
15+
name: 'TypeError',
16+
}
17+
);
18+
19+
assert.throws(
20+
() => fs.watch('.', { ignore: '' }),
21+
{
22+
code: 'ERR_INVALID_ARG_VALUE',
23+
name: 'TypeError',
24+
}
25+
);
26+
27+
assert.throws(
28+
() => fs.watch('.', { ignore: [123] }),
29+
{
30+
code: 'ERR_INVALID_ARG_TYPE',
31+
name: 'TypeError',
32+
}
33+
);
34+
35+
assert.throws(
36+
() => fs.watch('.', { ignore: [''] }),
37+
{
38+
code: 'ERR_INVALID_ARG_VALUE',
39+
name: 'TypeError',
40+
}
41+
);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.