Setup tslint on build and test to enforce good practices and consistent style.
This commit is contained in:
Родитель
c7ba815efe
Коммит
e59b1aca89
19
gulpfile.js
19
gulpfile.js
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче