node-pty 0.11.0-beta28 → 0.11.0-beta29
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.
- package/lib/unixTerminal.test.js +64 -0
- package/lib/unixTerminal.test.js.map +1 -1
- package/package.json +1 -1
- package/src/unix/pty.cc +33 -33
- package/src/unixTerminal.test.ts +78 -0
package/lib/unixTerminal.test.js
CHANGED
|
@@ -9,6 +9,7 @@ var assert = require("assert");
|
|
|
9
9
|
var cp = require("child_process");
|
|
10
10
|
var path = require("path");
|
|
11
11
|
var tty = require("tty");
|
|
12
|
+
var fs = require("fs");
|
|
12
13
|
var os_1 = require("os");
|
|
13
14
|
var testUtils_test_1 = require("./testUtils.test");
|
|
14
15
|
var FIXTURES_PATH = path.normalize(path.join(__dirname, '..', 'fixtures', 'utf8-character.txt'));
|
|
@@ -240,6 +241,69 @@ if (process.platform !== 'win32') {
|
|
|
240
241
|
done();
|
|
241
242
|
}
|
|
242
243
|
});
|
|
244
|
+
if (process.platform === 'linux') {
|
|
245
|
+
it('should not close on exec when closeFDs is not defined', function (done) {
|
|
246
|
+
var data = "\n var pty = require('./lib/index');\n var ptyProcess = pty.spawn('node', ['-e', 'setTimeout(() => console.log(\"hello from terminal\"), 300);']);\n ptyProcess.on('data', function (data) {\n console.log(data);\n });\n setTimeout(() => null, 500);\n console.log('ready', ptyProcess.pid);\n ";
|
|
247
|
+
var buffer = [];
|
|
248
|
+
var readFd = fs.openSync(FIXTURES_PATH, 'r');
|
|
249
|
+
var p = cp.spawn('node', ['-e', data], {
|
|
250
|
+
stdio: ['ignore', 'pipe', 'pipe', readFd]
|
|
251
|
+
});
|
|
252
|
+
var sub = '';
|
|
253
|
+
p.stdout.on('data', function (data) {
|
|
254
|
+
if (!data.toString().indexOf('ready')) {
|
|
255
|
+
sub = data.toString().split(' ')[1].slice(0, -1);
|
|
256
|
+
try {
|
|
257
|
+
fs.statSync("/proc/" + sub + "/fd/" + readFd);
|
|
258
|
+
}
|
|
259
|
+
catch (_) {
|
|
260
|
+
done('not reachable');
|
|
261
|
+
}
|
|
262
|
+
setTimeout(function () {
|
|
263
|
+
process.kill(parseInt(sub), 'SIGINT'); // SIGINT to child
|
|
264
|
+
p.kill('SIGINT'); // SIGINT to parent
|
|
265
|
+
}, 200);
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
buffer.push(data.toString().replace(/^\s+|\s+$/g, ''));
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
p.on('close', function () {
|
|
272
|
+
done();
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
it('should close on exec when closeFDs is true', function (done) {
|
|
276
|
+
var data = "\n var pty = require('./lib/index');\n var ptyProcess = pty.spawn('node', ['-e', 'setTimeout(() => console.log(\"hello from terminal\"), 300);'], {\n closeFDs: true\n });\n ptyProcess.on('data', function (data) {\n console.log(data);\n });\n setTimeout(() => null, 500);\n console.log('ready', ptyProcess.pid);\n ";
|
|
277
|
+
var buffer = [];
|
|
278
|
+
var readFd = fs.openSync(FIXTURES_PATH, 'r');
|
|
279
|
+
var p = cp.spawn('node', ['-e', data], {
|
|
280
|
+
stdio: ['ignore', 'pipe', 'pipe', readFd]
|
|
281
|
+
});
|
|
282
|
+
var sub = '';
|
|
283
|
+
p.stdout.on('data', function (data) {
|
|
284
|
+
if (!data.toString().indexOf('ready')) {
|
|
285
|
+
sub = data.toString().split(' ')[1].slice(0, -1);
|
|
286
|
+
try {
|
|
287
|
+
fs.statSync("/proc/" + sub + "/fd/" + readFd);
|
|
288
|
+
done('not reachable');
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
assert.notStrictEqual(error.message.indexOf('ENOENT'), -1);
|
|
292
|
+
}
|
|
293
|
+
setTimeout(function () {
|
|
294
|
+
process.kill(parseInt(sub), 'SIGINT'); // SIGINT to child
|
|
295
|
+
p.kill('SIGINT'); // SIGINT to parent
|
|
296
|
+
}, 200);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
buffer.push(data.toString().replace(/^\s+|\s+$/g, ''));
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
p.on('close', function () {
|
|
303
|
+
done();
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
}
|
|
243
307
|
});
|
|
244
308
|
});
|
|
245
309
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unixTerminal.test.js","sourceRoot":"","sources":["../src/unixTerminal.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unixTerminal.test.js","sourceRoot":"","sources":["../src/unixTerminal.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/unix/pty.cc
CHANGED
|
@@ -151,12 +151,15 @@ NAN_METHOD(PtyFork) {
|
|
|
151
151
|
!info[10]->IsFunction() ||
|
|
152
152
|
!info[11]->IsString()) {
|
|
153
153
|
return Nan::ThrowError(
|
|
154
|
-
"Usage: pty.fork(file, args, env, cwd, cols, rows, uid, gid,
|
|
154
|
+
"Usage: pty.fork(file, args, env, cwd, cols, rows, uid, gid, utf8, closeFDs, onexit, helperPath)");
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
// file
|
|
158
158
|
Nan::Utf8String file(info[0]);
|
|
159
159
|
|
|
160
|
+
// args
|
|
161
|
+
v8::Local<v8::Array> argv_ = v8::Local<v8::Array>::Cast(info[1]);
|
|
162
|
+
|
|
160
163
|
// env
|
|
161
164
|
v8::Local<v8::Array> env_ = v8::Local<v8::Array>::Cast(info[2]);
|
|
162
165
|
int envc = env_->Length();
|
|
@@ -170,37 +173,6 @@ NAN_METHOD(PtyFork) {
|
|
|
170
173
|
// cwd
|
|
171
174
|
Nan::Utf8String cwd_(info[3]);
|
|
172
175
|
|
|
173
|
-
// uid / gid
|
|
174
|
-
int uid = info[6]->IntegerValue(Nan::GetCurrentContext()).FromJust();
|
|
175
|
-
int gid = info[7]->IntegerValue(Nan::GetCurrentContext()).FromJust();
|
|
176
|
-
|
|
177
|
-
// closeFDs
|
|
178
|
-
bool closeFDs = Nan::To<bool>(info[8]).FromJust();
|
|
179
|
-
bool explicitlyCloseFDs = closeFDs && !HAVE_POSIX_SPAWN_CLOEXEC_DEFAULT;
|
|
180
|
-
|
|
181
|
-
// helperPath
|
|
182
|
-
Nan::Utf8String helper_path_(info[11]);
|
|
183
|
-
char *helper_path = strdup(*helper_path_);
|
|
184
|
-
|
|
185
|
-
// args
|
|
186
|
-
v8::Local<v8::Array> argv_ = v8::Local<v8::Array>::Cast(info[1]);
|
|
187
|
-
|
|
188
|
-
const int EXTRA_ARGS = 6;
|
|
189
|
-
int argc = argv_->Length();
|
|
190
|
-
int argl = argc + EXTRA_ARGS + 1;
|
|
191
|
-
char **argv = new char*[argl];
|
|
192
|
-
argv[0] = strdup(helper_path);
|
|
193
|
-
argv[1] = strdup(*cwd_);
|
|
194
|
-
argv[2] = strdup(std::to_string(uid).c_str());
|
|
195
|
-
argv[3] = strdup(std::to_string(gid).c_str());
|
|
196
|
-
argv[4] = strdup(explicitlyCloseFDs ? "1": "0");
|
|
197
|
-
argv[5] = strdup(*file);
|
|
198
|
-
argv[argl - 1] = NULL;
|
|
199
|
-
for (int i = 0; i < argc; i++) {
|
|
200
|
-
Nan::Utf8String arg(Nan::Get(argv_, i).ToLocalChecked());
|
|
201
|
-
argv[i + EXTRA_ARGS] = strdup(*arg);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
176
|
// size
|
|
205
177
|
struct winsize winp;
|
|
206
178
|
winp.ws_col = info[4]->IntegerValue(Nan::GetCurrentContext()).FromJust();
|
|
@@ -208,11 +180,15 @@ NAN_METHOD(PtyFork) {
|
|
|
208
180
|
winp.ws_xpixel = 0;
|
|
209
181
|
winp.ws_ypixel = 0;
|
|
210
182
|
|
|
183
|
+
// uid / gid
|
|
184
|
+
int uid = info[6]->IntegerValue(Nan::GetCurrentContext()).FromJust();
|
|
185
|
+
int gid = info[7]->IntegerValue(Nan::GetCurrentContext()).FromJust();
|
|
186
|
+
|
|
211
187
|
// termios
|
|
212
188
|
struct termios t = termios();
|
|
213
189
|
struct termios *term = &t;
|
|
214
190
|
term->c_iflag = ICRNL | IXON | IXANY | IMAXBEL | BRKINT;
|
|
215
|
-
if (Nan::To<bool>(info[
|
|
191
|
+
if (Nan::To<bool>(info[8]).FromJust()) {
|
|
216
192
|
#if defined(IUTF8)
|
|
217
193
|
term->c_iflag |= IUTF8;
|
|
218
194
|
#endif
|
|
@@ -243,6 +219,30 @@ NAN_METHOD(PtyFork) {
|
|
|
243
219
|
term->c_cc[VSTATUS] = 20;
|
|
244
220
|
#endif
|
|
245
221
|
|
|
222
|
+
// closeFDs
|
|
223
|
+
bool closeFDs = Nan::To<bool>(info[9]).FromJust();
|
|
224
|
+
bool explicitlyCloseFDs = closeFDs && !HAVE_POSIX_SPAWN_CLOEXEC_DEFAULT;
|
|
225
|
+
|
|
226
|
+
// helperPath
|
|
227
|
+
Nan::Utf8String helper_path_(info[11]);
|
|
228
|
+
char *helper_path = strdup(*helper_path_);
|
|
229
|
+
|
|
230
|
+
const int EXTRA_ARGS = 6;
|
|
231
|
+
int argc = argv_->Length();
|
|
232
|
+
int argl = argc + EXTRA_ARGS + 1;
|
|
233
|
+
char **argv = new char*[argl];
|
|
234
|
+
argv[0] = strdup(helper_path);
|
|
235
|
+
argv[1] = strdup(*cwd_);
|
|
236
|
+
argv[2] = strdup(std::to_string(uid).c_str());
|
|
237
|
+
argv[3] = strdup(std::to_string(gid).c_str());
|
|
238
|
+
argv[4] = strdup(explicitlyCloseFDs ? "1": "0");
|
|
239
|
+
argv[5] = strdup(*file);
|
|
240
|
+
argv[argl - 1] = NULL;
|
|
241
|
+
for (int i = 0; i < argc; i++) {
|
|
242
|
+
Nan::Utf8String arg(Nan::Get(argv_, i).ToLocalChecked());
|
|
243
|
+
argv[i + EXTRA_ARGS] = strdup(*arg);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
246
|
cfsetispeed(term, B38400);
|
|
247
247
|
cfsetospeed(term, B38400);
|
|
248
248
|
|
package/src/unixTerminal.test.ts
CHANGED
|
@@ -8,6 +8,7 @@ import * as assert from 'assert';
|
|
|
8
8
|
import * as cp from 'child_process';
|
|
9
9
|
import * as path from 'path';
|
|
10
10
|
import * as tty from 'tty';
|
|
11
|
+
import * as fs from 'fs';
|
|
11
12
|
import { constants } from 'os';
|
|
12
13
|
import { pollUntil } from './testUtils.test';
|
|
13
14
|
|
|
@@ -280,6 +281,83 @@ if (process.platform !== 'win32') {
|
|
|
280
281
|
done();
|
|
281
282
|
}
|
|
282
283
|
});
|
|
284
|
+
if (process.platform === 'linux') {
|
|
285
|
+
it('should not close on exec when closeFDs is not defined', (done) => {
|
|
286
|
+
const data = `
|
|
287
|
+
var pty = require('./lib/index');
|
|
288
|
+
var ptyProcess = pty.spawn('node', ['-e', 'setTimeout(() => console.log("hello from terminal"), 300);']);
|
|
289
|
+
ptyProcess.on('data', function (data) {
|
|
290
|
+
console.log(data);
|
|
291
|
+
});
|
|
292
|
+
setTimeout(() => null, 500);
|
|
293
|
+
console.log('ready', ptyProcess.pid);
|
|
294
|
+
`;
|
|
295
|
+
const buffer: string[] = [];
|
|
296
|
+
const readFd = fs.openSync(FIXTURES_PATH, 'r');
|
|
297
|
+
const p = cp.spawn('node', ['-e', data], {
|
|
298
|
+
stdio: ['ignore', 'pipe', 'pipe', readFd]
|
|
299
|
+
});
|
|
300
|
+
let sub = '';
|
|
301
|
+
p.stdout!.on('data', (data) => {
|
|
302
|
+
if (!data.toString().indexOf('ready')) {
|
|
303
|
+
sub = data.toString().split(' ')[1].slice(0, -1);
|
|
304
|
+
try {
|
|
305
|
+
fs.statSync(`/proc/${sub}/fd/${readFd}`);
|
|
306
|
+
} catch (_) {
|
|
307
|
+
done('not reachable');
|
|
308
|
+
}
|
|
309
|
+
setTimeout(() => {
|
|
310
|
+
process.kill(parseInt(sub), 'SIGINT'); // SIGINT to child
|
|
311
|
+
p.kill('SIGINT'); // SIGINT to parent
|
|
312
|
+
}, 200);
|
|
313
|
+
} else {
|
|
314
|
+
buffer.push(data.toString().replace(/^\s+|\s+$/g, ''));
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
p.on('close', () => {
|
|
318
|
+
done();
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
it('should close on exec when closeFDs is true', (done) => {
|
|
322
|
+
const data = `
|
|
323
|
+
var pty = require('./lib/index');
|
|
324
|
+
var ptyProcess = pty.spawn('node', ['-e', 'setTimeout(() => console.log("hello from terminal"), 300);'], {
|
|
325
|
+
closeFDs: true
|
|
326
|
+
});
|
|
327
|
+
ptyProcess.on('data', function (data) {
|
|
328
|
+
console.log(data);
|
|
329
|
+
});
|
|
330
|
+
setTimeout(() => null, 500);
|
|
331
|
+
console.log('ready', ptyProcess.pid);
|
|
332
|
+
`;
|
|
333
|
+
const buffer: string[] = [];
|
|
334
|
+
const readFd = fs.openSync(FIXTURES_PATH, 'r');
|
|
335
|
+
const p = cp.spawn('node', ['-e', data], {
|
|
336
|
+
stdio: ['ignore', 'pipe', 'pipe', readFd]
|
|
337
|
+
});
|
|
338
|
+
let sub = '';
|
|
339
|
+
p.stdout!.on('data', (data) => {
|
|
340
|
+
if (!data.toString().indexOf('ready')) {
|
|
341
|
+
sub = data.toString().split(' ')[1].slice(0, -1);
|
|
342
|
+
try {
|
|
343
|
+
fs.statSync(`/proc/${sub}/fd/${readFd}`);
|
|
344
|
+
done('not reachable');
|
|
345
|
+
} catch (error) {
|
|
346
|
+
assert.notStrictEqual(error.message.indexOf('ENOENT'), -1);
|
|
347
|
+
}
|
|
348
|
+
setTimeout(() => {
|
|
349
|
+
process.kill(parseInt(sub), 'SIGINT'); // SIGINT to child
|
|
350
|
+
p.kill('SIGINT'); // SIGINT to parent
|
|
351
|
+
}, 200);
|
|
352
|
+
} else {
|
|
353
|
+
buffer.push(data.toString().replace(/^\s+|\s+$/g, ''));
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
p.on('close', () => {
|
|
357
|
+
done();
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
}
|
|
283
361
|
});
|
|
284
362
|
});
|
|
285
363
|
}
|