/
fs-close.spec.js
59 lines (46 loc) · 1.53 KB
/
fs-close.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
'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 () {
function readFromClosed (descriptor) {
fs.readSync(descriptor, Buffer.alloc(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;
});
});
});