diff options
author | 2021-04-21 11:14:44 -0500 | |
---|---|---|
committer | 2021-04-21 11:14:44 -0500 | |
commit | 54409a0702e4fe41e44420db9c603124207ecb20 (patch) | |
tree | 2ad25e9e23887ab46edab48e832dfd3ae104f041 /test/astro-prettier.test.js | |
parent | 76932822b8fff54e56812b7fc90450904ad276ae (diff) | |
download | astro-54409a0702e4fe41e44420db9c603124207ecb20.tar.gz astro-54409a0702e4fe41e44420db9c603124207ecb20.tar.zst astro-54409a0702e4fe41e44420db9c603124207ecb20.zip |
Prettier support for `.astro` files (#106)
* docs: fix readme
* chore: scaffold prettier plugin
* chore(prettier): switch to cjs
* test(prettier): scaffold prettier tests
* test(prettier): add simple prettier tests
* feat(prettier): first pass
* refactor: expose parser as CJS export
* test(prettier): add long expression
* refactor(prettier): use Astro parser + built-in prettier doc for prettier plugin
* chore: remove parser from git
* chore: add prettier-plugin-astro `build` to workflow
* chore: update package-lock
* chore: do not build prettier-plugin-astro
* fix: update engines
* chore: remove NPM restriction
* chore: fix workflow paths
* chore: update build script
* test: fix prettier expr test
* chore: fix parser build on windows
* refactor: add parser tsconfig, extending base config
* chore: relax ban-ts-comment
* chore: fix lint issue
Co-authored-by: Nate Moore <nate@skypack.dev>
Diffstat (limited to 'test/astro-prettier.test.js')
-rw-r--r-- | test/astro-prettier.test.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/astro-prettier.test.js b/test/astro-prettier.test.js new file mode 100644 index 000000000..1dd1887f4 --- /dev/null +++ b/test/astro-prettier.test.js @@ -0,0 +1,44 @@ +import { suite } from 'uvu'; +import * as assert from 'uvu/assert'; +import { format } from './test-utils.js'; +import { setup } from './helpers.js'; + +const Prettier = suite('Prettier formatting'); + +setup(Prettier, './fixtures/astro-prettier'); + +/** + * Utility to get `[src, out]` files + * @param name {string} + * @param ctx {any} + */ +const getFiles = async (name, { readFile }) => { + const [src, out] = await Promise.all([readFile(`/in/${name}.astro`), readFile(`/out/${name}.astro`)]); + return [src, out]; +} + +Prettier('can format a basic Astro file', async (ctx) => { + const [src, out] = await getFiles('basic', ctx); + assert.not.equal(src, out); + + const formatted = format(src); + assert.equal(formatted, out); +}); + +Prettier('can format an Astro file with frontmatter', async (ctx) => { + const [src, out] = await getFiles('frontmatter', ctx); + assert.not.equal(src, out); + + const formatted = format(src); + assert.equal(formatted, out); +}); + +Prettier('can format an Astro file with embedded JSX expressions', async (ctx) => { + const [src, out] = await getFiles('embedded-expr', ctx); + assert.not.equal(src, out); + + const formatted = format(src); + assert.equal(formatted, out); +}); + +Prettier.run(); |