Skip to content

Commit 9c80274

Browse files
committed
Make sure that file.stat reflect the file on disk after dest.
1 parent 38ccf00 commit 9c80274

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lib/dest/writeContents/index.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ function writeContents(writePath, file, cb) {
120120
times();
121121

122122
function mode() {
123-
fs.fchmod(fd, stat.mode ^ modeDiff, function(err) {
123+
file.stat.mode = stat.mode ^ modeDiff;
124+
fs.fchmod(fd, file.stat.mode, function(err) {
125+
if (err) {
126+
file.stat.mode = stat.mode;
127+
}
124128
if (timesDiff) {
125129
return times(err);
126130
}
@@ -129,7 +133,13 @@ function writeContents(writePath, file, cb) {
129133
}
130134

131135
function times(err1) {
136+
file.stat.atime = timesDiff.atime;
137+
file.stat.mtime = timesDiff.mtime;
132138
fs.futimes(fd, timesDiff.atime, timesDiff.mtime, function(err2) {
139+
if (err) {
140+
file.stat.atime = stat.atime;
141+
file.stat.mtime = stat.mtime;
142+
}
133143
close(err1 || err2, finish);
134144
});
135145
}

test/dest.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,8 @@ describe('dest stream', function() {
679679
fs.lstatSync(expectedPath).mtime.getTime().should.equal(expectedMtime.getTime());
680680
expectedFile.stat.should.have.property('mtime');
681681
expectedFile.stat.mtime.should.equal(expectedMtime);
682-
expectedFile.stat.should.not.have.property('atime');
682+
expectedFile.stat.should.have.property('atime');
683+
expectedFile.stat.atime.should.be.above(expectedMtime);
683684
done();
684685
};
685686

0 commit comments

Comments
 (0)