Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
test: use assert.throw to test exceptions
Browse files Browse the repository at this point in the history
The test wasn't checking directly that an assertion was thrown. Instead,
it was checking that spawn did not sucessfully spawn a non-existent
command.

However, the command chosen, dir, exists in GNU coreutils, so it exists
on Linux (though not on BSD derived OS X). The test as written passed on
Linux, even with the TypeError it is supposed to be checking for deleted
from spawn(). It would also pass on Windows if a ls.exe existed.

The approach is unnecessarily obscure, assert.throw() is for asserting
code throws, using it is more clear and works regardless of what
commands do or do not exist.

PR-URL: #8454
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
  • Loading branch information
sam-github authored and trevnorris committed Nov 19, 2014
1 parent 13a992b commit 2ff29cc
Showing 1 changed file with 8 additions and 20 deletions.
28 changes: 8 additions & 20 deletions test/simple/test-child-process-spawn-typeerror.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,30 +19,18 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

var spawn = require('child_process').spawn,
assert = require('assert'),
windows = (process.platform === 'win32'),
cmd = (windows) ? 'dir' : 'ls',
invalidcmd = (windows) ? 'ls' : 'dir',
errors = 0;
var assert = require('assert');
var child_process = require('child_process');
var spawn = child_process.spawn;
var cmd = (process.platform === 'win32') ? 'dir' : 'ls';

try {
// Ensure this throws a TypeError
var child = spawn(invalidcmd, 'this is not an array');

child.on('error', function (err) {
errors++;
});

} catch (e) {
assert.equal(e instanceof TypeError, true);
}
// verify that args argument must be an array
assert.throws(function() {
spawn(cmd, 'this is not an array');
}, TypeError);

// verify that args argument is optional
assert.doesNotThrow(function() {
spawn(cmd, {});
});

process.on('exit', function() {
assert.equal(errors, 0);
});

0 comments on commit 2ff29cc

Please sign in to comment.