Mobrovac has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/395498 )
Change subject: Update to service-template-node v0.5.4 ...................................................................... Update to service-template-node v0.5.4 Bug: T181564 Change-Id: Ic7f59ffb0c325a9b2a8035edc6ab1faeced266c4 --- M .eslintrc.yml M app.js M lib/swagger-ui.js M package.json M test/features/app/app.js M test/features/app/spec.js M test/features/info/info.js M test/utils/assert.js M test/utils/logStream.js M test/utils/server.js 10 files changed, 106 insertions(+), 98 deletions(-) Approvals: Mobrovac: Verified; Looks good to me, approved jenkins-bot: Verified diff --git a/.eslintrc.yml b/.eslintrc.yml index 2cd5d61..312fdfd 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,6 +1 @@ extends: 'eslint-config-node-services' -rules: - indent: - - error - - 4 - - SwitchCase: 1 diff --git a/app.js b/app.js index 7027a6d..9b1c0ec 100644 --- a/app.js +++ b/app.js @@ -17,7 +17,6 @@ const packageInfo = require('./package.json'); const yaml = require('js-yaml'); const addShutdown = require('http-shutdown'); - const mjAPI = require("mathoid-mathjax-node/lib/mj-single.js"); @@ -155,7 +154,7 @@ /** * Loads all routes declared in routes/ into the app * @param {Application} app the application object to load routes into - * @returns {bluebird} a promise resolving to the app object + * @return {bluebird} a promise resolving to the app object */ function loadRoutes(app) { @@ -207,7 +206,7 @@ /** * Creates and start the service's web server * @param {Application} app the app object to use in the service - * @returns {bluebird} a promise creating the web server + * @return {bluebird} a promise creating the web server */ function createServer(app) { diff --git a/lib/swagger-ui.js b/lib/swagger-ui.js index 9e39ff5..a85985c 100644 --- a/lib/swagger-ui.js +++ b/lib/swagger-ui.js @@ -33,7 +33,7 @@ .replace(/((?:src|href)=['"])/g, '$1?doc&path=') // Some self-promotion .replace(/<a id="logo".*?<\/a>/, - `<a id="logo" href="${app.info.homepage}">${app.info.name}</a>`) + `<a id="logo" href="${app.info.homepage}">${app.info.name}</a>`) .replace(/<title>[^<]*<\/title>/, `<title>${app.info.name}</title>`) // Replace the default url with ours, switch off validation & // limit the size of documents to apply syntax highlighting to diff --git a/package.json b/package.json index e1feee7..7a3b0bb 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,11 @@ "scripts": { "start": "service-runner", "test": "PREQ_CONNECT_TIMEOUT=15 mocha && nsp check", + "lint": "eslint --cache --max-warnings 0 --ext .js --ext .json .", "docker-start": "service-runner docker-start", "docker-test": "service-runner docker-test", "test-build": "service-runner docker-test && service-runner build --deploy-repo --force", - "coverage": "istanbul cover _mocha -- -R spec", - "coveralls": "cat ./coverage/lcov.info | coveralls" + "coverage": "istanbul cover _mocha -- -R spec" }, "repository": { "type": "git", @@ -42,32 +42,32 @@ "bunyan": "^1.8.12", "cassandra-uuid": "^0.0.2", "compression": "^1.7.1", - "core-js": "^2.4.1", "express": "^4.16.2", "http-shutdown": "^1.2.0", "js-yaml": "^3.10.0", "mathoid-mathjax-node": "^0.6.6", "mathoid-mathjax": "2.5.4", "mathoid-texvcjs": "0.3.2", - "preq": "^0.5.3", - "service-runner": "^2.4.2", + "preq": "^0.5.4", + "service-runner": "^2.4.7", "svgo": "^0.7.1", "swagger-router": "^0.7.1", "swagger-ui": "git+https://github.com/wikimedia/swagger-ui#master", "texvcinfo": "^0.4.2" }, "devDependencies": { + "ajv": "^5.5.0", "commander": "^2.9.0", "dom-compare": "^0.2.1", - "extend": "^3.0.0", + "extend": "^3.0.1", "istanbul": "^0.4.5", "mocha": "^4.0.1", "mocha-jshint": "^2.3.1", "mocha-lcov-reporter": "^1.3.0", - "mocha-eslint": "^3.0.1", - "eslint": "^3.12.0", - "eslint-config-node-services": "^2.0.2", - "eslint-config-wikimedia": "^0.4.0", + "mocha-eslint": "^4.1.0", + "eslint": "^4.12.0", + "eslint-config-node-services": "^2.2.5", + "eslint-config-wikimedia": "^0.5.0", "eslint-plugin-json": "^1.2.0", "eslint-plugin-jsdoc": "^3.0.0", "nsp": "^2.8.1", diff --git a/test/features/app/app.js b/test/features/app/app.js index 3cdec05..c23bdca 100644 --- a/test/features/app/app.js +++ b/test/features/app/app.js @@ -1,3 +1,5 @@ +/* global describe, it, before, after */ + 'use strict'; diff --git a/test/features/app/spec.js b/test/features/app/spec.js index 8e9846a..4629d68 100644 --- a/test/features/app/spec.js +++ b/test/features/app/spec.js @@ -1,3 +1,5 @@ +/* global describe, it, before, after */ + 'use strict'; @@ -212,8 +214,10 @@ } } // check that the body type is the same - if(expRes.body.constructor !== res.body.constructor) { - throw new Error('Expected a body of type ' + expRes.body.constructor + ' but gotten ' + res.body.constructor); + if (expRes.body.constructor !== res.body.constructor) { + throw new Error( + `Expected body type ${expRes.body.constructor} but got ${res.body.constructor}` + ); } // compare the bodies @@ -263,7 +267,7 @@ const path = spec.paths[pathStr]; assert.deepEqual(!!Object.keys(path), true, `No methods defined for path: ${pathStr}`); Object.keys(path).forEach((method) => { - const mSpec = path[method]; + const mSpec = path[method]; if ({}.hasOwnProperty.call(mSpec, 'x-monitor') && !mSpec['x-monitor']) { return; } diff --git a/test/features/info/info.js b/test/features/info/info.js index 38aeb8e..02767dd 100644 --- a/test/features/info/info.js +++ b/test/features/info/info.js @@ -1,3 +1,5 @@ +/* global describe, it, before, after */ + 'use strict'; @@ -12,12 +14,12 @@ describe('service information', function() { - this.timeout(20000); + this.timeout(20000); // eslint-disable-line no-invalid-this before(() => { return server.start(); }); // common URI prefix for info tests - const infoUri = server.config.uri + '_info/'; + const infoUri = `${server.config.uri}_info/`; // common function used for generating requests // and checking their return values diff --git a/test/utils/assert.js b/test/utils/assert.js index d26b336..390348c 100644 --- a/test/utils/assert.js +++ b/test/utils/assert.js @@ -1,7 +1,26 @@ +/* eslint-disable no-console */ + 'use strict'; -var assert = require('assert'); +const assert = require('assert'); + + +function deepEqual(result, expected, message) { + + try { + if (typeof expected === 'string') { + assert.ok(result === expected || (new RegExp(expected).test(result))); + } else { + assert.deepEqual(result, expected, message); + } + } catch (e) { + console.log(`Expected:\n${JSON.stringify(expected, null, 2)}`); + console.log(`Result:\n${JSON.stringify(result, null, 2)}`); + throw e; + } + +} /** @@ -10,7 +29,7 @@ function status(res, expected) { deepEqual(res.status, expected, - 'Expected status to be ' + expected + ', but was ' + res.status); + `Expected status to be ${expected}, but was ${res.status}`); } @@ -20,9 +39,9 @@ */ function contentType(res, expected) { - var actual = res.headers['content-type']; + const actual = res.headers['content-type']; deepEqual(actual, expected, - 'Expected content-type to be ' + expected + ', but was ' + actual); + `Expected content-type to be ${expected}, but was ${actual}`); } @@ -43,30 +62,13 @@ } -function deepEqual(result, expected, message) { - - try { - if (typeof expected === 'string') { - assert.ok(result === expected || (new RegExp(expected).test(result))); - } else { - assert.deepEqual(result, expected, message); - } - } catch (e) { - console.log('Expected:\n' + JSON.stringify(expected, null, 2)); - console.log('Result:\n' + JSON.stringify(result, null, 2)); - throw e; - } - -} - - function notDeepEqual(result, expected, message) { try { assert.notDeepEqual(result, expected, message); } catch (e) { - console.log('Not expected:\n' + JSON.stringify(expected, null, 2)); - console.log('Result:\n' + JSON.stringify(result, null, 2)); + console.log(`Not expected:\n${JSON.stringify(expected, null, 2)}`); + console.log(`Result:\n${JSON.stringify(result, null, 2)}`); throw e; } @@ -75,7 +77,7 @@ function fails(promise, onRejected) { - var failed = false; + let failed = false; function trackFailure(e) { failed = true; diff --git a/test/utils/logStream.js b/test/utils/logStream.js index f8e292d..3872fb7 100644 --- a/test/utils/logStream.js +++ b/test/utils/logStream.js @@ -1,68 +1,72 @@ +/* eslint-disable no-console */ + 'use strict'; -var bunyan = require('bunyan'); +const bunyan = require('bunyan'); function logStream(logStdout) { - var log = []; - var parrot = bunyan.createLogger({ - name: 'test-logger', - level: 'warn' - }); + const log = []; + const parrot = bunyan.createLogger({ + name: 'test-logger', + level: 'warn' + }); - function write(chunk, encoding, callback) { - try { - var entry = JSON.parse(chunk); - var levelMatch = /^(\w+)/.exec(entry.levelPath); - if (logStdout && levelMatch) { - var level = levelMatch[1]; - if (parrot[level]) { - parrot[level](entry); + function write(chunk, encoding, callback) { + try { + const entry = JSON.parse(chunk); + const levelMatch = /^(\w+)/.exec(entry.levelPath); + if (logStdout && levelMatch) { + const level = levelMatch[1]; + if (parrot[level]) { + parrot[level](entry); + } } + } catch (e) { + console.error('something went wrong trying to parrot a log entry', e, chunk); } - } catch (e) { - console.error('something went wrong trying to parrot a log entry', e, chunk); + + log.push(chunk); } - log.push(chunk); - } - - // to implement the stream writer interface - function end(chunk, encoding, callback) { - } - - function get() { - return log; - } - - function slice() { - - var begin = log.length; - var end = null; - - function halt() { - if (end === null) { - end = log.length; - } + // to implement the stream writer interface + function end(chunk, encoding, callback) { } function get() { - return log.slice(begin, end); + return log; + } + + function slice() { + + const begin = log.length; + let end = null; + + function halt() { + if (end === null) { + end = log.length; + } + } + + function get() { + return log.slice(begin, end); + } + + /* Disable eslint object-shorthand until Node 4 support is dropped */ + /* eslint-disable object-shorthand */ + return { + halt: halt, + get: get + }; + } return { - halt: halt, - get: get + write: write, + end: end, + slice: slice, + get: get }; - - } - - return { - write: write, - end: end, - slice: slice, - get: get - }; } module.exports = logStream; diff --git a/test/utils/server.js b/test/utils/server.js index b3a2b75..8a67d3f 100644 --- a/test/utils/server.js +++ b/test/utils/server.js @@ -58,8 +58,8 @@ serviceReturns.forEach(servers => servers.forEach(server => server.shutdown())); - return runner.stop().then(function () { - module.exports.stop = function () { + return runner.stop().then(() => { + module.exports.stop = () => { return BBPromise.resolve(); }; }); -- To view, visit https://gerrit.wikimedia.org/r/395498 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic7f59ffb0c325a9b2a8035edc6ab1faeced266c4 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/mathoid Gerrit-Branch: master Gerrit-Owner: Mobrovac <mobro...@wikimedia.org> Gerrit-Reviewer: Mobrovac <mobro...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits