From b53b8b8ae7d7e1328319b04b9030a7afb97a7924 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Tue, 12 Jun 2012 19:58:05 +0200 Subject: [PATCH] test-exec: make it work on Windows --- test/pummel/test-exec.js | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/test/pummel/test-exec.js b/test/pummel/test-exec.js index 70771ab4e1..6eacda783c 100644 --- a/test/pummel/test-exec.js +++ b/test/pummel/test-exec.js @@ -22,10 +22,23 @@ var common = require('../common'); var assert = require('assert'); var exec = require('child_process').exec; + +if (process.platform !== 'win32') { + // Unix. + var SLEEP3_COMMAND = "sleep 3"; +} else { + // Windows: `choice` is a command built into cmd.exe. Use another cmd process + // to create a process tree, so we can catch bugs related to it. + var SLEEP3_COMMAND = "cmd /c choice /t 3 /c X /d X"; +} + + var success_count = 0; var error_count = 0; -exec('ls /', function(err, stdout, stderr) { + +exec(process.execPath + ' -p -e process.versions', + function(err, stdout, stderr) { if (err) { error_count++; console.log('error!: ' + err.code); @@ -39,7 +52,7 @@ exec('ls /', function(err, stdout, stderr) { }); -exec('ls /DOES_NOT_EXIST', function(err, stdout, stderr) { +exec('thisisnotavalidcommand', function(err, stdout, stderr) { if (err) { error_count++; assert.equal('', stdout); @@ -59,7 +72,7 @@ exec('ls /DOES_NOT_EXIST', function(err, stdout, stderr) { var sleeperStart = new Date(); -exec('sleep 3', { timeout: 50 }, function(err, stdout, stderr) { +exec(SLEEP3_COMMAND, { timeout: 50 }, function(err, stdout, stderr) { var diff = (new Date()) - sleeperStart; console.log('\'sleep 3\' with timeout 50 took %d ms', diff); assert.ok(diff < 500); @@ -72,7 +85,7 @@ exec('sleep 3', { timeout: 50 }, function(err, stdout, stderr) { var startSleep3 = new Date(); -var killMeTwice = exec('sleep 3', {timeout: 1000}, killMeTwiceCallback); +var killMeTwice = exec(SLEEP3_COMMAND, {timeout: 1000}, killMeTwiceCallback); process.nextTick(function() { console.log('kill pid %d', killMeTwice.pid); @@ -85,9 +98,8 @@ process.nextTick(function() { function killMeTwiceCallback(err, stdout, stderr) { var diff = (new Date()) - startSleep3; - // We should have already killed this process. Assert that - // the timeout still works and that we are getting the proper callback - // parameters. + // We should have already killed this process. Assert that the timeout still + // works and that we are getting the proper callback parameters. assert.ok(err); assert.ok(err.killed); assert.equal(err.signal, 'SIGTERM'); @@ -98,13 +110,13 @@ function killMeTwiceCallback(err, stdout, stderr) { } - exec('python -c "print 200000*\'C\'"', {maxBuffer: 1000}, function(err, stdout, stderr) { assert.ok(err); assert.ok(/maxBuffer/.test(err.message)); }); + process.on('exit', function() { assert.equal(1, success_count); assert.equal(1, error_count);