UNPKG

1.25 kBJavaScriptView Raw
1/*!
2 * Copyright (c) 2015-2017 Cisco Systems, Inc. See LICENSE file.
3 */
4
5/* eslint require-jsdoc: [0] */
6/* eslint no-console: [0] */
7
8import extract from './extract';
9import generate from 'babel-generator';
10import path from 'path';
11import transform from './transform';
12
13function isNodeModule(filename) {
14 return filename.includes('node_modules') && !filename.includes('packages/node_modules');
15}
16
17function inject(module, filename) {
18 const code = generate(extract(transform, filename), {
19 compact: false,
20 quotes: 'single'
21 }).code;
22
23 if (process.env.JSDOCTRINETEST_VERBOSE) {
24 console.log(filename);
25 console.log(code);
26 console.log();
27 }
28 module._compile(code, filename);
29}
30
31function enableSpecInjection() {
32 let dir;
33 const load = require.extensions['.js'];
34 require.extensions['.js'] = function loadWithSpecs(m, filename) {
35 if (isNodeModule(filename)) {
36 return load(m, filename);
37 }
38 // this is really janky, but so far seems to properly ensure we only load
39 // files in the directories specified to mocha
40 if (!dir) {
41 dir = path.dirname(filename);
42 }
43
44 if (!filename.includes(dir)) {
45 return load(m, filename);
46 }
47
48 return inject(m, filename);
49 };
50}
51
52enableSpecInjection();