diff options
author | 2022-04-26 11:24:24 -0400 | |
---|---|---|
committer | 2022-04-26 11:24:24 -0400 | |
commit | 38e5e9e9825876cd0ae14a648b51bdf397e81169 (patch) | |
tree | 7e3432d7caa97984054cd634bbcf095eee0477b3 /packages/create-astro/test/utils.js | |
parent | 8dd16e38c1cd0c953c84d00130df8c902e778886 (diff) | |
download | astro-38e5e9e9825876cd0ae14a648b51bdf397e81169.tar.gz astro-38e5e9e9825876cd0ae14a648b51bdf397e81169.tar.zst astro-38e5e9e9825876cd0ae14a648b51bdf397e81169.zip |
Feat: `create astro` add install step (#3190)
* feat: add instlal step with pkg manager detection
* feat: add package emoji for style points
* feat: update next steps to match pkg manager
* refactor: extract some create-astro test utils
* refactor: extract promp msgs to utils
* chore: add install step tests
* chore: changeset
* fix: remove directory test skip
* fix: unset env variables after install step test
* deps: add execa to create-astro
* refactor: use execa for install step
* chore: remove old comment
* fix: rework install step test for node 14?
* chore: remove "politely stolen" footnote
* temp: show stdout dialog
* feat: remove debugging logs, add dryrun flag for testing
* chore: more stray logs
* fix: remove rmdir
Diffstat (limited to 'packages/create-astro/test/utils.js')
-rw-r--r-- | packages/create-astro/test/utils.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/create-astro/test/utils.js b/packages/create-astro/test/utils.js new file mode 100644 index 000000000..c5519c7bf --- /dev/null +++ b/packages/create-astro/test/utils.js @@ -0,0 +1,40 @@ +import { execa } from 'execa' +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; + +const __filename = fileURLToPath(import.meta.url); +export const testDir = dirname(__filename); +export const timeout = 5000; + +const createAstroError = new Error( + 'Timed out waiting for create-astro to respond with expected output.' +); + +export function promiseWithTimeout(testFn) { + return new Promise((resolve, reject) => { + const timeoutEvent = setTimeout(() => { + reject(createAstroError); + }, timeout); + function resolver() { + clearTimeout(timeoutEvent); + resolve(); + } + testFn(resolver); + }); +} + +export const PROMPT_MESSAGES = { + directory: 'Where would you like to create your app?', + template: 'Which app template would you like to use?', + // TODO: remove when framework selector is removed + frameworks: 'Which frameworks would you like to use?', + install: (pkgManager) => `Would you like us to run "${pkgManager} install?"`, +}; + +export function setup(args = []) { + const { stdout, stdin } = execa('../create-astro.mjs', args, { cwd: testDir }); + return { + stdin, + stdout, + }; +} |