Skip to content

Commit fa0a93c

Browse files
committed
chore(types): basic test runner for type validation
relates to ReactiveX#661
1 parent 5f9ac45 commit fa0a93c

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

types/index.js

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
var _ = require('lodash');
2+
var colors = require('colors');
3+
var glob = require('glob');
4+
var fs = require('fs');
5+
var ts = require('typescript');
6+
7+
function diagnose(fileNames, options) {
8+
var program = ts.createProgram(fileNames, options);
9+
10+
var diagnostics = _.groupBy(ts.getPreEmitDiagnostics(program),
11+
function (x) {
12+
return x.file.fileName;
13+
});
14+
15+
_.forIn(diagnostics, function (value, key) {
16+
fs.readFile(key, 'utf-8' ,function (err, file) {
17+
var lines = file.split('\n');
18+
_.forEach(value, function (diagnostic) {
19+
var pos = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
20+
var message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
21+
22+
var prefix = ' (' + key + ': ' + pos.line + ',' + pos.character + ') ';
23+
console.error('Error : '.red + message + prefix);
24+
console.error(lines[pos.line].gray);
25+
console.error(_.repeat(' ', pos.character) + '^');
26+
console.error();
27+
});
28+
});
29+
});
30+
}
31+
32+
glob('types/**/*.ts', function (err, files) {
33+
files.unshift('typings/es6-shim/es6-shim.d.ts');
34+
diagnose(files, {
35+
module: ts.ModuleKind.CommonJS
36+
});
37+
});

0 commit comments

Comments
 (0)