Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bump request to 2.87.0 #1492

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -29,7 +29,7 @@
"nopt": "2 || 3",
"npmlog": "0 || 1 || 2 || 3 || 4",
"osenv": "0",
"request": ">=2.9.0 <2.82.0",
"request": "^2.87.0",
"rimraf": "2",
"semver": "~5.3.0",
"tar": "^2.0.0",
Expand Down
141 changes: 141 additions & 0 deletions test/processExecSync.js
@@ -0,0 +1,141 @@
var fs = require('graceful-fs')
var child_process = require('child_process')
var exec = child_process.exec

if (!String.prototype.startsWith) {
String.prototype.startsWith = function(search, pos) {
return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
};
}

function processExecSync(file, args, options) {
var child, error, timeout, tmpdir, command, quote;
command = makeCommand(file, args);

/*
this function emulates child_process.execSync for legacy node <= 0.10.x
derived from https://github.com/gvarsanyi/sync-exec/blob/master/js/sync-exec.js
*/

options = options || {};
// init timeout
timeout = Date.now() + options.timeout;
// init tmpdir
var os_temp_base = "/tmp";
var os = determine_os();
os_temp_base = "/tmp"

if(process.env.TMP){
os_temp_base = process.env.TMP;
}

if(os_temp_base[os_temp_base.length - 1] !== "/"){
os_temp_base += "/";
}

tmpdir = os_temp_base+'processExecSync.' + Date.now() + Math.random();
fs.mkdirSync(tmpdir);

// init command
if(os === "linux"){
command = '(' + command + ' > ' + tmpdir + '/stdout 2> ' + tmpdir +
'/stderr); echo $? > ' + tmpdir + '/status';
}else{
command = '(' + command + ' > ' + tmpdir + '/stdout 2> ' + tmpdir +
'/stderr) | echo %errorlevel% > ' + tmpdir + '/status | exit';
}

// init child
child = exec(command, options, function () {
return;
});

var maxTry = 100000; // increases the test time by 6 seconds on win-2016-node-0.10
var tryCount = 0;
while (tryCount < maxTry) {
try {
var x = fs.readFileSync(tmpdir + '/status');
if(x.toString() === "0"){
break;
}
} catch (ignore) {
}
tryCount++;
if (Date.now() > timeout) {
error = child;
break;
}
}

['stdout', 'stderr', 'status'].forEach(function (file) {
child[file] = fs.readFileSync(tmpdir + '/' + file, options.encoding);
setTimeout(unlinkFile, 500, tmpdir + '/' + file);
});

child.status = Number(child.status);
if (child.status !== 0) {
error = child;
}

try {
fs.rmdirSync(tmpdir);
} catch (ignore) {
}
if (error) {
throw error;
}
return child.stdout;
}

module.exports = processExecSync;

function makeCommand(file, args){
var command, quote;
command = file
if(args.length > 0){
for(var i in args){
command = command + " ";
if(args[i][0] === "-"){
command = command + args[i];
}else{
if(!quote){
command = command + "\"";
quote = true;
}
command = command + args[i];
if(quote){
if(args.length === (parseInt(i) + 1)){
command = command + "\"";
}
}
}
}
}
return command;
}

function determine_os(){
var os = "";
var tmpVar = "";
if(process.env.OSTYPE){
tmpVar = process.env.OSTYPE;
}else if(process.env.OS){
tmpVar = process.env.OS;
}else{
//default is linux
tmpVar = "linux";
}

if(tmpVar.startsWith("linux")){
os = "linux"
}
if(tmpVar.startsWith("win")){
os = "win"
}

return os;
}

function unlinkFile(file){
fs.unlinkSync(file);
}
2 changes: 1 addition & 1 deletion test/test-addon.js
Expand Up @@ -6,7 +6,7 @@ var fs = require('graceful-fs')
var child_process = require('child_process')
var addonPath = path.resolve(__dirname, 'node_modules', 'hello_world')
var nodeGyp = path.resolve(__dirname, '..', 'bin', 'node-gyp.js')
var execFileSync = child_process.execFileSync
var execFileSync = child_process.execFileSync || require('./processExecSync')
var execFile = child_process.execFile

function runHello() {
Expand Down