0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-29 23:16:30 +01:00
nodejs/test/sequential/test-require-cache-without-stat.js
Roman Reiss f29762f4dd test: enable linting for tests
Enable linting for the test directory. A number of changes was made so
all tests conform the current rules used by lib and src directories. The
only exception for tests is that unreachable (dead) code is allowed.

test-fs-non-number-arguments-throw had to be excluded from the changes
because of a weird issue on Windows CI.

PR-URL: https://github.com/nodejs/io.js/pull/1721
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-05-19 21:21:27 +02:00

53 lines
1.3 KiB
JavaScript

'use strict';
// 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(common.fixturesDir + '/a');
require('../fixtures/a.js');
require('./../fixtures/a.js');
require('http');
console.log('counterBefore = %d', counter);
var counterBefore = counter;
// Now load the module a bunch of times with equivalent paths.
// stat should not be called.
for (var i = 0; i < 100; i++) {
require(common.fixturesDir + '/a');
require('../fixtures/a.js');
require('./../fixtures/a.js');
}
// 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);