Files
node-v0.x-archive/test/simple/test-require-cache-without-stat.js
Felix Geisendörfer 0263f01475 Fix test-require-cache-without-stat.js
This path adds an additional cache to the module system for caching the
location of previously required modules. Since it is embedded in the
loop that iterates over all require.paths, this patch also handles the
case where require.paths is being modified.

The patch also cleans up some code around it.

See: https://groups.google.com/forum/#!topic/nodejs-dev/QGGlrvLDHVs
2011-01-16 14:52:55 -08:00

50 lines
1.1 KiB
JavaScript

// 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' and 'http' once. It should become cached.
require.paths.push(common.fixturesDir);
require('a');
require('http');
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('a');
}
// Do the same with a built-in module
for (var i = 0; i < 100; i++) {
require('http');
}
console.log("counterAfter = %d", counter);
var counterAfter = counter;
assert.equal(counterBefore, counterAfter);