UNPKG

2.51 kBJavaScriptView Raw
1'use strict';
2
3var assert = require('assert');
4var vm = require('vm');
5var fs = require('fs');
6var path = require('path');
7var sleep = require('try-thread-sleep');
8
9function testSpawn(spawn) {
10 var result = spawn("node", [__dirname + '/test-spawn.js'], {input: 'my-output'});
11 assert(result.status === 0);
12 assert(Buffer.isBuffer(result.stdout));
13 assert(Buffer.isBuffer(result.stderr));
14 assert(result.stdout.toString() === 'output written');
15 assert(result.stderr.toString() === 'error log exists');
16 assert(fs.readFileSync(__dirname + '/output.txt', 'utf8') === 'my-output');
17 fs.unlinkSync(__dirname + '/output.txt');
18
19 var result = spawn("node", [__dirname + '/test-spawn.js'], {
20 input: 'my-output',
21 encoding: 'utf-8'
22 });
23 assert(result.status === 0);
24 assert(result.stdout === 'output written');
25 assert(result.stderr === 'error log exists');
26 assert.deepEqual(result.output, [null, 'output written', 'error log exists']);
27 assert(fs.readFileSync(__dirname + '/output.txt', 'utf8') === 'my-output');
28 fs.unlinkSync(__dirname + '/output.txt');
29
30 var result = spawn("node", [__dirname + '/test-spawn-fail.js'], {input: 'my-output'});
31 assert(result.status === 13);
32 assert(Buffer.isBuffer(result.stdout));
33 assert(Buffer.isBuffer(result.stderr));
34 assert(result.stdout.toString() === 'output written');
35 assert(result.stderr.toString() === 'error log exists');
36 assert(fs.readFileSync(__dirname + '/output.txt', 'utf8') === 'my-output');
37 fs.unlinkSync(__dirname + '/output.txt');
38
39 var result = spawn("node", [__dirname + '/test-empty.js'], {input: 'my-output'});
40 assert(result.status === 0);
41 assert(Buffer.isBuffer(result.stdout));
42 assert(Buffer.isBuffer(result.stderr));
43 assert(result.stdout.toString() === '');
44 assert(result.stderr.toString() === '');
45
46 // This suprisingly fails for the official API
47 /*
48 var start = Date.now();
49 var result = spawn("node", [__dirname + '/test-spawn-timeout.js'], {timeout: 100});
50 console.dir(result);
51 var end = Date.now();
52 assert((end - start) < 200);
53 */
54
55 console.log('test pass');
56}
57
58if (sleep.native) {
59 console.log('Using native thread-sleep');
60} else {
61 console.log('Using busy waiting');
62}
63if (require('child_process').spawnSync) {
64 console.log('# Test built in node API');
65 testSpawn(require('child_process').spawnSync);
66} else {
67 console.log('# SKIP Test built in node API');
68}
69console.log('# Test fallback operation');
70testSpawn(require('../lib/spawn-sync'));
71
72console.log('All tests passed');