From 0cc1582b9c0fd6b38aed6841729508ffacebccfb Mon Sep 17 00:00:00 2001 From: James Nylen Date: Wed, 14 Jan 2015 11:19:37 -0600 Subject: [PATCH 1/2] Remove circular dependency from debugging code Move the `debug` property from `request` to `request.Request`, and define a property at the old location to pass through to the new location for backwards compatibility. --- index.js | 12 +++++++++++- lib/debug.js | 11 ----------- request.js | 9 ++++++++- tests/test-node-debug.js | 4 ++++ 4 files changed, 23 insertions(+), 13 deletions(-) delete mode 100644 lib/debug.js diff --git a/index.js b/index.js index 99b8386b5..3581b83b4 100755 --- a/index.js +++ b/index.js @@ -172,5 +172,15 @@ request.forever = function (agentOptions, optionsArg) { module.exports = request request.Request = require('./request') -request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) request.initParams = initParams + +// Backwards compatibility for request.debug +Object.defineProperty(request, 'debug', { + enumerable : true, + get : function() { + return request.Request.debug + }, + set : function(debug) { + request.Request.debug = debug + } +}) diff --git a/lib/debug.js b/lib/debug.js deleted file mode 100644 index 25e3dedc7..000000000 --- a/lib/debug.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict' - -var util = require('util') - , request = require('../index') - - -module.exports = function debug() { - if (request.debug) { - console.error('REQUEST %s', util.format.apply(util, arguments)) - } -} diff --git a/request.js b/request.js index 6254aa016..ea887f842 100644 --- a/request.js +++ b/request.js @@ -23,7 +23,6 @@ var http = require('http') , FormData = require('form-data') , cookies = require('./lib/cookies') , copy = require('./lib/copy') - , debug = require('./lib/debug') , net = require('net') , CombinedStream = require('combined-stream') , isstream = require('isstream') @@ -240,6 +239,14 @@ function Request (options) { util.inherits(Request, stream.Stream) +// Debugging +Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) +function debug() { + if (Request.debug) { + console.error('REQUEST %s', util.format.apply(util, arguments)) + } +} + Request.prototype.setupTunnel = function () { // Set up the tunneling agent if necessary // Only send the proxy whitelisted header names. diff --git a/tests/test-node-debug.js b/tests/test-node-debug.js index 9d5a0f6fd..7c6f4962f 100644 --- a/tests/test-node-debug.js +++ b/tests/test-node-debug.js @@ -24,6 +24,8 @@ tape('setup', function(t) { tape('a simple request should not fail with debugging enabled', function(t) { request.debug = true + t.equal(request.Request.debug, true, 'request.debug sets request.Request.debug') + t.equal(request.debug, true, 'request.debug gets request.Request.debug') stderr = [] request('http://localhost:6767', function(err, res, body) { @@ -68,6 +70,8 @@ tape('there should be no further lookups on process.env', function(t) { tape('it should be possible to disable debugging at runtime', function(t) { request.debug = false + t.equal(request.Request.debug, false, 'request.debug sets request.Request.debug') + t.equal(request.debug, false, 'request.debug gets request.Request.debug') stderr = [] request('http://localhost:6767', function(err, res, body) { From e7c77848b5348161fa82c21a1a1ec46becdd5b34 Mon Sep 17 00:00:00 2001 From: James Nylen Date: Wed, 14 Jan 2015 11:24:56 -0600 Subject: [PATCH 2/2] Don't overwrite process.stderr.write without restoring it later This was probably not a very good idea. --- tests/test-node-debug.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/test-node-debug.js b/tests/test-node-debug.js index 7c6f4962f..4d4e5ac0a 100644 --- a/tests/test-node-debug.js +++ b/tests/test-node-debug.js @@ -12,11 +12,12 @@ var s = http.createServer(function(req, res) { var stderr = [] , prevStderrLen = 0 -process.stderr.write = function(string, encoding, fd) { - stderr.push(string) -} - tape('setup', function(t) { + process.stderr._oldWrite = process.stderr.write + process.stderr.write = function(string, encoding, fd) { + stderr.push(string) + } + s.listen(6767, function() { t.end() }) @@ -83,6 +84,9 @@ tape('it should be possible to disable debugging at runtime', function(t) { }) tape('cleanup', function(t) { + process.stderr.write = process.stderr._oldWrite + delete process.stderr._oldWrite + s.close(function() { t.end() })