fs: consider NaN/Infinity in toUnixTimestamp
PR-URL: https://github.com/nodejs/node/pull/2387 Reviewed-By: Trevor Norris <trev.norris@gmail.com>
This commit is contained in:
parent
05d30d5396
commit
1f842c2c61
@ -363,6 +363,14 @@ descriptor.
|
|||||||
|
|
||||||
Change file timestamps of the file referenced by the supplied path.
|
Change file timestamps of the file referenced by the supplied path.
|
||||||
|
|
||||||
|
Note: the arguments `atime` and `mtime` of the following related functions does
|
||||||
|
follow the below rules:
|
||||||
|
|
||||||
|
- If the value is a numberable string like "123456789", the value would get
|
||||||
|
converted to corresponding number.
|
||||||
|
- If the value is `NaN` or `Infinity`, the value would get converted to
|
||||||
|
`Date.now()`.
|
||||||
|
|
||||||
## fs.utimesSync(path, atime, mtime)
|
## fs.utimesSync(path, atime, mtime)
|
||||||
|
|
||||||
Synchronous version of `fs.utimes()`. Returns `undefined`.
|
Synchronous version of `fs.utimes()`. Returns `undefined`.
|
||||||
|
@ -1045,7 +1045,13 @@ fs.chownSync = function(path, uid, gid) {
|
|||||||
|
|
||||||
// converts Date or number to a fractional UNIX timestamp
|
// converts Date or number to a fractional UNIX timestamp
|
||||||
function toUnixTimestamp(time) {
|
function toUnixTimestamp(time) {
|
||||||
|
if (typeof time === 'string' && +time == time) {
|
||||||
|
return +time;
|
||||||
|
}
|
||||||
if (typeof time === 'number') {
|
if (typeof time === 'number') {
|
||||||
|
if (!Number.isFinite(time) || time < 0) {
|
||||||
|
return Date.now() / 1000;
|
||||||
|
}
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
if (util.isDate(time)) {
|
if (util.isDate(time)) {
|
||||||
|
@ -122,16 +122,22 @@ function runTest(atime, mtime, callback) {
|
|||||||
|
|
||||||
var stats = fs.statSync(__filename);
|
var stats = fs.statSync(__filename);
|
||||||
|
|
||||||
|
// run tests
|
||||||
runTest(new Date('1982-09-10 13:37'), new Date('1982-09-10 13:37'), function() {
|
runTest(new Date('1982-09-10 13:37'), new Date('1982-09-10 13:37'), function() {
|
||||||
runTest(new Date(), new Date(), function() {
|
runTest(new Date(), new Date(), function() {
|
||||||
runTest(123456.789, 123456.789, function() {
|
runTest(123456.789, 123456.789, function() {
|
||||||
runTest(stats.mtime, stats.mtime, function() {
|
runTest(stats.mtime, stats.mtime, function() {
|
||||||
// done
|
runTest(NaN, Infinity, function() {
|
||||||
|
runTest('123456', -1, function() {
|
||||||
|
// done
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
process.on('exit', function() {
|
process.on('exit', function() {
|
||||||
console.log('Tests run / ok:', tests_run, '/', tests_ok);
|
console.log('Tests run / ok:', tests_run, '/', tests_ok);
|
||||||
assert.equal(tests_ok, tests_run);
|
assert.equal(tests_ok, tests_run);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user