added tester cli options

added optimist dependency
sourced optimist definition

changed cli options to use optimist
expose verbose info printers as options
added skipTests option

added npm scripts (lazy)
$ npm run test
$ npm run dry
$ npm run all
$ npm run list
$ npm run help

bumped default tsc version to 0.9.7
tester disabled test filer
tuned suite regexs
tuned npm run commands
added print helpers
This commit is contained in:
Bart van der Schoor
2014-03-01 23:05:08 +01:00
parent a0e4fc304f
commit 08c3557397
10 changed files with 205 additions and 49 deletions

View File

@@ -127,10 +127,12 @@ var DT;
var Timer = (function () {
function Timer() {
this.time = 0;
this.asString = '<not-started>';
}
Timer.prototype.start = function () {
this.time = 0;
this.startTime = this.now();
this.asString = '<started>';
};
Timer.prototype.now = function () {
@@ -566,6 +568,10 @@ var DT;
this.out(' \33[36m\33[1m' + file + '\33[0m\n');
};
Print.prototype.printWarnCode = function (str) {
this.out(' \33[31m\33[1m<' + str.toLowerCase().replace(/ +/g, '-') + '>\33[0m\n');
};
Print.prototype.printLine = function (file) {
this.out(file + '\n');
};
@@ -634,6 +640,12 @@ var DT;
_this.printLine(file.filePathWithName);
});
};
Print.prototype.printTestAll = function () {
this.printDiv();
this.printSubHeader('Ignoring changes, testing all files');
};
Print.prototype.printFiles = function (files) {
var _this = this;
this.printDiv();
@@ -838,7 +850,7 @@ var DT;
var Promise = require('bluebird');
var endDts = /.ts$/i;
var endDts = /\w\.ts$/i;
/////////////////////////////////
// .d.ts syntax inspection
@@ -865,7 +877,7 @@ var DT;
var Promise = require('bluebird');
var endTestDts = /-tests?.ts$/i;
var endTestDts = /\w-tests?\.ts$/i;
/////////////////////////////////
// Compile with *-tests.ts
@@ -977,7 +989,7 @@ var DT;
var tsExp = /\.ts$/;
DT.DEFAULT_TSC_VERSION = '0.9.1.1';
DT.DEFAULT_TSC_VERSION = '0.9.7';
/////////////////////////////////
// Single test
@@ -1119,7 +1131,9 @@ var DT;
_this.print.printRelChanges(_this.index.changed);
return _this.index.parseFiles();
}).then(function () {
// this.print.printRefMap(this.index, this.index.refMap);
if (_this.options.printRefMap) {
_this.print.printRefMap(_this.index, _this.index.refMap);
}
if (Lazy(_this.index.missing).some(function (arr) {
return arr.length > 0;
})) {
@@ -1129,12 +1143,17 @@ var DT;
// bail
return Promise.cast(false);
}
// this.print.printFiles(this.files);
if (_this.options.printFiles) {
_this.print.printFiles(_this.index.files);
}
return _this.index.collectTargets().then(function (files) {
_this.print.printQueue(files);
return _this.runTests(files);
if (_this.options.testChanges) {
_this.print.printQueue(files);
return _this.runTests(files);
} else {
_this.print.printTestAll();
return _this.runTests(_this.index.files);
}
}).then(function () {
return !_this.suites.some(function (suite) {
return suite.ngTests.length !== 0;
@@ -1173,6 +1192,11 @@ var DT;
_this.print.printSuiteHeader(suite.testSuiteName);
if (_this.options.skipTests) {
_this.print.printWarnCode('skipped test');
return Promise.cast(count++);
}
return suite.start(files, function (testResult) {
_this.print.printTestComplete(testResult);
}).then(function (suite) {
@@ -1249,23 +1273,39 @@ var DT;
})();
DT.TestRunner = TestRunner;
var optimist = require('optimist')(process.argv);
optimist.default('try-without-tscparams', false);
optimist.default('single-thread', false);
optimist.default('tsc-version', DT.DEFAULT_TSC_VERSION);
optimist.default('test-changes', false);
optimist.default('skip-tests', false);
optimist.default('print-files', false);
optimist.default('print-refmap', false);
optimist.boolean('help');
optimist.describe('help', 'print help');
optimist.alias('h', 'help');
var argv = optimist.argv;
var dtPath = path.resolve(path.dirname((module).filename), '..', '..');
var findNotRequiredTscparams = process.argv.some(function (arg) {
return arg == '--try-without-tscparams';
});
var tscVersionIndex = process.argv.indexOf('--tsc-version');
var tscVersion = DT.DEFAULT_TSC_VERSION;
var cpuCores = os.cpus().length;
if (tscVersionIndex > -1) {
tscVersion = process.argv[tscVersionIndex + 1];
if (argv.help) {
optimist.showHelp();
process.exit(0);
}
var runner = new TestRunner(dtPath, {
concurrent: Math.max(cpuCores, 2),
tscVersion: tscVersion,
findNotRequiredTscparams: findNotRequiredTscparams
});
runner.run().then(function (success) {
new TestRunner(dtPath, {
concurrent: argv['single-thread'] ? 1 : Math.max(cpuCores, 2),
tscVersion: argv['tsc-version'],
testChanges: argv['test-changes'],
skipTests: argv['skip-tests'],
printFiles: argv['print-files'],
printRefMap: argv['print-refmap'],
findNotRequiredTscparams: argv['try-without-tscparam']
}).run().then(function (success) {
if (!success) {
process.exit(1);
}

View File

@@ -32,7 +32,7 @@ module DT {
var tsExp = /\.ts$/;
export var DEFAULT_TSC_VERSION = '0.9.1.1';
export var DEFAULT_TSC_VERSION = '0.9.7';
/////////////////////////////////
// Single test
@@ -123,6 +123,10 @@ module DT {
export interface ITestRunnerOptions {
tscVersion:string;
concurrent?:number;
testChanges?:boolean;
skipTests?:boolean;
printFiles?:boolean;
printRefMap?:boolean;
findNotRequiredTscparams?:boolean;
}
@@ -175,19 +179,27 @@ module DT {
this.print.printRelChanges(this.index.changed);
return this.index.parseFiles();
}).then(() => {
// this.print.printRefMap(this.index, this.index.refMap);
if (this.options.printRefMap) {
this.print.printRefMap(this.index, this.index.refMap);
}
if (Lazy(this.index.missing).some((arr: any[]) => arr.length > 0)) {
this.print.printMissing(this.index, this.index.missing);
this.print.printBoldDiv();
// bail
return Promise.cast(false);
}
// this.print.printFiles(this.files);
if (this.options.printFiles) {
this.print.printFiles(this.index.files);
}
return this.index.collectTargets().then((files) => {
this.print.printQueue(files);
return this.runTests(files);
if (this.options.testChanges) {
this.print.printQueue(files);
return this.runTests(files);
}
else {
this.print.printTestAll();
return this.runTests(this.index.files)
}
}).then(() => {
return !this.suites.some((suite) => {
return suite.ngTests.length !== 0
@@ -225,6 +237,11 @@ module DT {
this.print.printSuiteHeader(suite.testSuiteName);
if (this.options.skipTests) {
this.print.printWarnCode('skipped test');
return Promise.cast(count++);
}
return suite.start(files, (testResult) => {
this.print.printTestComplete(testResult);
}).then((suite) => {
@@ -298,21 +315,39 @@ module DT {
}
}
var optimist: Optimist = require('optimist')(process.argv);
optimist.default('try-without-tscparams', false);
optimist.default('single-thread', false);
optimist.default('tsc-version', DEFAULT_TSC_VERSION);
optimist.default('test-changes', false);
optimist.default('skip-tests', false);
optimist.default('print-files', false);
optimist.default('print-refmap', false);
optimist.boolean('help');
optimist.describe('help', 'print help');
optimist.alias('h', 'help');
var argv: any = optimist.argv;
var dtPath = path.resolve(path.dirname((module).filename), '..', '..');
var findNotRequiredTscparams = process.argv.some(arg => arg == '--try-without-tscparams');
var tscVersionIndex = process.argv.indexOf('--tsc-version');
var tscVersion = DEFAULT_TSC_VERSION;
var cpuCores = os.cpus().length;
if (tscVersionIndex > -1) {
tscVersion = process.argv[tscVersionIndex + 1];
if (argv.help) {
optimist.showHelp();
process.exit(0);
}
var runner = new TestRunner(dtPath, {
concurrent: Math.max(cpuCores, 2),
tscVersion: tscVersion,
findNotRequiredTscparams: findNotRequiredTscparams
});
runner.run().then((success) => {
new TestRunner(dtPath, {
concurrent: argv['single-thread'] ? 1 : Math.max(cpuCores, 2),
tscVersion: argv['tsc-version'],
testChanges: argv['test-changes'],
skipTests: argv['skip-tests'],
printFiles: argv['print-files'],
printRefMap: argv['print-refmap'],
findNotRequiredTscparams: argv['try-without-tscparam']
}).run().then((success) => {
if (!success) {
process.exit(1);
}

View File

@@ -132,6 +132,10 @@ module DT {
this.out(' \33[36m\33[1m' + file + '\33[0m\n');
}
public printWarnCode(str: string) {
this.out(' \33[31m\33[1m<' + str.toLowerCase().replace(/ +/g, '-') + '>\33[0m\n');
}
public printLine(file: string) {
this.out(file + '\n');
}
@@ -197,8 +201,13 @@ module DT {
files.forEach((file) => {
this.printLine(file.filePathWithName);
});
}
public printTestAll(): void {
this.printDiv();
this.printSubHeader('Ignoring changes, testing all files');
}
public printFiles(files: File[]): void {
this.printDiv();
this.printSubHeader('Files');

View File

@@ -50,7 +50,7 @@ module DT {
return Promise.all(targetFiles.map((targetFile) => {
return this.runTest(targetFile).then((result) => {
testCallback(result);
})
});
}));
}).then(() => {
this.timer.end();

View File

@@ -6,7 +6,7 @@ module DT {
var Promise: typeof Promise = require('bluebird');
var endDts = /.ts$/i;
var endDts = /\w\.ts$/i;
/////////////////////////////////
// .d.ts syntax inspection

View File

@@ -6,7 +6,7 @@ module DT {
var Promise: typeof Promise = require('bluebird');
var endTestDts = /-tests?.ts$/i;
var endTestDts = /\w-tests?\.ts$/i;
/////////////////////////////////
// Compile with *-tests.ts

View File

@@ -11,11 +11,12 @@ module DT {
export class Timer {
startTime: number;
time = 0;
asString: string;
asString: string = '<not-started>'
public start() {
this.time = 0;
this.startTime = this.now();
this.asString = '<started>';
}
public now(): number {

View File

@@ -0,0 +1,48 @@
// https://github.com/substack/node-optimist
// sourced from https://github.com/soywiz/typescript-node-definitions/blob/master/optimist.d.ts
// rehacked by @Bartvds
declare module Optimist {
export interface Argv {
_: string[];
}
export interface Optimist {
default(name: string, value: any): Optimist;
default(args: any): Optimist;
boolean(name: string): Optimist;
boolean(names: string[]): Optimist;
string(name: string): Optimist;
string(names: string[]): Optimist;
wrap(columns): Optimist;
help(): Optimist;
showHelp(fn?: Function): Optimist;
usage(message: string): Optimist;
demand(key: string): Optimist;
demand(key: number): Optimist;
demand(key: string[]): Optimist;
alias(key: string, alias: string): Optimist;
describe(key: string, desc: string): Optimist;
options(key: string, opt: any): Optimist;
check(fn: Function);
parse(args: string[]): Optimist;
argv: Argv;
}
}
interface Optimist extends Optimist.Optimist {
(args: string[]): Optimist.Optimist;
}
declare module 'optimist' {
export = Optimist;
}

View File

@@ -1,3 +1,4 @@
/// <reference path="node/node.d.ts" />
/// <reference path="bluebird/bluebird.d.ts" />
/// <reference path="lazy.js/lazy.js.d.ts" />
/// <reference path="optimist/optimist.d.ts" />

View File

@@ -1,15 +1,37 @@
{
"private": true,
"name": "DefinitelyTyped",
"version": "0.0.0",
"version": "0.0.1",
"homepage": "https://github.com/borisyankov/DefinitelyTyped",
"repository": {
"type": "git",
"url": "https://github.com/borisyankov/DefinitelyTyped.git"
},
"licenses": [
{
"type": "MIT",
"url": "https://github.com/borisyankov/DefinitelyTyped/blob/master/LICENSE"
}
],
"bugs": {
"url": "https://github.com/borisyankov/DefinitelyTyped/issues"
},
"engines": {
"node": ">= 0.10.0"
},
"scripts": {
"test": "node ./_infrastructure/tests/runner.js --tsc-version 0.9.7"
"test": "node ./_infrastructure/tests/runner.js --tsc-version 0.9.7 --test-changes",
"all": "node ./_infrastructure/tests/runner.js --tsc-version 0.9.7",
"dry": "node ./_infrastructure/tests/runner.js --tsc-version 0.9.7 --skip-tests --test-changes",
"list": "node ./_infrastructure/tests/runner.js --tsc-version 0.9.7 --skip-tests --print-files --print-refmap",
"help": "node ./_infrastructure/tests/runner.js -h"
},
"dependencies": {
"source-map-support": "~0.2.5",
"git-wrapper": "~0.1.1",
"glob": "~3.2.9",
"source-map-support": "~0.2.5",
"bluebird": "~1.0.7",
"lazy.js": "~0.3.2"
"lazy.js": "~0.3.2",
"optimist": "~0.6.1"
}
}