|
1 | 1 | 'use strict';
|
2 |
| -var common = require('../common'); |
3 |
| -var assert = require('assert'); |
4 |
| -var spawn = require('child_process').spawn; |
5 |
| -var fs = require('fs'); |
| 2 | +const common = require('../common'); |
| 3 | +const assert = require('assert'); |
| 4 | +const child_process = require('child_process'); |
| 5 | +const fs = require('fs'); |
6 | 6 |
|
7 | 7 | if (common.isWindows) {
|
8 | 8 | console.log('1..0 # Skipped: no RLIMIT_NOFILE on Windows');
|
9 | 9 | return;
|
10 | 10 | }
|
11 | 11 |
|
12 |
| -var openFds = []; |
| 12 | +const ulimit = Number(child_process.execSync('ulimit -Hn')); |
| 13 | +if (ulimit > 64 || Number.isNaN(ulimit)) { |
| 14 | + // Sorry about this nonsense. It can be replaced if |
| 15 | + // https://github.com/nodejs/node-v0.x-archive/pull/2143#issuecomment-2847886 |
| 16 | + // ever happens. |
| 17 | + const result = child_process.spawnSync( |
| 18 | + '/bin/sh', |
| 19 | + ['-c', `ulimit -n 64 && '${process.execPath}' '${__filename}'`] |
| 20 | + ); |
| 21 | + assert.strictEqual(result.stdout.toString(), ''); |
| 22 | + assert.strictEqual(result.stderr.toString(), ''); |
| 23 | + assert.strictEqual(result.status, 0); |
| 24 | + assert.strictEqual(result.error, undefined); |
| 25 | + return; |
| 26 | +} |
| 27 | + |
| 28 | +const openFds = []; |
13 | 29 |
|
14 | 30 | for (;;) {
|
15 | 31 | try {
|
16 | 32 | openFds.push(fs.openSync(__filename, 'r'));
|
17 | 33 | } catch (err) {
|
18 |
| - assert(err.code === 'EMFILE' || err.code === 'ENFILE'); |
| 34 | + assert(err.code === 'EMFILE'); |
19 | 35 | break;
|
20 | 36 | }
|
21 | 37 | }
|
22 | 38 |
|
23 | 39 | // Should emit an error, not throw.
|
24 |
| -var proc = spawn(process.execPath, ['-e', '0']); |
| 40 | +const proc = child_process.spawn(process.execPath, ['-e', '0']); |
25 | 41 |
|
26 | 42 | proc.on('error', common.mustCall(function(err) {
|
27 |
| - assert(err.code === 'EMFILE' || err.code === 'ENFILE'); |
| 43 | + assert.strictEqual(err.code, 'EMFILE'); |
28 | 44 | }));
|
29 | 45 |
|
30 | 46 | proc.on('exit', function() {
|
|
0 commit comments