Loading lib/rp.js +22 −3 Original line number Diff line number Diff line 'use strict'; var request = require('request'), Bluebird = require('bluebird'), var Bluebird = require('bluebird'), _ = require('lodash'); Loading @@ -9,7 +8,27 @@ Bluebird.onPossiblyUnhandledRejection(function (err) { // FIXME: Only ignore them if the user did not invoke 'then' yet. }); // FIXME: A require('request') by the user will also return Request-Promise. A seperate Request instance is required. // Load Request freshly - so that users can require an unaltered request instance! var request = (function () { function clearCache() { _(require.cache).keys().forEach(function (key) { delete require.cache[key]; }); } var temp = _.assign({}, require.cache); clearCache(); var freshRequest = require('request'); clearCache(); _.assign(require.cache, temp); return freshRequest; })(); function ownCallback(err, httpResponse, body) { Loading test/fixtures/require/afterwards.js 0 → 100644 +9 −0 Original line number Diff line number Diff line 'use strict'; var rp = require('../../../lib/rp.js'); var request = require('request'); var rpHasThen = rp('http://localhost:4000/200').then !== undefined; var requestHasNoThen = request('http://localhost:4000/200').then === undefined; console.log('rp: ' + rpHasThen + ', request: ' + requestHasNoThen); test/fixtures/require/beforehand.js 0 → 100644 +9 −0 Original line number Diff line number Diff line 'use strict'; var request = require('request'); var rp = require('../../../lib/rp.js'); var requestHasNoThen = request('http://localhost:4000/200').then === undefined; var rpHasThen = rp('http://localhost:4000/200').then !== undefined; console.log('request: ' + requestHasNoThen + ', rp: ' + rpHasThen); test/fixtures/require/beforehandAndAfterwards.js 0 → 100644 +11 −0 Original line number Diff line number Diff line 'use strict'; var request1 = require('request'); var rp = require('../../../lib/rp.js'); var request2 = require('request'); var request1HasNoThen = request1('http://localhost:4000/200').then === undefined; var rpHasThen = rp('http://localhost:4000/200').then !== undefined; var request2IsIdenticalToRequest1 = request2 === request1; console.log('request1: ' + request1HasNoThen + ', rp: ' + rpHasThen + ', request2: ' + request2IsIdenticalToRequest1); test/spec/request-test.js +33 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ var rp = require('../../lib/rp.js'); var http = require('http'); var url = require('url'); var Bluebird = require('bluebird'); var childProcess = require('child_process'); var path = require('path'); describe('Request-Promise', function () { Loading Loading @@ -608,4 +610,35 @@ describe('Request-Promise', function () { }); describe('should still allow to require Request independently', function (done) { it('by not interfering with Request required afterwards', function (done) { childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/afterwards.js'), function (err, stdout, stderr) { expect(stdout).to.contain('rp: true, request: true'); done(); }); }); it('by not interfering with Request required beforehand', function (done) { childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/beforehand.js'), function (err, stdout, stderr) { expect(stdout).to.contain('request: true, rp: true'); done(); }); }); it('by not interfering with Request required beforehand and afterwards being identical', function (done) { childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/beforehandAndAfterwards.js'), function (err, stdout, stderr) { expect(stdout).to.contain('request1: true, rp: true, request2: true'); done(); }); }); }); }); Loading
lib/rp.js +22 −3 Original line number Diff line number Diff line 'use strict'; var request = require('request'), Bluebird = require('bluebird'), var Bluebird = require('bluebird'), _ = require('lodash'); Loading @@ -9,7 +8,27 @@ Bluebird.onPossiblyUnhandledRejection(function (err) { // FIXME: Only ignore them if the user did not invoke 'then' yet. }); // FIXME: A require('request') by the user will also return Request-Promise. A seperate Request instance is required. // Load Request freshly - so that users can require an unaltered request instance! var request = (function () { function clearCache() { _(require.cache).keys().forEach(function (key) { delete require.cache[key]; }); } var temp = _.assign({}, require.cache); clearCache(); var freshRequest = require('request'); clearCache(); _.assign(require.cache, temp); return freshRequest; })(); function ownCallback(err, httpResponse, body) { Loading
test/fixtures/require/afterwards.js 0 → 100644 +9 −0 Original line number Diff line number Diff line 'use strict'; var rp = require('../../../lib/rp.js'); var request = require('request'); var rpHasThen = rp('http://localhost:4000/200').then !== undefined; var requestHasNoThen = request('http://localhost:4000/200').then === undefined; console.log('rp: ' + rpHasThen + ', request: ' + requestHasNoThen);
test/fixtures/require/beforehand.js 0 → 100644 +9 −0 Original line number Diff line number Diff line 'use strict'; var request = require('request'); var rp = require('../../../lib/rp.js'); var requestHasNoThen = request('http://localhost:4000/200').then === undefined; var rpHasThen = rp('http://localhost:4000/200').then !== undefined; console.log('request: ' + requestHasNoThen + ', rp: ' + rpHasThen);
test/fixtures/require/beforehandAndAfterwards.js 0 → 100644 +11 −0 Original line number Diff line number Diff line 'use strict'; var request1 = require('request'); var rp = require('../../../lib/rp.js'); var request2 = require('request'); var request1HasNoThen = request1('http://localhost:4000/200').then === undefined; var rpHasThen = rp('http://localhost:4000/200').then !== undefined; var request2IsIdenticalToRequest1 = request2 === request1; console.log('request1: ' + request1HasNoThen + ', rp: ' + rpHasThen + ', request2: ' + request2IsIdenticalToRequest1);
test/spec/request-test.js +33 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ var rp = require('../../lib/rp.js'); var http = require('http'); var url = require('url'); var Bluebird = require('bluebird'); var childProcess = require('child_process'); var path = require('path'); describe('Request-Promise', function () { Loading Loading @@ -608,4 +610,35 @@ describe('Request-Promise', function () { }); describe('should still allow to require Request independently', function (done) { it('by not interfering with Request required afterwards', function (done) { childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/afterwards.js'), function (err, stdout, stderr) { expect(stdout).to.contain('rp: true, request: true'); done(); }); }); it('by not interfering with Request required beforehand', function (done) { childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/beforehand.js'), function (err, stdout, stderr) { expect(stdout).to.contain('request: true, rp: true'); done(); }); }); it('by not interfering with Request required beforehand and afterwards being identical', function (done) { childProcess.exec('node ' + path.join(__dirname, '../fixtures/require/beforehandAndAfterwards.js'), function (err, stdout, stderr) { expect(stdout).to.contain('request1: true, rp: true, request2: true'); done(); }); }); }); });