test: refactor common.ddCommand()

* Remove different paths for Windows and POSIX.
* Remove fixtures file. Simply run the command immediately/directly.
* Since it is never called with more than one value for kilobytes,
  eliminate that argument.
* Update/simplify tests that use this function. (They no longer need to
  use child_process to run the command.)
* Update documentation.

PR-URL: https://github.com/nodejs/node/pull/23411
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: George Adams <george.adams@uk.ibm.com>
This commit is contained in:
Rich Trott 2018-10-10 11:24:51 -07:00
parent bcbb9370dd
commit f897843359
7 changed files with 30 additions and 73 deletions

View File

@ -52,10 +52,9 @@ symlinks
([SeCreateSymbolicLinkPrivilege](https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx)). ([SeCreateSymbolicLinkPrivilege](https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx)).
On non-Windows platforms, this always returns `true`. On non-Windows platforms, this always returns `true`.
### ddCommand(filename, kilobytes) ### ddCommand(filename)
* return [&lt;Object>]
Platform normalizes the `dd` command Creates a 10 MB file of all null characters.
### disableCrashOnUnhandledRejection() ### disableCrashOnUnhandledRejection()

View File

@ -28,7 +28,6 @@ const assert = require('assert');
const os = require('os'); const os = require('os');
const { exec, execSync, spawnSync } = require('child_process'); const { exec, execSync, spawnSync } = require('child_process');
const util = require('util'); const util = require('util');
const { fixturesDir } = require('./fixtures');
const tmpdir = require('./tmpdir'); const tmpdir = require('./tmpdir');
const { const {
bits, bits,
@ -174,13 +173,10 @@ function childShouldThrowAndAbort() {
}); });
} }
function ddCommand(filename, kilobytes) { function ddCommand(filename) {
if (isWindows) { const fd = fs.openSync(filename, 'w');
const p = path.resolve(fixturesDir, 'create-file.js'); fs.ftruncateSync(fd, 10 * 1024 * 1024);
return `"${process.argv[0]}" "${p}" "${filename}" ${kilobytes * 1024}`; fs.closeSync(fd);
} else {
return `dd if=/dev/zero of="${filename}" bs=1024 count=${kilobytes}`;
}
} }

View File

@ -1,29 +0,0 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
const fs = require('fs');
var file_name = process.argv[2];
var file_size = parseInt(process.argv[3]);
var fd = fs.openSync(file_name, 'w');
fs.ftruncateSync(fd, file_size);
fs.closeSync(fd);

View File

@ -32,7 +32,7 @@ tmpdir.refresh();
const nonexistentFile = fixtures.path('non-existent'); const nonexistentFile = fixtures.path('non-existent');
const nonexistentDir = fixtures.path('non-existent', 'foo', 'bar'); const nonexistentDir = fixtures.path('non-existent', 'foo', 'bar');
const existingFile = fixtures.path('exit.js'); const existingFile = fixtures.path('exit.js');
const existingFile2 = fixtures.path('create-file.js'); const existingFile2 = fixtures.path('a.js');
const existingDir = tmpdir.path; const existingDir = tmpdir.path;
const existingDir2 = fixtures.path('keys'); const existingDir2 = fixtures.path('keys');
const { COPYFILE_EXCL } = fs.constants; const { COPYFILE_EXCL } = fs.constants;

View File

@ -63,11 +63,9 @@ function executeRequest(cb) {
tmpdir.refresh(); tmpdir.refresh();
const ddcmd = common.ddCommand(filename, 10240); common.ddCommand(filename);
cp.exec(ddcmd, function(err, stdout, stderr) { server = http.createServer(function(req, res) {
assert.ifError(err);
server = http.createServer(function(req, res) {
res.writeHead(200); res.writeHead(200);
// Create the subprocess // Create the subprocess
@ -88,9 +86,8 @@ cp.exec(ddcmd, function(err, stdout, stderr) {
} }
}); });
}); });
server.listen(0, () => { server.listen(0, () => {
executeRequest(() => server.close()); executeRequest(() => server.close());
});
}); });

View File

@ -25,7 +25,6 @@ const assert = require('assert');
const fs = require('fs'); const fs = require('fs');
const http = require('http'); const http = require('http');
const path = require('path'); const path = require('path');
const cp = require('child_process');
const tmpdir = require('../common/tmpdir'); const tmpdir = require('../common/tmpdir');
tmpdir.refresh(); tmpdir.refresh();
@ -57,12 +56,8 @@ const server = http.createServer(function(req, res) {
server.listen(0); server.listen(0);
server.on('listening', function() { server.on('listening', function() {
const cmd = common.ddCommand(filename, 10240); common.ddCommand(filename);
cp.exec(cmd, function(err) {
assert.ifError(err);
makeRequest(); makeRequest();
});
}); });
function makeRequest() { function makeRequest() {

View File

@ -251,7 +251,6 @@ try {
assert.deepStrictEqual(children, { assert.deepStrictEqual(children, {
'common/index.js': { 'common/index.js': {
'common/fixtures.js': {},
'common/tmpdir.js': {} 'common/tmpdir.js': {}
}, },
'fixtures/not-main-module.js': {}, 'fixtures/not-main-module.js': {},