13d6e487dSEvan Bacon/* eslint-env jest */
23d6e487dSEvan Baconimport fs from 'fs/promises';
33d6e487dSEvan Bacon
43d6e487dSEvan Baconimport { execute, getLoadedModulesAsync, projectRoot } from './utils';
53d6e487dSEvan Bacon
63d6e487dSEvan Baconconst originalForceColor = process.env.FORCE_COLOR;
73d6e487dSEvan Baconconst originalCI = process.env.CI;
83d6e487dSEvan Bacon
93d6e487dSEvan BaconbeforeAll(async () => {
103d6e487dSEvan Bacon  await fs.mkdir(projectRoot, { recursive: true });
113d6e487dSEvan Bacon  process.env.FORCE_COLOR = '0';
123d6e487dSEvan Bacon  process.env.CI = '1';
133d6e487dSEvan Bacon});
143d6e487dSEvan Bacon
153d6e487dSEvan BaconafterAll(() => {
163d6e487dSEvan Bacon  process.env.FORCE_COLOR = originalForceColor;
173d6e487dSEvan Bacon  process.env.CI = originalCI;
183d6e487dSEvan Bacon});
193d6e487dSEvan Bacon
203d6e487dSEvan Baconit('loads expected modules by default', async () => {
213d6e487dSEvan Bacon  const modules = await getLoadedModulesAsync(
223d6e487dSEvan Bacon    `require('../../build/src/run/android').expoRunAndroid`
233d6e487dSEvan Bacon  );
243d6e487dSEvan Bacon  expect(modules).toStrictEqual([
25*4067174dSWill Schurman    '../node_modules/ansi-styles/index.js',
263d6e487dSEvan Bacon    '../node_modules/arg/index.js',
273d6e487dSEvan Bacon    '../node_modules/chalk/source/index.js',
283d6e487dSEvan Bacon    '../node_modules/chalk/source/util.js',
293d6e487dSEvan Bacon    '../node_modules/has-flag/index.js',
303d6e487dSEvan Bacon    '../node_modules/supports-color/index.js',
313d6e487dSEvan Bacon    '@expo/cli/build/src/log.js',
323d6e487dSEvan Bacon    '@expo/cli/build/src/run/android/index.js',
333d6e487dSEvan Bacon    '@expo/cli/build/src/utils/args.js',
343d6e487dSEvan Bacon    '@expo/cli/build/src/utils/errors.js',
353d6e487dSEvan Bacon  ]);
363d6e487dSEvan Bacon});
373d6e487dSEvan Bacon
383d6e487dSEvan Baconit('runs `npx expo run:android --help`', async () => {
393d6e487dSEvan Bacon  const results = await execute('run:android', '--help');
403d6e487dSEvan Bacon  expect(results.stdout).toMatchInlineSnapshot(`
413d6e487dSEvan Bacon    "
423d6e487dSEvan Bacon      Description
433d6e487dSEvan Bacon        Run the native Android app locally
443d6e487dSEvan Bacon
453d6e487dSEvan Bacon      Usage
463d6e487dSEvan Bacon        $ npx expo run:android <dir>
473d6e487dSEvan Bacon
483d6e487dSEvan Bacon      Options
493d6e487dSEvan Bacon        --no-build-cache       Clear the native build cache
503d6e487dSEvan Bacon        --no-install           Skip installing dependencies
513d6e487dSEvan Bacon        --no-bundler           Skip starting the bundler
523d6e487dSEvan Bacon        --variant <name>       Build variant. Default: debug
533d6e487dSEvan Bacon        -d, --device [device]  Device name to run the app on
543d6e487dSEvan Bacon        -p, --port <port>      Port to start the dev server on. Default: 8081
553d6e487dSEvan Bacon        -h, --help             Output usage information
563d6e487dSEvan Bacon    "
573d6e487dSEvan Bacon  `);
583d6e487dSEvan Bacon});
59