From c1395f7ec1caed1f2816a72f19a61d8850c0fa08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Fri, 18 Jan 2019 01:58:05 +0100 Subject: [PATCH] Fix leakage of subprocesses @mattwr18 and I could not find any other way how to prevent leftover processes than using a complex list of npm scripts. Watch: http://youtu.be/byovuFwNXiw and see how we despearately try to fix this stupid problem. --- package.json | 14 +++++----- scripts/test.sh | 1 + src/jest/globalSetup.js | 1 - src/jest/globalTeardown.js | 1 - src/jest/hooks.js | 45 -------------------------------- src/middleware/userMiddleware.js | 2 +- 6 files changed, 10 insertions(+), 54 deletions(-) create mode 100755 scripts/test.sh delete mode 100644 src/jest/globalSetup.js delete mode 100644 src/jest/globalTeardown.js delete mode 100644 src/jest/hooks.js diff --git a/package.json b/package.json index 2824aab37..58d25ebe4 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,16 @@ "scripts": { "build": "babel src/ -d dist/ --copy-files", "start": "node dist/", - "dev": "nodemon --exec babel-node src/index.js", + "dev": "nodemon --exec babel-node src/", "dev:debug": "nodemon --exec babel-node --inspect=0.0.0.0:9229 src/index.js", "lint": "eslint src --config .eslintrc.js", "test": "nyc --reporter=text-lcov yarn run test:jest", - "test:jest": "jest --forceExit --detectOpenHandles --runInBand", - "test:jest:debug": "node --inspect-brk ./node_modules/.bin/jest -i --forceExit --detectOpenHandles --runInBand", + "test:before:server": "cross-env GRAPHQL_URI=http://localhost:4123 GRAPHQL_PORT=4123 babel-node src/ 2> /dev/null", + "test:before:seeder": "cross-env GRAPHQL_URI=http://localhost:4001 GRAPHQL_PORT=4001 PERMISSIONS=disabled babel-node src/ 2> /dev/null", + "test:jest:cmd": "wait-on tcp:4001 tcp:4123 && jest --forceExit --detectOpenHandles --runInBand", + "test:jest:cmd:debug": "wait-on tcp:4001 tcp:4123 && node --inspect-brk ./node_modules/.bin/jest -i --forceExit --detectOpenHandles --runInBand", + "test:jest": "run-p --race test:before:* 'test:jest:cmd {@}' --", + "test:jest:debug": "run-p --race test:before:* 'test:jest:cmd:debug {@}' --", "test:coverage": "nyc report --reporter=text-lcov > coverage.lcov", "db:script:seed": "wait-on tcp:4001 && babel-node src/seed/seed-db.js", "db:script:reset": "wait-on tcp:4001 && babel-node src/seed/reset-db.js", @@ -27,9 +31,7 @@ "verbose": true, "testMatch": [ "**/src/**/?(*.)+(spec|test).js?(x)" - ], - "globalSetup": "/src/jest/globalSetup", - "globalTeardown": "/src/jest/globalTeardown" + ] }, "dependencies": { "apollo-cache-inmemory": "~1.3.12", diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100755 index 000000000..f1f641af1 --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1 @@ +#!/usr/bin/env bash diff --git a/src/jest/globalSetup.js b/src/jest/globalSetup.js deleted file mode 100644 index e2bfa24a5..000000000 --- a/src/jest/globalSetup.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./hooks').setup diff --git a/src/jest/globalTeardown.js b/src/jest/globalTeardown.js deleted file mode 100644 index 944503234..000000000 --- a/src/jest/globalTeardown.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./hooks').teardown diff --git a/src/jest/hooks.js b/src/jest/hooks.js deleted file mode 100644 index 77fa159f2..000000000 --- a/src/jest/hooks.js +++ /dev/null @@ -1,45 +0,0 @@ -const { spawn } = require('child_process') -const waitOn = require('wait-on') - -let server -let seeder - -const setup = async function () { - server = spawn('babel-node', ['src/index'], { - env: Object.assign({}, process.env, { - GRAPHQL_URI: 'http://localhost:4123', - GRAPHQL_PORT: '4123' - }) - }) - - seeder = spawn('babel-node', ['src/index'], { - env: Object.assign({}, process.env, { - GRAPHQL_URI: 'http://localhost:4001', - GRAPHQL_PORT: '4001', - PERMISSIONS: 'disabled' - }) - }) - - server.stdout.on('data', data => console.log(`server stdout:\n${data}`)) - server.stderr.on('data', data => console.log(`server stderr:\n${data}`)) - seeder.stdout.on('data', data => console.log(`seeder stdout:\n${data}`)) - seeder.stderr.on('data', data => console.log(`seeder stderr:\n${data}`)) - - try { - await waitOn({ - resources: ['http://localhost:4123', 'http://localhost:4001'] - }) - } catch (err) { - console.log(err) - } -} - -const teardown = async function () { - server.kill() - seeder.kill() -} - -module.exports = { - setup, - teardown -} diff --git a/src/middleware/userMiddleware.js b/src/middleware/userMiddleware.js index 161309164..d4648413a 100644 --- a/src/middleware/userMiddleware.js +++ b/src/middleware/userMiddleware.js @@ -28,7 +28,7 @@ export default { }) removeIdFromResult = true } - } catch(err) {} + } catch (err) {} const result = await resolve(root, args, context, info) if (!isIdPresent && removeIdFromResult) { // remove id if the user did not ask for it