diff options
author | 2023-02-06 10:19:37 -0600 | |
---|---|---|
committer | 2023-02-06 10:19:37 -0600 | |
commit | 8d2187d8b8587b2a3a0207d9ffa8667c43686436 (patch) | |
tree | ab7c3c1217a430ecf1b6036350d7143f235ad287 /packages/create-astro/test/utils.js | |
parent | 91dc0f401545bef49f19193029349fc01c811b1d (diff) | |
download | astro-8d2187d8b8587b2a3a0207d9ffa8667c43686436.tar.gz astro-8d2187d8b8587b2a3a0207d9ffa8667c43686436.tar.zst astro-8d2187d8b8587b2a3a0207d9ffa8667c43686436.zip |
Refactor `create-astro` (#6082)
* refactor: new version of create-astro
* chore: update README
* fix(create-astro): update project name logic
* test(create-astro): fix test on windows
* test(create-astro): fix test on windows
* test(create-astro): remove unused import
* chore: remove log
* chore: increase test timeout
* fix: message when skipping
* fix: message for env.d.ts file
* fix: always hard exit
* fix: return from next-steps
* chore: add message
* refactor dependencies, bundle create-astro
* chore: disable create-astro typings
* chore: switch to arg
* chore: update message
* fix: split typescript into two steps, fix context test
* chore: update wording
* chore: update wording
* Update packages/create-astro/src/actions/dependencies.ts
Co-authored-by: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com>
* refactor: move tests back to mocha/chai
* chore: update cli-kit
* update test script
* chore: add comment about setStdout
* chore: update cli-kit
* Update packages/create-astro/src/messages.ts
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Update packages/create-astro/src/messages.ts
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* chore: update lockfile
* fix(create-astro): support scoped package names, improve project-name tests
* better git initialization
* update cli-kit
---------
Co-authored-by: Nate Moore <nate@astro.build>
Co-authored-by: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com>
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
Diffstat (limited to 'packages/create-astro/test/utils.js')
-rw-r--r-- | packages/create-astro/test/utils.js | 67 |
1 files changed, 22 insertions, 45 deletions
diff --git a/packages/create-astro/test/utils.js b/packages/create-astro/test/utils.js index 1f437fa01..c2cbb7245 100644 --- a/packages/create-astro/test/utils.js +++ b/packages/create-astro/test/utils.js @@ -1,52 +1,29 @@ -import { execa } from 'execa'; -import { dirname } from 'path'; +import { setStdout } from '../dist/index.js'; import stripAnsi from 'strip-ansi'; -import { fileURLToPath } from 'url'; -const __filename = fileURLToPath(import.meta.url); -export const testDir = dirname(__filename); -export const timeout = 25000; - -const timeoutError = function (details) { - let errorMsg = 'Timed out waiting for create-astro to respond with expected output.'; - if (details) { - errorMsg += '\nLast output: "' + details + '"'; - } - return new Error(errorMsg); -}; - -export function promiseWithTimeout(testFn) { - return new Promise((resolve, reject) => { - let lastStdout; - function onStdout(chunk) { - lastStdout = stripAnsi(chunk.toString()).trim() || lastStdout; - } - - const timeoutEvent = setTimeout(() => { - reject(timeoutError(lastStdout)); - }, timeout); - function resolver() { - clearTimeout(timeoutEvent); - resolve(); - } - - testFn(resolver, onStdout); +export function setup() { + const ctx = { messages: [] }; + before(() => { + setStdout(Object.assign({}, process.stdout, { + write(buf) { + ctx.messages.push(stripAnsi(String(buf)).trim()) + return true; + } + })) }); -} - -export const PROMPT_MESSAGES = { - directory: 'Where would you like to create your new project?', - template: 'How would you like to setup your new project?', - typescript: 'How would you like to setup TypeScript?', - typescriptSucceed: 'next', -}; + beforeEach(() => { + ctx.messages = []; + }) -export function setup(args = []) { - const { stdout, stdin } = execa('../create-astro.mjs', [...args, '--skip-houston', '--dry-run'], { - cwd: testDir, - }); return { - stdin, - stdout, + messages() { + return ctx.messages + }, + length() { + return ctx.messages.length + }, + hasMessage(content) { + return !!ctx.messages.find(msg => msg.includes(content)) + } }; } |