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