Sha256: 3874c100debcc78a75c8dc9d1f0d0ce9ebfeb94881886bbb73ba5fb0ab368212

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

'use strict';

var expect = require('expect.js');
var sinon = require('sinon');
var fs = require('fs');

var imageSize = require('..');

describe('after done reading from files', function () {

  var oldOpen = fs.open;
  function readFromClosed (descriptor) {
    fs.readSync(descriptor, new Buffer(1), 0, 1, 0);
  }

  describe('should close the file descriptor', function () {

    it('async', function (done) {

      var descriptor;
      var oldOpen = fs.open;
      fs.open = sinon.spy(function (path, mode, callback) {
        oldOpen.call(fs, path, mode, function (err, d) {
          descriptor = d;
          callback(err, d);
        });
      });

      imageSize('specs/images/valid/jpg/large.jpg', function () {

        expect(readFromClosed.bind(null, descriptor)).to.throwException(function (e) {
          expect(e.code).to.equal('EBADF');
          expect(e).to.be.an(Error);
          expect(e.message).to.match(/bad file descriptor/);
        });

        fs.open = oldOpen;
        done();
      });
    });

    it('sync', function () {
      var descriptor;
      var oldOpen = fs.openSync;
      fs.openSync = sinon.spy(function (path, mode) {
        descriptor = oldOpen.call(fs, path, mode);
        return descriptor;
      });

      imageSize('specs/images/valid/jpg/large.jpg');

      expect(readFromClosed.bind(null, descriptor)).to.throwException(function (e) {
        expect(e.code).to.equal('EBADF');
        expect(e).to.be.an(Error);
        expect(e.message).to.match(/bad file descriptor/);
      });

      fs.openSync = oldOpen;
    });
  });
});

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
less-execjs-2.6.0.4 lib/less/js/image-size/specs/fs-close.spec.js
less-execjs-2.6.0.3 lib/less/js/image-size/specs/fs-close.spec.js