| 'use strict'; |
| |
| const common = require('../common'); |
| |
| if (!common.isLinux) |
| common.skip('This test can run only on Linux'); |
| |
| // Test that the watcher do not crash if the file "disappears" while |
| // watch is being set up. |
| |
| const path = require('node:path'); |
| const fs = require('node:fs'); |
| const { spawn } = require('node:child_process'); |
| |
| const tmpdir = require('../common/tmpdir'); |
| const testDir = tmpdir.path; |
| tmpdir.refresh(); |
| |
| const watcher = fs.watch(testDir, { recursive: true }); |
| watcher.on('change', function(event, filename) { |
| // This console.log makes the error happen |
| // do not remove |
| console.log(filename, event); |
| }); |
| |
| const testFile = path.join(testDir, 'a'); |
| const child = spawn(process.argv[0], ['-e', `const fs = require('node:fs'); for (let i = 0; i < 10000; i++) { const fd = fs.openSync('${testFile}', 'w'); fs.writeSync(fd, Buffer.from('hello')); fs.rmSync('${testFile}') }`], { |
| stdio: 'inherit' |
| }); |
| |
| child.on('exit', function() { |
| watcher.close(); |
| }); |