mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/53436 Changelog: [Internal] Adds a `flavor` option to `unstable_spawnDebuggerShellWithArgs` to select between two modes: 1. `flavor: 'dev'` (current behaviour) - launching a stock Electron binary (from the `electron` package) and pointing it directly at the shell code from the `src/electron` directory. 2. `flavor: 'prebuilt'` (new in this diff) - launching the prebuilt React Native DevTools binary included in the package (built continuously at Meta and committed as a DotSlash file in automated diffs e.g. D79836825). Note that this binary includes Electron *and* a frozen version of the shell code from `src/electron`. Going forward, `'dev'` will only be used when developing the package (e.g. in D78351934 we will move `electron` to `devDependencies`). The published version of the package is only intended to work with `flavor: 'prebuilt'`. Reviewed By: huntie Differential Revision: D78351931 fbshipit-source-id: d0e66b54c142dc2910619ba3d6d149d88324c872
49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow strict-local
|
|
* @format
|
|
* @oncall react_native
|
|
*/
|
|
|
|
const {unstable_spawnDebuggerShellWithArgs} = require('../../');
|
|
|
|
describe('debugger-shell Node package', () => {
|
|
test('can spawn in detached+prebuilt mode without crashing', async () => {
|
|
await expect(
|
|
unstable_spawnDebuggerShellWithArgs(['--version'], {
|
|
flavor: 'prebuilt',
|
|
mode: 'detached',
|
|
}),
|
|
).resolves.toBeUndefined();
|
|
});
|
|
|
|
// When running in the internal react-native-oss-js job, Electron isn't
|
|
// installed correctly (postinstall scripts don't run) but the internal
|
|
// `electron` workspace isn't available either. Detecting this dynamically
|
|
// weakens the test somewhat in environments where it *should* pass, but this
|
|
// is a dev-only feature anyway so this is fine.
|
|
if (isElectronInstalled()) {
|
|
test('can spawn in detached+dev mode without crashing', async () => {
|
|
await expect(
|
|
unstable_spawnDebuggerShellWithArgs(['--version'], {
|
|
flavor: 'dev',
|
|
mode: 'detached',
|
|
}),
|
|
).resolves.toBeUndefined();
|
|
});
|
|
}
|
|
});
|
|
|
|
function isElectronInstalled() {
|
|
try {
|
|
require('electron');
|
|
return true;
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|