08-27-周三_17-09-29
This commit is contained in:
69
node_modules/graceful-fs/test/max-open.js
generated
vendored
Normal file
69
node_modules/graceful-fs/test/max-open.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
var test = require('tap').test
|
||||
var fs = require('../')
|
||||
|
||||
test('open lots of stuff', function (t) {
|
||||
// Get around EBADF from libuv by making sure that stderr is opened
|
||||
// Otherwise Darwin will refuse to give us a FD for stderr!
|
||||
process.stderr.write('')
|
||||
|
||||
// How many parallel open()'s to do
|
||||
var n = 1024
|
||||
var opens = 0
|
||||
var fds = []
|
||||
var going = true
|
||||
var closing = false
|
||||
var doneCalled = 0
|
||||
|
||||
for (var i = 0; i < n; i++) {
|
||||
go()
|
||||
}
|
||||
|
||||
function go() {
|
||||
opens++
|
||||
fs.open(__filename, 'r', function (er, fd) {
|
||||
if (er) throw er
|
||||
fds.push(fd)
|
||||
if (going) go()
|
||||
})
|
||||
}
|
||||
|
||||
// should hit ulimit pretty fast
|
||||
setTimeout(function () {
|
||||
going = false
|
||||
t.equal(opens - fds.length, n)
|
||||
done()
|
||||
}, 100)
|
||||
|
||||
|
||||
function done () {
|
||||
if (closing) return
|
||||
doneCalled++
|
||||
|
||||
if (fds.length === 0) {
|
||||
console.error('done called %d times', doneCalled)
|
||||
// First because of the timeout
|
||||
// Then to close the fd's opened afterwards
|
||||
// Then this time, to complete.
|
||||
// Might take multiple passes, depending on CPU speed
|
||||
// and ulimit, but at least 3 in every case.
|
||||
t.ok(doneCalled >= 2)
|
||||
return t.end()
|
||||
}
|
||||
|
||||
closing = true
|
||||
setTimeout(function () {
|
||||
// console.error('do closing again')
|
||||
closing = false
|
||||
done()
|
||||
}, 100)
|
||||
|
||||
// console.error('closing time')
|
||||
var closes = fds.slice(0)
|
||||
fds.length = 0
|
||||
closes.forEach(function (fd) {
|
||||
fs.close(fd, function (er) {
|
||||
if (er) throw er
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
39
node_modules/graceful-fs/test/open.js
generated
vendored
Normal file
39
node_modules/graceful-fs/test/open.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
var test = require('tap').test
|
||||
var fs = require('../graceful-fs.js')
|
||||
|
||||
test('graceful fs is monkeypatched fs', function (t) {
|
||||
t.equal(fs, require('../fs.js'))
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('open an existing file works', function (t) {
|
||||
var fd = fs.openSync(__filename, 'r')
|
||||
fs.closeSync(fd)
|
||||
fs.open(__filename, 'r', function (er, fd) {
|
||||
if (er) throw er
|
||||
fs.close(fd, function (er) {
|
||||
if (er) throw er
|
||||
t.pass('works')
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
test('open a non-existing file throws', function (t) {
|
||||
var er
|
||||
try {
|
||||
var fd = fs.openSync('this file does not exist', 'r')
|
||||
} catch (x) {
|
||||
er = x
|
||||
}
|
||||
t.ok(er, 'should throw')
|
||||
t.notOk(fd, 'should not get an fd')
|
||||
t.equal(er.code, 'ENOENT')
|
||||
|
||||
fs.open('neither does this file', 'r', function (er, fd) {
|
||||
t.ok(er, 'should throw')
|
||||
t.notOk(fd, 'should not get an fd')
|
||||
t.equal(er.code, 'ENOENT')
|
||||
t.end()
|
||||
})
|
||||
})
|
20
node_modules/graceful-fs/test/readdir-sort.js
generated
vendored
Normal file
20
node_modules/graceful-fs/test/readdir-sort.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
var test = require("tap").test
|
||||
var fs = require("../fs.js")
|
||||
|
||||
var readdir = fs.readdir
|
||||
fs.readdir = function(path, cb) {
|
||||
process.nextTick(function() {
|
||||
cb(null, ["b", "z", "a"])
|
||||
})
|
||||
}
|
||||
|
||||
var g = require("../")
|
||||
|
||||
test("readdir reorder", function (t) {
|
||||
g.readdir("whatevers", function (er, files) {
|
||||
if (er)
|
||||
throw er
|
||||
t.same(files, [ "a", "b", "z" ])
|
||||
t.end()
|
||||
})
|
||||
})
|
47
node_modules/graceful-fs/test/write-then-read.js
generated
vendored
Normal file
47
node_modules/graceful-fs/test/write-then-read.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
var fs = require('../');
|
||||
var rimraf = require('rimraf');
|
||||
var mkdirp = require('mkdirp');
|
||||
var test = require('tap').test;
|
||||
var p = require('path').resolve(__dirname, 'files');
|
||||
|
||||
process.chdir(__dirname)
|
||||
|
||||
// Make sure to reserve the stderr fd
|
||||
process.stderr.write('');
|
||||
|
||||
var num = 4097;
|
||||
var paths = new Array(num);
|
||||
|
||||
test('make files', function (t) {
|
||||
rimraf.sync(p);
|
||||
mkdirp.sync(p);
|
||||
|
||||
for (var i = 0; i < num; ++i) {
|
||||
paths[i] = 'files/file-' + i;
|
||||
fs.writeFileSync(paths[i], 'content');
|
||||
}
|
||||
|
||||
t.end();
|
||||
})
|
||||
|
||||
test('read files', function (t) {
|
||||
// now read them
|
||||
var done = 0;
|
||||
for (var i = 0; i < num; ++i) {
|
||||
fs.readFile(paths[i], function(err, data) {
|
||||
if (err)
|
||||
throw err;
|
||||
|
||||
++done;
|
||||
if (done === num) {
|
||||
t.pass('success');
|
||||
t.end()
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
test('cleanup', function (t) {
|
||||
rimraf.sync(p);
|
||||
t.end();
|
||||
});
|
Reference in New Issue
Block a user