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:
parent
bcbb9370dd
commit
f897843359
@ -52,10 +52,9 @@ symlinks
|
||||
([SeCreateSymbolicLinkPrivilege](https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx)).
|
||||
On non-Windows platforms, this always returns `true`.
|
||||
|
||||
### ddCommand(filename, kilobytes)
|
||||
* return [<Object>]
|
||||
### ddCommand(filename)
|
||||
|
||||
Platform normalizes the `dd` command
|
||||
Creates a 10 MB file of all null characters.
|
||||
|
||||
### disableCrashOnUnhandledRejection()
|
||||
|
||||
|
@ -28,7 +28,6 @@ const assert = require('assert');
|
||||
const os = require('os');
|
||||
const { exec, execSync, spawnSync } = require('child_process');
|
||||
const util = require('util');
|
||||
const { fixturesDir } = require('./fixtures');
|
||||
const tmpdir = require('./tmpdir');
|
||||
const {
|
||||
bits,
|
||||
@ -174,13 +173,10 @@ function childShouldThrowAndAbort() {
|
||||
});
|
||||
}
|
||||
|
||||
function ddCommand(filename, kilobytes) {
|
||||
if (isWindows) {
|
||||
const p = path.resolve(fixturesDir, 'create-file.js');
|
||||
return `"${process.argv[0]}" "${p}" "${filename}" ${kilobytes * 1024}`;
|
||||
} else {
|
||||
return `dd if=/dev/zero of="${filename}" bs=1024 count=${kilobytes}`;
|
||||
}
|
||||
function ddCommand(filename) {
|
||||
const fd = fs.openSync(filename, 'w');
|
||||
fs.ftruncateSync(fd, 10 * 1024 * 1024);
|
||||
fs.closeSync(fd);
|
||||
}
|
||||
|
||||
|
||||
|
29
test/fixtures/create-file.js
vendored
29
test/fixtures/create-file.js
vendored
@ -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);
|
@ -32,7 +32,7 @@ tmpdir.refresh();
|
||||
const nonexistentFile = fixtures.path('non-existent');
|
||||
const nonexistentDir = fixtures.path('non-existent', 'foo', 'bar');
|
||||
const existingFile = fixtures.path('exit.js');
|
||||
const existingFile2 = fixtures.path('create-file.js');
|
||||
const existingFile2 = fixtures.path('a.js');
|
||||
const existingDir = tmpdir.path;
|
||||
const existingDir2 = fixtures.path('keys');
|
||||
const { COPYFILE_EXCL } = fs.constants;
|
||||
|
@ -63,34 +63,31 @@ function executeRequest(cb) {
|
||||
|
||||
tmpdir.refresh();
|
||||
|
||||
const ddcmd = common.ddCommand(filename, 10240);
|
||||
common.ddCommand(filename);
|
||||
|
||||
cp.exec(ddcmd, function(err, stdout, stderr) {
|
||||
assert.ifError(err);
|
||||
server = http.createServer(function(req, res) {
|
||||
res.writeHead(200);
|
||||
server = http.createServer(function(req, res) {
|
||||
res.writeHead(200);
|
||||
|
||||
// Create the subprocess
|
||||
const cat = cp.spawn('cat', [filename]);
|
||||
|
||||
// Stream the data through to the response as binary chunks
|
||||
cat.stdout.on('data', (data) => {
|
||||
res.write(data);
|
||||
});
|
||||
|
||||
cat.stdout.on('end', () => res.end());
|
||||
|
||||
// End the response on exit (and log errors)
|
||||
cat.on('exit', (code) => {
|
||||
if (code !== 0) {
|
||||
console.error(`subprocess exited with code ${code}`);
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
// Create the subprocess
|
||||
const cat = cp.spawn('cat', [filename]);
|
||||
|
||||
// Stream the data through to the response as binary chunks
|
||||
cat.stdout.on('data', (data) => {
|
||||
res.write(data);
|
||||
});
|
||||
|
||||
server.listen(0, () => {
|
||||
executeRequest(() => server.close());
|
||||
cat.stdout.on('end', () => res.end());
|
||||
|
||||
// End the response on exit (and log errors)
|
||||
cat.on('exit', (code) => {
|
||||
if (code !== 0) {
|
||||
console.error(`subprocess exited with code ${code}`);
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
server.listen(0, () => {
|
||||
executeRequest(() => server.close());
|
||||
});
|
||||
|
@ -25,7 +25,6 @@ const assert = require('assert');
|
||||
const fs = require('fs');
|
||||
const http = require('http');
|
||||
const path = require('path');
|
||||
const cp = require('child_process');
|
||||
|
||||
const tmpdir = require('../common/tmpdir');
|
||||
tmpdir.refresh();
|
||||
@ -57,12 +56,8 @@ const server = http.createServer(function(req, res) {
|
||||
server.listen(0);
|
||||
|
||||
server.on('listening', function() {
|
||||
const cmd = common.ddCommand(filename, 10240);
|
||||
|
||||
cp.exec(cmd, function(err) {
|
||||
assert.ifError(err);
|
||||
makeRequest();
|
||||
});
|
||||
common.ddCommand(filename);
|
||||
makeRequest();
|
||||
});
|
||||
|
||||
function makeRequest() {
|
||||
|
@ -251,7 +251,6 @@ try {
|
||||
|
||||
assert.deepStrictEqual(children, {
|
||||
'common/index.js': {
|
||||
'common/fixtures.js': {},
|
||||
'common/tmpdir.js': {}
|
||||
},
|
||||
'fixtures/not-main-module.js': {},
|
||||
|
Loading…
x
Reference in New Issue
Block a user