Skip to content

Commit 6143aa2

Browse files
committed
setup test runner requires using rewire
1 parent b245886 commit 6143aa2

17 files changed

+63
-60
lines changed

lib/runner/runner-process.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function spawnRunnerProcess(_a) {
2626
'--harmony',
2727
'--no-colors',
2828
'--timeout=3000',
29-
'--require babelhook',
29+
'--compilers js:babel-core/register',
3030
("--reporter=" + reporterPath),
3131
testPath,
3232
], options);

lib/runner/start-runner.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
"use strict";
22
var process_console_log_1 = require('process-console-log');
33
var constants_1 = require('../constants');
4+
var signalMatch = new RegExp(constants_1.signal);
45
function startRunner(_a) {
56
var runner = _a.runner, handleResult = _a.handleResult, taskPosition = _a.taskPosition;
67
var final = null;
7-
var signalMatch = new RegExp(constants_1.signal);
88
new Promise(function run(resolve, reject) {
99
runner.stdout.on('data', function onData(data) {
1010
data = data.toString();

lib/writeTests/compiler.js

Whitespace-only changes.
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
"use strict";
2-
var babelRegister = "require(\"babel-register\")({\"plugins\": [[\"transform-es2015-modules-commonjs\",{\"strict\":true,\"loose\":true}]]});\n\n";
2+
var babelRegister = "// run time compiler\nrequire('babel-core/register')({plugins: [['transform-es2015-modules-commonjs',{\nloose:true}]]});\n\n";
33
Object.defineProperty(exports, "__esModule", { value: true });
44
exports.default = babelRegister;

lib/writeTests/helpers/compiler.js

-12
Original file line numberDiff line numberDiff line change
@@ -1,12 +0,0 @@
1-
"use strict";
2-
var ts = require('typescript');
3-
function compiler(str) {
4-
return ts.transpile(str, {
5-
module: ts.ModuleKind.CommonJS,
6-
target: 'es5',
7-
allowJs: true,
8-
allowUnreachableCode: true,
9-
});
10-
}
11-
Object.defineProperty(exports, "__esModule", { value: true });
12-
exports.default = compiler;

lib/writeTests/helpers/rewire.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"use strict";
2+
var rewire = "require = require('rewire');";
3+
Object.defineProperty(exports, "__esModule", { value: true });
4+
exports.default = rewire;

lib/writeTests/index.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@ var process_console_log_1 = require('process-console-log');
44
var import_paths_1 = require('./import-paths');
55
var exists_1 = require('./helpers/exists');
66
var babel_register_1 = require('./helpers/babel-register');
7+
var rewire_1 = require('./helpers/rewire');
78
function writeTest(_a) {
89
var dir = _a.dir, tests = _a.tests, testPath = _a.testPath;
10+
var fixImports = import_paths_1.default(dir, tests);
11+
var output = '(function(){\n'
12+
.concat('// run time compiler\n' + babel_register_1.default)
13+
.concat('// override console.log\n' + process_console_log_1.logger)
14+
.concat('// file exists function\n' + exists_1.default(dir))
15+
.concat('// rewire\n' + rewire_1.default)
16+
.concat(fixImports)
17+
.concat('\n}());');
918
return new Promise(function (resolve, reject) {
10-
var fixImports = import_paths_1.default(dir, tests);
11-
var output = ''
12-
.concat(process_console_log_1.logger)
13-
.concat(exists_1.default(dir))
14-
.concat(babel_register_1.default)
15-
.concat(fixImports);
1619
fs_1.writeFile(testPath, output, function (err) {
1720
if (err) {
1821
reject(err);

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@
2626
"test": "echo \"Error: no test specified\" && exit 1"
2727
},
2828
"dependencies": {
29+
"babel-core": "^6.13.2",
2930
"babel-plugin-transform-es2015-modules-commonjs": "^6.11.5",
31+
"babel-preset-es2015": "^6.13.2",
3032
"babel-register": "^6.11.6",
3133
"mocha": "^3.0.1",
3234
"node-file-exists": "^1.1.0",
3335
"process-console-log": "^0.2.2",
34-
"typescript": "^1.8.10"
36+
"rewire": "https://github.com/ShMcK/rewire.git"
3537
},
3638
"devDependencies": {
3739
"chai": "^3.5.0",

src/runner/runner-process.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export default function spawnRunnerProcess({dir, taskPosition, testPath}) {
3232
'--harmony', // es6 features
3333
'--no-colors',
3434
'--timeout=3000',
35-
'--require babelhook', // for import/export of modules
35+
'--compilers js:babel-core/register', // for import/export of modules
3636
`--reporter=${reporterPath}`, // test feedback
3737
testPath, // unit tests
3838
], options);

src/runner/start-runner.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import {parseLog} from 'process-console-log';
22
import {signal} from '../constants';
33

4-
export default function startRunner(runner, handleResult) {
4+
// take code after the signal to avoid confusing console.log statements
5+
// with test output
6+
const signalMatch = new RegExp(signal);
57

6-
var final = null;
8+
export default function startRunner({runner, handleResult, taskPosition}) {
79

8-
// take code after the signal to avoid confusing console.log statements
9-
// with test output
10-
const signalMatch = new RegExp(signal);
10+
var final = null;
1111

1212
new Promise(function run(resolve, reject) {
1313

@@ -45,7 +45,7 @@ export default function startRunner(runner, handleResult) {
4545
console.log('error processing result: ', result);
4646
}
4747

48-
final.change = final.taskPosition - config.taskPosition;
48+
final.change = final.taskPosition - taskPosition;
4949
final.pass = final.change > 0;
5050
final.completed = result.pass;
5151

src/writeTests/compiler.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// import * as ts from 'typescript';
2+
//
3+
// // run code through TS compiler with options
4+
// export default function compiler(str: string): string {
5+
// return ts.transpile(str, {
6+
// module: ts.ModuleKind.CommonJS,
7+
// target: 'es5',
8+
// allowJs: true,
9+
// allowUnreachableCode: true,
10+
// });
11+
// }
+3-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
const babelRegister = `require("babel-register")({"plugins": [["transform-es2015-modules-commonjs",{"strict":true,"loose":true}]]});\n\n`;
1+
const babelRegister = `// run time compiler
2+
require('babel-core/register')({plugins: [['transform-es2015-modules-commonjs',{
3+
loose:true}]]});\n\n`;
24
export default babelRegister;

src/writeTests/helpers/compiler.ts

-11
This file was deleted.

src/writeTests/helpers/exists.ts

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
// checks if file exists from cwd
2-
// appends this function to the top of the tests
3-
// require('node-file-exists')(require('path').;
41
export default function(projectDir) {
52
return `function fileExists(e,r){void 0===r&&(r=!0);try{accessSync(e,F_OK)}catch(c){if(c)return r||console.log(c),!1}return!0}var _require=require("fs"),accessSync=_require.accessSync,F_OK=_require.F_OK,_require2=require("path"),resolve=_require2.resolve;function exists(p){return fileExists(resolve('${projectDir}',p))}\n\n`;
63
}

src/writeTests/helpers/rewire.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
const rewire = `require = require('rewire');`;
2+
export default rewire;

src/writeTests/index.ts

+19-15
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,30 @@ import {writeFile} from 'fs';
22
import {logger} from 'process-console-log';
33
import importPaths from './import-paths';
44
import exists from './helpers/exists';
5-
// import compiler from './helpers/compiler';
5+
// import compiler from './compiler';
66
import babelRegister from './helpers/babel-register';
7+
import rewire from './helpers/rewire';
78

8-
export default function writeTest({ dir, tests, testPath }: CombineTestsOptions) {
9-
return new Promise((resolve, reject) => {
9+
export default function writeTest({ dir, tests, testPath }) {
1010

11-
// fix import paths relative to project dir instead of test runner
12-
const fixImports = importPaths(dir, tests);
13-
// const compiled = compiler(fixImports);
11+
// fix import paths relative to project dir instead of test runner
12+
const fixImports = importPaths(dir, tests);
13+
// const compiled = compiler(fixImports);
1414

15-
const output = ''
16-
// append logger
17-
.concat(logger)
18-
// exists polyfill for file/folder exists checks
19-
.concat(exists(dir))
20-
// babel hook to handle import / export in other files
21-
.concat(babelRegister)
22-
// compile using ts
23-
.concat(fixImports);
15+
const output = '(function(){\n'
16+
// babel hook to handle import / export in other files
17+
.concat('// run time compiler\n' + babelRegister)
18+
// append logger for capturing log values and types
19+
.concat('// override console.log\n' + logger)
20+
// exists polyfill for file/folder exists checks
21+
.concat('// file exists function\n' + exists(dir))
22+
// allow access to module globals
23+
.concat('// rewire\n' + rewire)
24+
// fixed imports
25+
.concat(fixImports)
26+
.concat('\n}());');
2427

28+
return new Promise((resolve, reject) => {
2529
// write test file
2630
writeFile(testPath, output, (err) => {
2731
if (err) { reject(err); }

tsconfig.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,10 @@
3535
"src/typings/process-console-log/index.d.ts",
3636
"src/typings/set/set.d.ts",
3737
"src/typings/tsd.d.ts",
38+
"src/writeTests/compiler.ts",
3839
"src/writeTests/helpers/babel-register.ts",
39-
"src/writeTests/helpers/compiler.ts",
4040
"src/writeTests/helpers/exists.ts",
41+
"src/writeTests/helpers/rewire.ts",
4142
"src/writeTests/import-paths.ts",
4243
"src/writeTests/index.ts"
4344
],

0 commit comments

Comments
 (0)