From bc7eb9cabd7d26be48bb73b20845d70cb4a65e50 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Wed, 3 Feb 2016 18:40:23 -0700 Subject: [PATCH] closeFd tests --- test/fileOperations.js | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/test/fileOperations.js b/test/fileOperations.js index 0f5bb11c..c0ab6ac9 100644 --- a/test/fileOperations.js +++ b/test/fileOperations.js @@ -2,6 +2,10 @@ var expect = require('expect'); +var fs = require('graceful-fs'); +var path = require('path'); + +var closeFd = require('../lib/dest/fileOperations/closeFd'); var isOwner = require('../lib/dest/fileOperations/isOwner'); var getModeDiff = require('../lib/dest/fileOperations/getModeDiff'); var getTimesDiff = require('../lib/dest/fileOperations/getTimesDiff'); @@ -279,3 +283,66 @@ describe('getTimesDiff', function() { done(); }); }); + +describe('closeFd', function() { + + it('calls the callback with propagated error if fd is not a number', function(done) { + var propagatedError = new Error(); + + closeFd(propagatedError, null, function(err) { + expect(err).toEqual(propagatedError); + + done(); + }); + }); + + it('calls the callback with close error if no error to propagate', function(done) { + closeFd(null, 9001, function(err) { + expect(err).toExist(); + + done(); + }); + }); + + it('calls the callback with propagated error if close errors', function(done) { + var propagatedError = new Error(); + + closeFd(propagatedError, 9001, function(err) { + expect(err).toEqual(propagatedError); + + done(); + }); + }); + + it('calls the callback with propagated error if close succeeds', function(done) { + var propagatedError = new Error(); + + var fd = fs.openSync(path.join(__dirname, './fixtures/test.coffee'), 'r'); + + var spy = expect.spyOn(fs, 'close').andCallThrough(); + + closeFd(propagatedError, fd, function(err) { + spy.restore(); + + expect(spy.calls.length).toEqual(1); + expect(err).toEqual(propagatedError); + + done(); + }); + }); + + it('calls the callback with no error if close succeeds & no propagated error', function(done) { + var fd = fs.openSync(path.join(__dirname, './fixtures/test.coffee'), 'r'); + + var spy = expect.spyOn(fs, 'close').andCallThrough(); + + closeFd(null, fd, function(err) { + spy.restore(); + + expect(spy.calls.length).toEqual(1); + expect(err).toEqual(undefined); + + done(); + }); + }); +});