Skip to content

Commit

Permalink
Merge pull request #212 from webpack/bugfix/context-time-info
Browse files Browse the repository at this point in the history
report time info for directories correctly
  • Loading branch information
sokra committed Dec 6, 2021
2 parents b903dd3 + d401815 commit ba21615
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 5 deletions.
8 changes: 5 additions & 3 deletions lib/DirectoryWatcher.js
Original file line number Diff line number Diff line change
Expand Up @@ -714,8 +714,7 @@ class DirectoryWatcher extends EventEmitter {
safeTime,
w.directoryWatcher.collectTimeInfoEntries(
fileTimestamps,
directoryTimestamps,
safeTime
directoryTimestamps
)
);
}
Expand All @@ -726,7 +725,10 @@ class DirectoryWatcher extends EventEmitter {
} else {
for (const dir of this.directories.keys()) {
// No additional info about this directory
directoryTimestamps.set(dir, EXISTANCE_ONLY_TIME_ENTRY);
// but maybe another DirectoryWatcher has info
fileTimestamps.set(dir, EXISTANCE_ONLY_TIME_ENTRY);
if (!directoryTimestamps.has(dir))
directoryTimestamps.set(dir, EXISTANCE_ONLY_TIME_ENTRY);
}
fileTimestamps.set(this.path, EXISTANCE_ONLY_TIME_ENTRY);
directoryTimestamps.set(this.path, EXISTANCE_ONLY_TIME_ENTRY);
Expand Down
2 changes: 0 additions & 2 deletions lib/watchpack.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ const cachedNormalizeOptions = options => {

class WatchpackFileWatcher {
constructor(watchpack, watcher, files) {
if (!watcher) throw new Error();
this.files = Array.isArray(files) ? files : [files];
this.watcher = watcher;
watcher.on("initial-missing", type => {
Expand Down Expand Up @@ -106,7 +105,6 @@ class WatchpackFileWatcher {

class WatchpackDirectoryWatcher {
constructor(watchpack, watcher, directories) {
if (!watcher) throw new Error();
this.directories = Array.isArray(directories) ? directories : [directories];
this.watcher = watcher;
watcher.on("initial-missing", type => {
Expand Down
49 changes: 49 additions & 0 deletions test/Watchpack.js
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,55 @@ describe("Watchpack", function() {
});
});

it("should watch directory as file and directory", function(done) {
var w = new Watchpack({
aggregateTimeout: 1000
});
w.on("aggregated", function(changes) {
const files = new Map();
const directories = new Map();
w.collectTimeInfoEntries(files, directories);
// fixtures should exist
const fixturesAsFile = files.get(path.join(fixtures));
fixturesAsFile.should.be.type("object");
// dir should exist
const dirAsFile = files.get(path.join(fixtures, "dir"));
dirAsFile.should.be.type("object");
dirAsFile.should.not.have.property("safeTime");
// a should have timestamp
const a = files.get(path.join(fixtures, "dir", "sub", "a"));
a.should.be.type("object");
a.should.have.property("safeTime");
a.should.have.property("timestamp");
// sub should have timestamp
const sub = directories.get(path.join(fixtures, "dir", "sub"));
sub.should.be.type("object");
sub.should.have.property("safeTime");
// sub should exist as file
const subAsFile = files.get(path.join(fixtures, "dir", "sub"));
subAsFile.should.be.type("object");
subAsFile.should.not.have.property("safeTime");
w.close();
done();
});
testHelper.dir("dir");
testHelper.dir(path.join("dir", "sub"));
testHelper.dir(path.join("dir", "sub2"));
testHelper.tick(function() {
w.watch(
[
path.join(fixtures, "dir", "sub", "a"),
path.join(fixtures, "dir", "sub"),
path.join(fixtures)
],
[path.join(fixtures, "dir", "sub")]
);
testHelper.tick(function() {
testHelper.file(path.join("dir", "sub", "a"));
});
});
});

it("should watch 2 files in a not-existing directory", function(done) {
var w = new Watchpack({
aggregateTimeout: 1000
Expand Down

0 comments on commit ba21615

Please sign in to comment.