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