Files
oxc-project__oxc/apps/oxfmt/test/api/js-in-markdown.test.ts
leaysgur dc335d1071 fix(oxfmt): Temporarily disable the override for js-in-xxx (not ready yet) (#19043)
Unfortunately...

Once override a built-in for `markdown`, it applies to all embedded formatting within that file!

This means that overrides occur with js-in-**vue**-in-markdown, and since we haven't addressed this yet, the code breaks.

````md
# MD

```vue
<!-- VUE -->
<script>
  // JS
</script>

<template>
  <li v-for="function _(IT_BREAKS_HERE 💥) {} in items"></li>
</template>
````
2026-02-09 08:59:38 +00:00

93 lines
2.6 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { format } from "../../dist/index.js";
// oxlint-disable jest/no-disabled-tests
describe.skip("Format js-in-markdown with prettier-plugin-oxfmt", () => {
it("should format .md w/o duplicating TS lines", async () => {
// https://prettier.io/playground/#N4Igxg9gdgLgprEAuEADdMDOAdKBDAdzwEsYACABQCcIBbYzOAOirkwgBsA3OACjLLYQXPBwCucIQICUAblyES5YLgEwAFgl7SyKqAIC+AGlwH5UAPQWyAFXUMykWrQTk8UACZkARnA4QCMgJiDg4fODIPMQAHDmIwPHgPBSJSMgBzOBhqOgY+aVx0VBAjEAhomGJoTGRQPCoaAgp6hBqUUSIATxrS7yo8MABrLIBlPBcAGWIoOGQAM1FGUohvACs4MBgAdX7o5BBo1kYqHhKQPoHhmBHogen05BgqCVLGekfnuFK4AA9ouCoxBcsFEAHl-v0YBAqBQIJhSFUoPsEB4zr8IUDXKIbAD8IC2PNFl8QPCoOkOHAAIpiCDwQkcJYgVaYH4je4U6m02ZIBYM4kARxp8By0TaIDwmAAtDM4B5ZWcniQ4mSAMJ0Wh4faiDhnUnkuAAQRgT2I3jEwoBUxm9MZ6hgtA4W3s8EwtzAcBGrQRXFInX2YEwPWEEgAkp5XCMwICKgbPCMYJ0KTbiYc4XAdng9ihDmwAadvp5QXMrdyQBw5mdpsdsv10hrk6VblRjvsNVRBh4AkjG4DYFtiB4NMgABwABlKrEFxFY1Dwdc1PKJpRgeG8-cH6mQACZSmJGDZV21eYy4LRfB45R4Ju50mI53AAGLQjXG+5a80QEAGAxAA
const input = `
# Markdown
In Prettier, using \`typescript\` parser inside \`markdown\` parser duplicates lines after \`await { then }\`.
\`\`\`ts
await Promise.resolve( "value" );
await {
then() {
},
};
// This comment and below will be duplicated
await getPromise()
\`\`\`
But we are not!
`;
const result = await format("a.md", input);
expect(result.code).toMatchSnapshot();
expect(result.errors).toStrictEqual([]);
});
it("should not add ; for single JSX element in code block", async () => {
const input = `
# Markdown
\`\`\`jsx
<div>Hello, JSX</div>
\`\`\`
`;
const result = await format("a.md", input);
expect(result.code).not.toContain(";");
expect(result.errors).toStrictEqual([]);
const result2 = await format("a.md", input, { semi: false });
expect(result2.code).not.toContain(";");
expect(result2.errors).toStrictEqual([]);
});
it("should be disabled by prettier-ignore", async () => {
const input = `
# Markdown
## Disabled
<!-- prettier-ignore -->
\`\`\`ts
const x=1;
const y=2;
console.log(x+y);
\`\`\`
## Enabled
\`\`\`jsx
const X = ()=>
<><div>JSX</div><hr/></>
\`\`\`
`;
const result = await format("a.md", input);
expect(result.code).toMatchSnapshot();
expect(result.errors).toStrictEqual([]);
});
it("should be disabled by `embeddedLanguageFormatting: 'off'`", async () => {
const input = `
\`\`\`js
const x=1;
const y=2;
console.log(x+y);
\`\`\`
`;
const result = await format("a.md", input, {
embeddedLanguageFormatting: "off",
});
expect(result.code).toMatchSnapshot();
expect(result.errors).toStrictEqual([]);
});
});