1/* eslint-env jest */ 2import { ExecaError } from 'execa'; 3import fs from 'fs/promises'; 4 5import { execute, getLoadedModulesAsync, projectRoot } from './utils'; 6 7const originalForceColor = process.env.FORCE_COLOR; 8const originalCI = process.env.CI; 9beforeAll(async () => { 10 await fs.mkdir(projectRoot, { recursive: true }); 11 process.env.FORCE_COLOR = '0'; 12 process.env.CI = '1'; 13}); 14afterAll(() => { 15 process.env.FORCE_COLOR = originalForceColor; 16 process.env.CI = originalCI; 17}); 18 19it('loads expected modules by default', async () => { 20 const modules = await getLoadedModulesAsync(`require('../../build/src/register');`); 21 expect(modules).toStrictEqual([ 22 '../node_modules/ansi-styles/index.js', 23 '../node_modules/arg/index.js', 24 '../node_modules/chalk/source/index.js', 25 '../node_modules/chalk/source/util.js', 26 '../node_modules/has-flag/index.js', 27 '../node_modules/supports-color/index.js', 28 '@expo/cli/build/src/log.js', 29 '@expo/cli/build/src/register/index.js', 30 '@expo/cli/build/src/utils/args.js', 31 '@expo/cli/build/src/utils/errors.js', 32 ]); 33}); 34 35it('runs `npx expo register --help`', async () => { 36 const results = await execute('register', '--help'); 37 expect(results.stdout).toMatchInlineSnapshot(` 38 " 39 Info 40 Sign up for a new Expo account 41 42 Usage 43 $ npx expo register 44 45 Options 46 -h, --help Usage info 47 " 48 `); 49}); 50 51it('throws on invalid project root', async () => { 52 expect.assertions(1); 53 try { 54 await execute('very---invalid', 'register'); 55 } catch (e) { 56 const error = e as ExecaError; 57 expect(error.stderr).toMatch(/Invalid project root: \//); 58 } 59}); 60 61it('runs `npx expo register` and throws due to CI', async () => { 62 expect.assertions(1); 63 try { 64 console.log(await execute('register')); 65 } catch (e) { 66 const error = e as ExecaError; 67 expect(error.stderr).toMatch(/Cannot register an account in CI/); 68 } 69}); 70