summaryrefslogtreecommitdiff
path: root/packages/create-astro/test/utils.js
diff options
context:
space:
mode:
authorGravatar Nate Moore <natemoo-re@users.noreply.github.com> 2023-02-06 10:19:37 -0600
committerGravatar GitHub <noreply@github.com> 2023-02-06 10:19:37 -0600
commit8d2187d8b8587b2a3a0207d9ffa8667c43686436 (patch)
treeab7c3c1217a430ecf1b6036350d7143f235ad287 /packages/create-astro/test/utils.js
parent91dc0f401545bef49f19193029349fc01c811b1d (diff)
downloadastro-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.js67
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))
+ }
};
}