diff options
Diffstat (limited to 'packages/create-astro/test/directory-step.test.js')
-rw-r--r-- | packages/create-astro/test/directory-step.test.js | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/packages/create-astro/test/directory-step.test.js b/packages/create-astro/test/directory-step.test.js index 0031f97fd..26737ca94 100644 --- a/packages/create-astro/test/directory-step.test.js +++ b/packages/create-astro/test/directory-step.test.js @@ -1,6 +1,8 @@ import path from 'path'; import { promises, existsSync } from 'fs'; -import { PROMPT_MESSAGES, testDir, setup, promiseWithTimeout, timeout } from './utils.js'; +import { + PROMPT_MESSAGES, testDir, setup, promiseWithTimeout, timeout +} from './utils.js'; const inputs = { nonEmptyDir: './fixtures/select-directory/nonempty-dir', @@ -12,9 +14,10 @@ const inputs = { describe('[create-astro] select directory', function () { this.timeout(timeout); it('should prompt for directory when none is provided', function () { - return promiseWithTimeout((resolve) => { + return promiseWithTimeout((resolve, onStdout) => { const { stdout } = setup(); stdout.on('data', (chunk) => { + onStdout(chunk); if (chunk.includes(PROMPT_MESSAGES.directory)) { resolve(); } @@ -22,9 +25,10 @@ describe('[create-astro] select directory', function () { }); }); it('should NOT proceed on a non-empty directory', function () { - return promiseWithTimeout((resolve) => { + return promiseWithTimeout((resolve, onStdout) => { const { stdout } = setup([inputs.nonEmptyDir]); stdout.on('data', (chunk) => { + onStdout(chunk); if (chunk.includes(PROMPT_MESSAGES.directory)) { resolve(); } @@ -46,9 +50,10 @@ describe('[create-astro] select directory', function () { if (!existsSync(resolvedEmptyDirPath)) { await promises.mkdir(resolvedEmptyDirPath); } - return promiseWithTimeout((resolve) => { + return promiseWithTimeout((resolve, onStdout) => { const { stdout } = setup([inputs.emptyDir]); stdout.on('data', (chunk) => { + onStdout(chunk); if (chunk.includes(PROMPT_MESSAGES.template)) { resolve(); } @@ -56,9 +61,10 @@ describe('[create-astro] select directory', function () { }); }); it('should proceed when directory does not exist', function () { - return promiseWithTimeout((resolve) => { + return promiseWithTimeout((resolve, onStdout) => { const { stdout } = setup([inputs.nonexistentDir]); stdout.on('data', (chunk) => { + onStdout(chunk); if (chunk.includes(PROMPT_MESSAGES.template)) { resolve(); } @@ -66,14 +72,17 @@ describe('[create-astro] select directory', function () { }); }); it('should error on bad directory selection in prompt', function () { - return promiseWithTimeout((resolve) => { + return promiseWithTimeout((resolve, onStdout) => { + let wrote = false; const { stdout, stdin } = setup(); stdout.on('data', (chunk) => { + onStdout(chunk); if (chunk.includes('is not empty!')) { resolve(); } - if (chunk.includes(PROMPT_MESSAGES.directory)) { + if (!wrote && chunk.includes(PROMPT_MESSAGES.directory)) { stdin.write(`${inputs.nonEmptyDir}\x0D`); + wrote = true; } }); }); |