Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Add broken test for require cache working

require is caching the compiled code but still stating the filenames.
https://groups.google.com/d/topic/nodejs-dev/QGGlrvLDHVs/discussion
  • Loading branch information...
commit f35773ad0767232aafaa9dfe9f788ca55b0a6138 1 parent d9087c1
@ry ry authored
Showing with 44 additions and 0 deletions.
  1. +44 −0 test/simple/test-require-cache-without-stat.js
View
44 test/simple/test-require-cache-without-stat.js
@@ -0,0 +1,44 @@
+// We've experienced a regression where the module loader stats a bunch of
+// directories on require() even if it's been called before. The require()
+// should caching the request.
+var common = require('../common');
+var fs = require('fs');
+var assert = require('assert');
+
+var counter = 0;
+
+// Switch out the two stat implementations so that they increase a counter
+// each time they are called.
+
+var _statSync = fs.statSync;
+var _stat = fs.stat;
+
+fs.statSync = function() {
+ counter++;
+ return _statSync.apply(this, arguments);
+};
+
+fs.stat = function() {
+ counter++;
+ return _stat.apply(this, arguments);
+};
+
+// Load the module a.js once. It should become cached.
+
+var m = common.fixturesDir + '/a.js';
@kof
kof added a note

This should not work, because of ".js"

@tj
tj added a note

Yeah it should

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
+require(m);
+
+console.log("counterBefore = %d", counter);
+var counterBefore = counter;
+
+// Now load the module a bunch of times.
+// stat should not be called.
+for (var i = 0; i < 100; i++) {
+ require(m);
+}
+
+console.log("counterAfter = %d", counter);
+var counterAfter = counter;
+
+assert.equal(counterBefore, counterAfter);
+
Please sign in to comment.
Something went wrong with that request. Please try again.