mirror of https://github.com/lukechilds/node.git
Browse Source
Tests for child_process.spawn() use new API Test for deprecated child_process.spawn() APIv0.7.4-release
Bert Belder
15 years ago
committed by
Ryan Dahl
8 changed files with 168 additions and 22 deletions
@ -0,0 +1,51 @@ |
|||
common = require("../common"); |
|||
assert = common.assert |
|||
spawn = require('child_process').spawn, |
|||
path = require('path'); |
|||
|
|||
var returns = 0; |
|||
|
|||
/* |
|||
Spawns 'pwd' with given options, then test |
|||
- whether the exit code equals forCode, |
|||
- optionally whether the stdout result (after removing traling whitespace) matches forData |
|||
*/ |
|||
function testCwd(options, forCode, forData) { |
|||
var data = ""; |
|||
|
|||
var child = spawn('pwd', [], options); |
|||
child.stdout.setEncoding('utf8'); |
|||
|
|||
child.stdout.addListener('data', function(chunk) { |
|||
data += chunk; |
|||
}); |
|||
|
|||
child.addListener('exit', function(code, signal) { |
|||
forData && assert.strictEqual(forData, data.replace(/[\s\r\n]+$/, '')) |
|||
assert.strictEqual(forCode, code); |
|||
returns--; |
|||
}); |
|||
|
|||
returns++; |
|||
} |
|||
|
|||
// Assume these exist, and 'pwd' gives us the right directory back
|
|||
testCwd( { cwd: '/bin' }, 0, '/bin' ); |
|||
testCwd( { cwd: '/dev' }, 0, '/dev' ); |
|||
testCwd( { cwd: '/' }, 0, '/' ); |
|||
|
|||
// Assume this doesn't exist, we expect exitcode=127
|
|||
testCwd( { cwd: 'does-not-exist' }, 127 ); |
|||
|
|||
// Spawn() shouldn't try to chdir() so this should just work
|
|||
testCwd( undefined, 0 ); |
|||
testCwd( { }, 0 ); |
|||
testCwd( { cwd: '' }, 0 ); |
|||
testCwd( { cwd: undefined }, 0 ); |
|||
testCwd( { cwd: null }, 0 ); |
|||
|
|||
// Check whether all tests actually returned
|
|||
assert.notEqual(0, returns); |
|||
process.addListener('exit', function () { |
|||
assert.equal(0, returns); |
|||
}); |
@ -0,0 +1,59 @@ |
|||
var common = require("../common"); |
|||
var assert = common.assert; |
|||
var spawn = require('child_process').spawn; |
|||
var path = require('path'); |
|||
var fs = require('fs'); |
|||
var exits = 0; |
|||
|
|||
// Test `env` parameter for child_process.spawn(path, args, env, customFds) deprecated api
|
|||
(function() { |
|||
var response = ""; |
|||
var child = spawn('/usr/bin/env', [], {'HELLO' : 'WORLD'}); |
|||
|
|||
child.stdout.setEncoding('utf8'); |
|||
|
|||
child.stdout.addListener("data", function (chunk) { |
|||
response += chunk; |
|||
}); |
|||
|
|||
process.addListener('exit', function () { |
|||
assert.ok(response.indexOf('HELLO=WORLD') >= 0); |
|||
exits++; |
|||
}); |
|||
})(); |
|||
|
|||
// Test `customFds` parameter for child_process.spawn(path, args, env, customFds) deprecated api
|
|||
(function() { |
|||
var expected = "hello world"; |
|||
var helloPath = path.join(common.fixturesDir, "hello.txt"); |
|||
|
|||
fs.open(helloPath, 'w', 400, function (err, fd) { |
|||
if (err) throw err; |
|||
|
|||
var child = spawn('/bin/echo', [expected], undefined, [-1, fd]); |
|||
|
|||
assert.notEqual(child.stdin, null); |
|||
assert.equal(child.stdout, null); |
|||
assert.notEqual(child.stderr, null); |
|||
|
|||
child.addListener('exit', function (err) { |
|||
if (err) throw err; |
|||
|
|||
fs.close(fd, function (error) { |
|||
if (error) throw error; |
|||
|
|||
fs.readFile(helloPath, function (err, data) { |
|||
if (err) throw err; |
|||
|
|||
assert.equal(data.toString(), expected + "\n"); |
|||
exits++; |
|||
}); |
|||
}); |
|||
}); |
|||
}); |
|||
})(); |
|||
|
|||
// Check if all child processes exited
|
|||
process.addListener('exit', function () { |
|||
assert.equal(2, exits); |
|||
}); |
Loading…
Reference in new issue