From 86d8fe127ff62d4b7deec64e264bde6e0a66503c Mon Sep 17 00:00:00 2001 From: achingbrain Date: Mon, 23 Dec 2019 16:01:15 +0000 Subject: [PATCH 1/3] fix: format mtime as timespec --- src/files/format-mtime.js | 11 ++++++++--- test/files/format-mtime.spec.js | 6 +++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/files/format-mtime.js b/src/files/format-mtime.js index 5ce121e..bf6bc67 100644 --- a/src/files/format-mtime.js +++ b/src/files/format-mtime.js @@ -1,11 +1,16 @@ 'use strict' function formatMtime (mtime) { - if (mtime === undefined) { - return '-' + if (mtime == null) { + mtime = { + secs: 0, + nsecs: 0 + } } - return new Date(mtime * 1000).toLocaleDateString(Intl.DateTimeFormat().resolvedOptions().locale, { + const date = new Date((mtime.secs * 1000) + Math.round(mtime.nsecs / 1000)) + + return date.toLocaleDateString(Intl.DateTimeFormat().resolvedOptions().locale, { year: 'numeric', month: 'short', day: 'numeric', diff --git a/test/files/format-mtime.spec.js b/test/files/format-mtime.spec.js index d7a6eae..c060e6e 100644 --- a/test/files/format-mtime.spec.js +++ b/test/files/format-mtime.spec.js @@ -10,6 +10,10 @@ const expect = chai.expect describe('format-mtime', function () { it('formats mtime', function () { - expect((new Date(formatMtime(0))).getTime()).to.equal(0) + expect(formatMtime({ secs: 100, nsecs: 0 })).to.equal('Jan 1, 1970, 1:01:40 AM GMT+1') + }) + + it('formats empty mtime', function () { + expect(formatMtime()).to.equal('Jan 1, 1970, 1:00:00 AM GMT+1') }) }) From 89002f3ad0f4026d2f9aa5c80c0e4758a2c0f3b3 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Mon, 23 Dec 2019 16:11:30 +0000 Subject: [PATCH 2/3] fix: do not depend on test host timezone --- test/files/format-mtime.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/files/format-mtime.spec.js b/test/files/format-mtime.spec.js index c060e6e..146fc0d 100644 --- a/test/files/format-mtime.spec.js +++ b/test/files/format-mtime.spec.js @@ -10,10 +10,10 @@ const expect = chai.expect describe('format-mtime', function () { it('formats mtime', function () { - expect(formatMtime({ secs: 100, nsecs: 0 })).to.equal('Jan 1, 1970, 1:01:40 AM GMT+1') + expect(formatMtime({ secs: 100, nsecs: 0 })).to.include('Jan 1, 1970') }) it('formats empty mtime', function () { - expect(formatMtime()).to.equal('Jan 1, 1970, 1:00:00 AM GMT+1') + expect(formatMtime()).to.include('Jan 1, 1970') }) }) From 239a103d0228b9229171337fa92d6d29520a06b1 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Wed, 8 Jan 2020 15:41:52 +0000 Subject: [PATCH 3/3] fix: support empty mtimes --- src/files/format-mtime.js | 5 +---- test/files/format-mtime.spec.js | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/files/format-mtime.js b/src/files/format-mtime.js index bf6bc67..486cecb 100644 --- a/src/files/format-mtime.js +++ b/src/files/format-mtime.js @@ -2,10 +2,7 @@ function formatMtime (mtime) { if (mtime == null) { - mtime = { - secs: 0, - nsecs: 0 - } + return '-' } const date = new Date((mtime.secs * 1000) + Math.round(mtime.nsecs / 1000)) diff --git a/test/files/format-mtime.spec.js b/test/files/format-mtime.spec.js index 146fc0d..80c44ad 100644 --- a/test/files/format-mtime.spec.js +++ b/test/files/format-mtime.spec.js @@ -14,6 +14,6 @@ describe('format-mtime', function () { }) it('formats empty mtime', function () { - expect(formatMtime()).to.include('Jan 1, 1970') + expect(formatMtime()).to.equal('-') }) })