From befaecbf7c0df8a3398e69fc40fe7251342c9829 Mon Sep 17 00:00:00 2001 From: John Knox Date: Mon, 3 Jun 2019 10:40:59 -0700 Subject: [PATCH] Cleanup android client so tests exit without forcing them Summary: We've got some exit troubles, meaning we have to use process.exit() to stop the headless process. This isn't good because the output isn't necessarily flushed when the process forcefully exits this way. The tests can check for this, so I've removed the forceExit flag, and fixed the case stopping them from cleanly exiting - the android adb client. Reviewed By: passy Differential Revision: D15602919 fbshipit-source-id: b4a9dbabf5d3c874bda6bf938e4acb7b5b7e901b --- package.json | 2 +- src/__tests__/server.device.js | 7 +++++-- src/dispatcher/androidDevice.js | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 77879c6d3..4abb5c407 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "test": "jest --testPathPattern=node\\.js$ --no-cache", "test:debug": "node --inspect node_modules/.bin/jest --runInBand", "test-electron": "jest --testPathPattern=electron\\.js$ --testEnvironment=@jest-runner/electron/environment --runner=@jest-runner/electron --no-cache", - "test-with-device": "USE_ELECTRON_STUBS=1 jest --testPathPattern=device\\.js$ --detectOpenHandles --forceExit --no-cache", + "test-with-device": "USE_ELECTRON_STUBS=1 jest --testPathPattern=device\\.js$ --detectOpenHandles --no-cache", "lint": "eslint . && flow check" }, "optionalDependencies": { diff --git a/src/__tests__/server.device.js b/src/__tests__/server.device.js index 333ff93a8..f3aded8ff 100644 --- a/src/__tests__/server.device.js +++ b/src/__tests__/server.device.js @@ -17,6 +17,7 @@ import iosDevice from '../dispatcher/iOSDevice'; import type Client from '../Client'; let server; +let androidCleanup; const store = createStore(reducers); beforeAll(() => { @@ -28,7 +29,7 @@ beforeAll(() => { const logger = initLogger(store); - androidDevice(store, logger); + androidCleanup = androidDevice(store, logger); iosDevice(store, logger); server = new Server(logger, store); @@ -65,5 +66,7 @@ test('Device can connect successfully', done => { }, 20000); afterAll(() => { - return server.close(); + return androidCleanup().then(() => { + server.close(); + }); }); diff --git a/src/dispatcher/androidDevice.js b/src/dispatcher/androidDevice.js index 1604c79af..434e0b6e9 100644 --- a/src/dispatcher/androidDevice.js +++ b/src/dispatcher/androidDevice.js @@ -185,4 +185,10 @@ export default (store: Store, logger: Logger) => { } watchAndroidDevices(); + + // cleanup method + return () => + getAdbClient().then(client => { + client.kill(); + }); };