1c4ef02aeSEvan Bacon/* eslint-env jest */
2c4ef02aeSEvan Baconimport fs from 'fs/promises';
3c4ef02aeSEvan Bacon
4c4ef02aeSEvan Baconimport { execute, getLoadedModulesAsync, projectRoot } from './utils';
5c4ef02aeSEvan Bacon
6c4ef02aeSEvan Baconconst originalForceColor = process.env.FORCE_COLOR;
7c4ef02aeSEvan Baconconst originalCI = process.env.CI;
8c4ef02aeSEvan Bacon
9c4ef02aeSEvan BaconbeforeAll(async () => {
10c4ef02aeSEvan Bacon  await fs.mkdir(projectRoot, { recursive: true });
11c4ef02aeSEvan Bacon  process.env.FORCE_COLOR = '0';
12c4ef02aeSEvan Bacon  process.env.CI = '1';
13c4ef02aeSEvan Bacon});
14c4ef02aeSEvan Bacon
15c4ef02aeSEvan BaconafterAll(() => {
16c4ef02aeSEvan Bacon  process.env.FORCE_COLOR = originalForceColor;
17c4ef02aeSEvan Bacon  process.env.CI = originalCI;
18c4ef02aeSEvan Bacon});
19c4ef02aeSEvan Bacon
20c4ef02aeSEvan Baconit('loads expected modules by default', async () => {
21c4ef02aeSEvan Bacon  const modules = await getLoadedModulesAsync(`require('../../build/src/run/ios').expoRunIos`);
22c4ef02aeSEvan Bacon  expect(modules).toStrictEqual([
23*4067174dSWill Schurman    '../node_modules/ansi-styles/index.js',
24c4ef02aeSEvan Bacon    '../node_modules/arg/index.js',
25c4ef02aeSEvan Bacon    '../node_modules/chalk/source/index.js',
26c4ef02aeSEvan Bacon    '../node_modules/chalk/source/util.js',
27c4ef02aeSEvan Bacon    '../node_modules/has-flag/index.js',
28c4ef02aeSEvan Bacon    '../node_modules/supports-color/index.js',
29c4ef02aeSEvan Bacon    '@expo/cli/build/src/log.js',
30c4ef02aeSEvan Bacon    '@expo/cli/build/src/run/ios/index.js',
31c4ef02aeSEvan Bacon    '@expo/cli/build/src/utils/args.js',
32c4ef02aeSEvan Bacon    '@expo/cli/build/src/utils/errors.js',
33c4ef02aeSEvan Bacon  ]);
34c4ef02aeSEvan Bacon});
35c4ef02aeSEvan Bacon
36c4ef02aeSEvan Baconit('runs `npx expo run:ios --help`', async () => {
37c4ef02aeSEvan Bacon  const results = await execute('run:ios', '--help');
38c4ef02aeSEvan Bacon  expect(results.stdout).toMatchInlineSnapshot(`
39c4ef02aeSEvan Bacon    "
40c4ef02aeSEvan Bacon      Info
41c4ef02aeSEvan Bacon        Run the iOS app binary locally
42c4ef02aeSEvan Bacon
43c4ef02aeSEvan Bacon      Usage
44c4ef02aeSEvan Bacon        $ npx expo run:ios
45c4ef02aeSEvan Bacon
46c4ef02aeSEvan Bacon      Options
47c4ef02aeSEvan Bacon        --no-build-cache                 Clear the native derived data before building
48c4ef02aeSEvan Bacon        --no-install                     Skip installing dependencies
49c4ef02aeSEvan Bacon        --no-bundler                     Skip starting the Metro bundler
50c4ef02aeSEvan Bacon        --scheme [scheme]                Scheme to build
51c4ef02aeSEvan Bacon        --configuration <configuration>  Xcode configuration to use. Debug or Release. Default: Debug
52c4ef02aeSEvan Bacon        -d, --device [device]            Device name or UDID to build the app on
53c4ef02aeSEvan Bacon        -p, --port <port>                Port to start the Metro bundler on. Default: 8081
54c4ef02aeSEvan Bacon        -h, --help                       Usage info
55c4ef02aeSEvan Bacon
56c4ef02aeSEvan Bacon      Build for production (unsigned) with the Release configuration:
57c4ef02aeSEvan Bacon        $ npx expo run:ios --configuration Release
58c4ef02aeSEvan Bacon    "
59c4ef02aeSEvan Bacon  `);
60c4ef02aeSEvan Bacon});
61