diff --git a/lib/pubsub/subscription.js b/lib/pubsub/subscription.js index 006b3cdbed7..82a2babcd1f 100644 --- a/lib/pubsub/subscription.js +++ b/lib/pubsub/subscription.js @@ -360,7 +360,7 @@ Subscription.prototype.pull = function(options, callback) { var messages = response.receivedMessages || []; messages = messages.map(Subscription.formatMessage_); - if (self.autoAck) { + if (self.autoAck && messages.length !== 0) { var ackIds = messages.map(function(message) { return message.ackId; }); diff --git a/test/pubsub/subscription.js b/test/pubsub/subscription.js index 2be34b0782a..cb403c6c137 100644 --- a/test/pubsub/subscription.js +++ b/test/pubsub/subscription.js @@ -285,6 +285,18 @@ describe('Subscription', function() { subscription.pull({}, assert.ifError); }); + it('should not autoAck if no messages returned', function(done) { + subscription.makeReq_ = function(method, path, qs, body, callback) { + callback(null, { receivedMessages: [] }); + }; + subscription.ack = function() { + throw new Error('I should not run.'); + }; + subscription.pull(function() { + done(); + }); + }); + it('should pass id to ack', function(done) { subscription.ack = function(id) { assert.equal(id, expectedMessage.ackId);