Add test of the server entrypoint (#2613)

The server's entrypoint is an important bit of code which is not covered by our tests. This adds a test which should cover it.
This commit is contained in:
Paul Melnikow
2019-01-01 22:58:54 -05:00
committed by GitHub
parent f297f68911
commit 7150b37831
3 changed files with 36 additions and 3 deletions

29
entrypoint.spec.js Normal file
View File

@@ -0,0 +1,29 @@
'use strict'
const { expect } = require('chai')
const fetch = require('node-fetch')
const isSvg = require('is-svg')
const serverConfig = require('./lib/server-config')
let server
before(function() {
this.timeout('5s')
serverConfig.bind = {
port: 1111,
address: 'localhost',
}
server = require('./server')
})
after('shut down the server', async function() {
await server.stop()
})
it('should render a badge', async function() {
const res = await fetch('http://localhost:1111/badge/fruit-apple-green.svg')
expect(res.ok).to.be.true
expect(await res.text())
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})

View File

@@ -61,11 +61,12 @@
"coverage:test:server": "nyc npm run test:server",
"coverage:test:frontend": "nyc --nycrc-path .nycrc-frontend.json npm run test:frontend",
"coverage:test:package": "nyc npm run test:package",
"coverage:test:entrypoint": "nyc npm run test:entrypoint",
"coverage:test:integration": "nyc npm run test:integration",
"coverage:test:services": "nyc npm run test:services",
"coverage:clean": "rimraf .nyc_output coverage",
"precoverage:test": "run-s --silent coverage:clean defs features",
"coverage:test": "run-s --silent --continue-on-error coverage:test:server coverage:test:package coverage:test:frontend coverage:test:integration",
"coverage:test": "run-s --silent --continue-on-error coverage:test:server coverage:test:package coverage:test:entrypoint coverage:test:frontend coverage:test:integration",
"coverage:report:generate": "nyc report",
"coverage:report:open": "opn coverage/lcov-report/index.html",
"coverage:report": "run-s --silent coverage:report:generate coverage:report:open",
@@ -79,6 +80,7 @@
"test:frontend": "cross-env BABEL_ENV=test mocha --opts mocha.opts --require @babel/polyfill --require @babel/register --require mocha-yaml-loader \"frontend/**/*.spec.js\"",
"test:server": "cross-env HANDLE_INTERNAL_ERRORS=false mocha --opts mocha.opts \"lib/**/*.spec.js\" \"services/**/*.spec.js\"",
"test:package": "mocha --opts mocha.opts \"gh-badges/**/*.spec.js\"",
"test:entrypoint": "mocha --opts mocha.opts entrypoint.spec.js",
"test:integration": "mocha --opts mocha.opts \"lib/**/*.integration.js\" \"services/**/*.integration.js\"",
"test:services": "cross-env HANDLE_INTERNAL_ERRORS=false mocha --opts mocha.opts --delay lib/service-test-runner/cli.js",
"test:services:trace": "cross-env TRACE_SERVICES=true run-s --silent test:services -- $*",
@@ -86,7 +88,7 @@
"test:services:pr:run": "cross-env HANDLE_INTERNAL_ERRORS=false mocha --opts mocha.opts --delay lib/service-test-runner/cli.js --stdin < pull-request-services.log",
"test:services:pr": "run-s --silent test:services:pr:prepare test:services:pr:run",
"pretest": "run-s --silent defs features",
"test": "run-s --silent --continue-on-error lint test:frontend test:package test:server prettier-check",
"test": "run-s --silent --continue-on-error lint test:frontend test:package test:server test:entrypoint prettier-check",
"depcheck": "check-node-version --node \">= 8.0\"",
"postinstall": "run-s --silent depcheck",
"prebuild": "run-s --silent depcheck",

View File

@@ -9,9 +9,11 @@ Raven.disableConsoleAlerts()
const Server = require('./lib/server')
const config = require('./lib/server-config')
const server = (module.exports = new Server(config))
;(async () => {
try {
await new Server(config).start()
await server.start()
} catch (e) {
console.error(e)
process.exit(1)