Skip to content

Commit 12c5e3d

Browse files
OpenGGphated
authored andcommitted
Update: When testing utime-related cases, check fs.futimes() arguments instead of filesystem times (fixes #208)
1 parent 358594e commit 12c5e3d

File tree

2 files changed

+42
-30
lines changed

2 files changed

+42
-30
lines changed

test/dest-times.js

+26-16
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ describe('.dest() with custom times', function() {
6868
return;
6969
}
7070

71-
// Use the mtime of this file to have proper resolution
72-
var mtime = fs.statSync(__filename).mtime;
71+
// Use new mtime
72+
var mtime = new Date(Date.now() - 2048);
7373

7474
var futimesSpy = expect.spyOn(fs, 'futimes').andCallThrough();
7575

@@ -83,10 +83,14 @@ describe('.dest() with custom times', function() {
8383
});
8484

8585
function assert() {
86-
var stats = fs.lstatSync(outputPath);
87-
8886
expect(futimesSpy.calls.length).toEqual(1);
89-
expect(stats.mtime.getTime()).toEqual(mtime.getTime());
87+
88+
// Compare args instead of fs.lstats(), since mtime may be drifted in x86 Node.js
89+
var mtimeSpy = futimesSpy.calls[0].arguments[2];
90+
91+
expect(mtimeSpy.getTime())
92+
.toEqual(mtime.getTime());
93+
9094
expect(file.stat.mtime).toEqual(mtime);
9195
}
9296

@@ -136,8 +140,8 @@ describe('.dest() with custom times', function() {
136140
return;
137141
}
138142

139-
// Use the mtime of this file to have proper resolution
140-
var mtime = fs.lstatSync(__filename).mtime;
143+
// Use new mtime
144+
var mtime = new Date(Date.now() - 2048);
141145
var invalidAtime = new Date(undefined);
142146

143147
var futimesSpy = expect.spyOn(fs, 'futimes').andCallThrough();
@@ -153,10 +157,11 @@ describe('.dest() with custom times', function() {
153157
});
154158

155159
function assert() {
156-
var stats = fs.lstatSync(outputPath);
157-
158160
expect(futimesSpy.calls.length).toEqual(1);
159-
expect(stats.mtime.getTime()).toEqual(mtime.getTime());
161+
162+
var mtimeSpy = futimesSpy.calls[0].arguments[2];
163+
164+
expect(mtimeSpy.getTime()).toEqual(mtime.getTime());
160165
}
161166

162167
pipe([
@@ -172,9 +177,11 @@ describe('.dest() with custom times', function() {
172177
return;
173178
}
174179

175-
// Use the atime/mtime of this file to have proper resolution
176-
var atime = fs.lstatSync(__filename).atime;
177-
var mtime = fs.lstatSync(__filename).mtime;
180+
// Use new atime/mtime
181+
var atime = new Date(Date.now() - 2048);
182+
var mtime = new Date(Date.now() - 1024);
183+
184+
var futimesSpy = expect.spyOn(fs, 'futimes').andCallThrough();
178185

179186
var file = new File({
180187
base: inputBase,
@@ -187,10 +194,13 @@ describe('.dest() with custom times', function() {
187194
});
188195

189196
function assert() {
190-
var stats = fs.lstatSync(outputPath);
197+
expect(futimesSpy.calls.length).toEqual(1);
198+
199+
var atimeSpy = futimesSpy.calls[0].arguments[1];
200+
var mtimeSpy = futimesSpy.calls[0].arguments[2];
191201

192-
expect(stats.atime.getTime()).toEqual(atime.getTime());
193-
expect(stats.mtime.getTime()).toEqual(mtime.getTime());
202+
expect(atimeSpy.getTime()).toEqual(atime.getTime());
203+
expect(mtimeSpy.getTime()).toEqual(mtime.getTime());
194204
expect(file.stat.mtime).toEqual(mtime);
195205
expect(file.stat.atime).toEqual(atime);
196206
};

test/file-operations.js

+16-14
Original file line numberDiff line numberDiff line change
@@ -1030,10 +1030,9 @@ describe('updateMetadata', function() {
10301030

10311031
var futimesSpy = expect.spyOn(fs, 'futimes').andCallThrough();
10321032

1033-
// Use the mtime/atime of this file to have proper resolution
1034-
var stats = fs.statSync(__filename);
1035-
var mtime = stats.mtime;
1036-
var atime = stats.atime;
1033+
// Use new atime/mtime
1034+
var atime = new Date(Date.now() - 2048);
1035+
var mtime = new Date(Date.now() - 1024);
10371036
var mtimeEarlier = mtime.getTime() - 1000;
10381037
var atimeEarlier = atime.getTime() - 1000;
10391038

@@ -1051,12 +1050,15 @@ describe('updateMetadata', function() {
10511050

10521051
updateMetadata(fd, file, function() {
10531052
expect(futimesSpy.calls.length).toEqual(1);
1054-
var stats = fs.fstatSync(fd);
1053+
// Var stats = fs.fstatSync(fd);
1054+
1055+
var atimeSpy = futimesSpy.calls[0].arguments[1];
1056+
var mtimeSpy = futimesSpy.calls[0].arguments[2];
10551057

10561058
expect(file.stat.mtime).toEqual(new Date(mtimeEarlier));
1057-
expect(stats.mtime.getTime()).toEqual(mtimeEarlier);
1059+
expect(mtimeSpy.getTime()).toEqual(mtimeEarlier);
10581060
expect(file.stat.atime).toEqual(new Date(atimeEarlier));
1059-
expect(stats.atime.getTime()).toEqual(atimeEarlier);
1061+
expect(atimeSpy.getTime()).toEqual(atimeEarlier);
10601062

10611063
fs.close(fd, done);
10621064
});
@@ -1193,10 +1195,9 @@ describe('updateMetadata', function() {
11931195
var fchmodSpy = expect.spyOn(fs, 'fchmod').andCallThrough();
11941196
var futimesSpy = expect.spyOn(fs, 'futimes').andCallThrough();
11951197

1196-
// Use the mtime/atime of this file to have proper resolution
1197-
var stats = fs.statSync(__filename);
1198-
var mtime = stats.mtime;
1199-
var atime = stats.atime;
1198+
// Use new atime/mtime
1199+
var atime = new Date(Date.now() - 2048);
1200+
var mtime = new Date(Date.now() - 1024);
12001201
var mtimeEarlier = mtime.getTime() - 1000;
12011202
var atimeEarlier = atime.getTime() - 1000;
12021203

@@ -1219,12 +1220,13 @@ describe('updateMetadata', function() {
12191220
expect(fchmodSpy.calls.length).toEqual(1);
12201221
expect(futimesSpy.calls.length).toEqual(1);
12211222

1222-
var stats = fs.fstatSync(fd);
1223+
var atimeSpy = futimesSpy.calls[0].arguments[1];
1224+
var mtimeSpy = futimesSpy.calls[0].arguments[2];
12231225

12241226
expect(file.stat.mtime).toEqual(new Date(mtimeEarlier));
1225-
expect(stats.mtime.getTime()).toEqual(mtimeEarlier);
1227+
expect(mtimeSpy.getTime()).toEqual(mtimeEarlier);
12261228
expect(file.stat.atime).toEqual(new Date(atimeEarlier));
1227-
expect(stats.atime.getTime()).toEqual(atimeEarlier);
1229+
expect(atimeSpy.getTime()).toEqual(atimeEarlier);
12281230

12291231
fs.close(fd, done);
12301232
});

0 commit comments

Comments
 (0)