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
This commit is contained in:
John Knox
2019-06-03 10:40:59 -07:00
committed by Facebook Github Bot
parent 74ca921861
commit befaecbf7c
3 changed files with 12 additions and 3 deletions

View File

@@ -137,7 +137,7 @@
"test": "jest --testPathPattern=node\\.js$ --no-cache", "test": "jest --testPathPattern=node\\.js$ --no-cache",
"test:debug": "node --inspect node_modules/.bin/jest --runInBand", "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-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" "lint": "eslint . && flow check"
}, },
"optionalDependencies": { "optionalDependencies": {

View File

@@ -17,6 +17,7 @@ import iosDevice from '../dispatcher/iOSDevice';
import type Client from '../Client'; import type Client from '../Client';
let server; let server;
let androidCleanup;
const store = createStore(reducers); const store = createStore(reducers);
beforeAll(() => { beforeAll(() => {
@@ -28,7 +29,7 @@ beforeAll(() => {
const logger = initLogger(store); const logger = initLogger(store);
androidDevice(store, logger); androidCleanup = androidDevice(store, logger);
iosDevice(store, logger); iosDevice(store, logger);
server = new Server(logger, store); server = new Server(logger, store);
@@ -65,5 +66,7 @@ test('Device can connect successfully', done => {
}, 20000); }, 20000);
afterAll(() => { afterAll(() => {
return server.close(); return androidCleanup().then(() => {
server.close();
});
}); });

View File

@@ -185,4 +185,10 @@ export default (store: Store, logger: Logger) => {
} }
watchAndroidDevices(); watchAndroidDevices();
// cleanup method
return () =>
getAdbClient().then(client => {
client.kill();
});
}; };