54409a0702
* 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>
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
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();
|