mirror of
https://github.com/jprichardson/node-fs-extra.git
synced 2026-02-01 17:21:13 +00:00
lib/util/utimes: create hasMillisRes() (async)
This commit is contained in:
parent
470b4ab7dc
commit
8c79325478
@ -19,9 +19,9 @@ describe('utimes', function () {
|
||||
fse.emptyDir(TEST_DIR, done)
|
||||
})
|
||||
|
||||
describe('hasMillisRes()', function () {
|
||||
describe('hasMillisResSync()', function () {
|
||||
it('should return a boolean indicating whether it has support', function () {
|
||||
var res = utimes.hasMillisRes()
|
||||
var res = utimes.hasMillisResSync()
|
||||
assert.equal(typeof res, 'boolean')
|
||||
|
||||
// HFS => false
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
|
||||
var HAS_MILLIS_RES = hasMillisRes()
|
||||
var HAS_MILLIS_RES = hasMillisResSync()
|
||||
|
||||
// HFS, ext{2,3}, FAT do not, Node.js v0.10 does not
|
||||
function hasMillisRes () {
|
||||
function hasMillisResSync () {
|
||||
// 550 millis past UNIX epoch
|
||||
var d = new Date(1435410243862)
|
||||
var tmpfile = path.join(require('os').tmpdir(), 'millis-test')
|
||||
var tmpfile = path.join(require('os').tmpdir(), 'millis-test-sync')
|
||||
fs.writeFileSync(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141')
|
||||
var fd = fs.openSync(tmpfile, 'r+')
|
||||
fs.futimesSync(fd, d, d)
|
||||
@ -15,6 +15,28 @@ function hasMillisRes () {
|
||||
return fs.statSync(tmpfile).mtime > 1435410243000
|
||||
}
|
||||
|
||||
function hasMillisRes (callback) {
|
||||
// 550 millis past UNIX epoch
|
||||
var d = new Date(1435410243862)
|
||||
var tmpfile = path.join(require('os').tmpdir(), 'millis-test')
|
||||
fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', function (err) {
|
||||
if (err) return callback(err)
|
||||
fs.open(tmpfile, 'r+', function (err, fd) {
|
||||
if (err) return callback(err)
|
||||
fs.futimes(fd, d, d, function (err) {
|
||||
if (err) return callback(err)
|
||||
fs.close(fd, function (err) {
|
||||
if (err) return callback(err)
|
||||
fs.stat(tmpfile, function (err, stats) {
|
||||
if (err) return callback(err)
|
||||
callback(null, stats.mtime > 1435410243000)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function timeRemoveMillis (timestamp) {
|
||||
if (typeof timestamp === 'number') {
|
||||
return Math.floor(timestamp / 1000) * 1000
|
||||
@ -38,6 +60,7 @@ function utimesMillis (path, atime, mtime, callback) {
|
||||
|
||||
module.exports = {
|
||||
hasMillisRes: hasMillisRes,
|
||||
hasMillisResSync: hasMillisResSync,
|
||||
timeRemoveMillis: timeRemoveMillis,
|
||||
utimesMillis: utimesMillis,
|
||||
HAS_MILLIS_RES: HAS_MILLIS_RES
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user