From cc20f8b747ecb85b19496750494e58eb495d4ceb Mon Sep 17 00:00:00 2001 From: ikokostya Date: Thu, 23 Jun 2016 00:34:17 +0300 Subject: [PATCH] Clone options in Pool constructor (fixes #4) (#5) --- index.js | 3 ++- package.json | 3 ++- test/index.js | 11 +++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 67cfc19f..6e5fdbbd 100644 --- a/index.js +++ b/index.js @@ -2,10 +2,11 @@ var genericPool = require('generic-pool') var util = require('util') var EventEmitter = require('events').EventEmitter var debug = require('debug') +var objectAssign = require('object-assign') var Pool = module.exports = function (options, Client) { EventEmitter.call(this) - this.options = options || {} + this.options = objectAssign({}, options) this.log = this.options.log || debug('pg:pool') this.Client = this.options.Client || Client || require('pg').Client this.Promise = this.options.Promise || Promise diff --git a/package.json b/package.json index a3d554c4..7ddc16ea 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ }, "dependencies": { "debug": "^2.2.0", - "generic-pool": "2.4.2" + "generic-pool": "2.4.2", + "object-assign": "4.1.0" } } diff --git a/test/index.js b/test/index.js index e03c5f23..956f15cc 100644 --- a/test/index.js +++ b/test/index.js @@ -51,6 +51,17 @@ describe('pool', function () { }) }) }) + + it('should not change given options', function (done) { + var options = { max: 10 } + var pool = new Pool(options) + pool.connect(function (err, client, release) { + release() + if (err) return done(err) + expect(options).to.eql({ max: 10 }) + pool.end(done) + }) + }) }) describe('with promises', function () {