From b72fb76e77470f80904b05ecbb961dc6dc426016 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 18 Aug 2016 17:27:58 +0200 Subject: [PATCH] experiment with forceLoad in runner --- test/all.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/test/all.js b/test/all.js index 360f85cfe81..d68d193b882 100644 --- a/test/all.js +++ b/test/all.js @@ -13,6 +13,8 @@ var istanbul = require('istanbul'); var jsdom = require('jsdom-no-contextify'); var minimatch = require('minimatch'); var async = require('async'); +var fs = require('fs'); +var vm = require('vm'); var TEST_GLOB = '**/test/**/*.test.js'; var optimist = require('optimist') @@ -20,6 +22,7 @@ var optimist = require('optimist') .describe('build', 'Run from out-build').boolean('build') .describe('run', 'Run a single file').string('run') .describe('coverage', 'Generate a coverage report').boolean('coverage') + .describe('forceLoad', 'Force loading').boolean('forceLoad') .describe('browser', 'Run tests in a browser').boolean('browser') .alias('h', 'help').boolean('h') .describe('h', 'Show help'); @@ -91,7 +94,11 @@ function main() { if (argv.coverage) { var instrumenter = new istanbul.Instrumenter(); + var seenSources = {}; + loaderConfig.nodeInstrumenter = function (contents, source) { + seenSources[source] = true; + if (minimatch(source, TEST_GLOB)) { return contents; } @@ -104,6 +111,35 @@ function main() { return; } + if (argv.forceLoad) { + var allFiles = glob.sync(out + '/vs/**/*.js'); + allFiles = allFiles.map(function(source) { + return path.join(__dirname, '..', source); + }); + allFiles = allFiles.filter(function(source) { + if (seenSources[source]) { + return false; + } + if (minimatch(source, TEST_GLOB)) { + return false; + } + if (/fixtures/.test(source)) { + return false; + } + return true; + }); + allFiles.forEach(function(source, index) { + var contents = fs.readFileSync(source).toString(); + contents = instrumenter.instrumentSync(contents, source); + var stopAt = contents.indexOf('}\n__cov'); + stopAt = contents.indexOf('}\n__cov', stopAt + 1); + + var str = '(function() {' + contents.substr(0, stopAt + 1) + '});'; + var r = vm.runInThisContext(str, source); + r.call(global); + }); + } + var collector = new istanbul.Collector(); collector.add(global.__coverage__); -- GitLab