From f5ecbee192ef24f52f78ffad0ba7bce686bd45c7 Mon Sep 17 00:00:00 2001 From: Drew Powers <1369770+drwpow@users.noreply.github.com> Date: Mon, 24 May 2021 16:18:56 -0600 Subject: [PATCH] Add test for npm init astro (#238) * Add test for npm init astro * Use Lerna to run test --- package.json | 4 +- packages/create-astro/package.json | 5 ++- packages/create-astro/test/.gitignore | 1 + .../create-astro/test/create-astro.test.js | 39 +++++++++++++++++++ 4 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 packages/create-astro/test/.gitignore create mode 100644 packages/create-astro/test/create-astro.test.js diff --git a/package.json b/package.json index 9a29a7a13..9ef672ef3 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,7 @@ "dev:vscode": "lerna run dev --scope astro-languageserver --scope astro-vscode --scope astro-parser --parallel --stream", "format": "prettier -w \"**/*.{js,jsx,ts,tsx,md,json}\"", "lint": "eslint \"packages/**/*.ts\"", - "test": "yarn test:core && yarn test:prettier", - "test:core": "cd packages/astro && npm test", - "test:prettier": "cd tools/prettier-plugin-astro && npm test" + "test": "lerna run test --scope astro --scope prettier-plugin-astro --scope create-astro --stream" }, "workspaces": [ "packages/*", diff --git a/packages/create-astro/package.json b/packages/create-astro/package.json index a7e61871d..25b3c4899 100644 --- a/packages/create-astro/package.json +++ b/packages/create-astro/package.json @@ -9,8 +9,9 @@ "create-astro": "./create-astro.js" }, "scripts": { - "build": "astro-scripts build src/index.tsx", - "postbuild": "astro-scripts copy \"src/templates/**\" --tgz" + "build": "ENV=production astro-scripts build src/index.tsx", + "postbuild": "astro-scripts copy \"src/templates/**\" --tgz", + "test": "uvu" }, "files": [ "dist", diff --git a/packages/create-astro/test/.gitignore b/packages/create-astro/test/.gitignore new file mode 100644 index 000000000..116caa127 --- /dev/null +++ b/packages/create-astro/test/.gitignore @@ -0,0 +1 @@ +fixtures diff --git a/packages/create-astro/test/create-astro.test.js b/packages/create-astro/test/create-astro.test.js new file mode 100644 index 000000000..5fb556ef3 --- /dev/null +++ b/packages/create-astro/test/create-astro.test.js @@ -0,0 +1,39 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { suite } from 'uvu'; +import execa from 'execa'; +import del from 'del'; +import * as assert from 'uvu/assert'; + +const CreateAstro = suite('npm init astro'); + +const cwd = fileURLToPath(new URL('./fixtures/', import.meta.url)); + +const templates = ['blank', 'starter']; + +CreateAstro.before(async () => { + await del(cwd); + await fs.promises.mkdir(cwd); +}); + +for (const template of templates) { + CreateAstro(template, async () => { + await execa('../../create-astro.js', [template, '--template', template], { cwd }); + + const DOES_HAVE = ['.gitignore', 'package.json', 'public', 'src']; + const DOES_NOT_HAVE = ['_gitignore', 'meta.json']; + + // test: template contains essential files & folders + for (const file of DOES_HAVE) { + assert.ok(fs.existsSync(path.join(cwd, template, file)), `has ${file}`); + } + + // test: template DOES NOT contain files supposed to be stripped away + for (const file of DOES_NOT_HAVE) { + assert.not.ok(fs.existsSync(path.join(cwd, template, `does not have ${file}`))); + } + }); +} + +CreateAstro.run();