Setup tslint on build and test to enforce good practices and consistent style.

This commit is contained in:
Matt Mazzola 2016-08-22 10:08:49 -07:00
Родитель c7ba815efe
Коммит e59b1aca89
5 изменённых файлов: 99 добавлений и 56 удалений

Просмотреть файл

@ -6,6 +6,7 @@ var del = require('del'),
moment = require('moment'),
rename = require('gulp-rename'),
replace = require('gulp-replace'),
tslint = require('gulp-tslint'),
typedoc = require("gulp-typedoc"),
uglify = require('gulp-uglify'),
karma = require('karma'),
@ -23,6 +24,7 @@ var gulpBanner = "/*! " + webpackBanner + " */\n";
gulp.task('build', 'Build for release', function (done) {
return runSequence(
'tslint:build',
'clean:dist',
'compile:ts',
'min',
@ -34,6 +36,7 @@ gulp.task('build', 'Build for release', function (done) {
gulp.task('test', 'Run unit tests', function (done) {
return runSequence(
'tslint:test',
'clean:tmp',
'compile:spec',
'test:spec',
@ -140,3 +143,19 @@ gulp.task('test:spec', 'Runs spec tests', function(done) {
captureTimeout: argv.timeout || 20000
}, done);
});
gulp.task('tslint:build', 'Run TSLint on src', function () {
return gulp.src(["src/**/*.ts"])
.pipe(tslint({
formatter: "verbose"
}))
.pipe(tslint.report());
});
gulp.task('tslint:test', 'Run TSLint on src and tests', function () {
return gulp.src(["src/**/*.ts", "test/**/*.ts"])
.pipe(tslint({
formatter: "verbose"
}))
.pipe(tslint.report());
});

Просмотреть файл

@ -32,6 +32,7 @@
"gulp-help": "^1.6.1",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.5.4",
"gulp-tslint": "^6.1.1",
"gulp-typedoc": "^2.0.0",
"gulp-uglify": "^1.5.3",
"jasmine-core": "^2.4.1",
@ -46,6 +47,7 @@
"phantomjs-prebuilt": "^2.1.7",
"run-sequence": "^1.2.0",
"ts-loader": "^0.8.2",
"tslint": "^3.15.0",
"typedoc": "^0.4.4",
"typescript": "^1.8.10",
"typings": "^1.3.2",

Просмотреть файл

@ -79,7 +79,7 @@ export class Router {
}
const matchingRoutes = routeRecognizer.recognize(request.url);
if(matchingRoutes === undefined) {
if (matchingRoutes === undefined) {
return false;
}
@ -113,7 +113,7 @@ export interface IExtendedRequest extends IRequest {
export interface IRequest {
method: "GET" | "POST" | "PUT" | "DELETE";
url: string,
url: string;
headers: { [key: string]: string };
body: any;
}

Просмотреть файл

@ -9,7 +9,6 @@ describe('router', function () {
addHandler: jasmine.createSpy("spyHandler").and.callFake((handler: any) => {
wpmpStub.handlers.push(handler);
}),
simulateReceiveMessage(message: any) {
wpmpStub.handlers.some(handler => {
wpmpStub.testSpy(message);
@ -23,7 +22,6 @@ describe('router', function () {
}
};
describe('common', function () {
let router: Router.Router;
const testUrl = '/report/pages';
@ -130,7 +128,6 @@ describe('router', function () {
};
let internalHandler: any;
beforeAll(function () {
wpmpStub.handlers.length = 0;
router = new Router.Router(wpmpStub);
@ -209,7 +206,7 @@ describe('router', function () {
wpmpStub.simulateReceiveMessage(testData.request);
// Assert
const handleReturnValue: any = wpmpStub.handleResponseSpy.calls.mostRecent().args[0];
// const handleReturnValue: any = wpmpStub.handleResponseSpy.calls.mostRecent().args[0];
expect(wpmpStub.testSpy).toHaveBeenCalledWith(testData.request);
expect(wpmpStub.handleSpy).toHaveBeenCalledWith(jasmine.objectContaining(expectedRequest));
});
@ -229,7 +226,7 @@ describe('router', function () {
pageName: testPageName
}
};
const secondInternalHandler: any = wpmpStub.addHandler.calls.mostRecent().args[0];
// const secondInternalHandler: any = wpmpStub.addHandler.calls.mostRecent().args[0];
// Act
wpmpStub.simulateReceiveMessage(testData.request);

25
tslint.json Normal file
Просмотреть файл

@ -0,0 +1,25 @@
{
"extends": "tslint:recommended",
"rules": {
"max-line-length": false,
"member-access": false,
"one-line": [
"check-whitespace",
"check-open-brace"
],
"quotemark": [
"single",
"avoid-escape"
],
"trailing-comma": false,
"whitespace": [
"check-branch",
"check-decl",
"check-operator",
"check-module",
"check-seperator",
"check-type"
],
"object-literal-sort-keys": false
}
}